2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Пакет для статистической обработки данных R
Сообщение08.10.2007, 09:42 


16/05/07
172
Москва
Кто-нибудь знает что-нибудь хорошее/плохое об этом?

http://www.r-project.org/
http://www.linux.org.ru/view-message.jsp?msgid=2182031

 Профиль  
                  
 
 
Сообщение08.10.2007, 09:53 


07/12/05
240
Питер -> Ulm -> Koeln -> Ulm -> Bretten -> далее везде
R - очень хороший статистический пакет, и бесплатный.
Внутренний скриптовый язык такой же как S-Plus'овский.
Графического интерфейса в R нет, но графика отличная (только уметь надо).
Полно дополнительных модулей, тоже, есс-но, бесплатных.

 Профиль  
                  
 
 
Сообщение09.10.2007, 10:18 


16/05/07
172
Москва
А есть ли модули для классификации и кластеризации? И есть ли в документации ссылки на то, где описаны алгоритмы?

 Профиль  
                  
 
 
Сообщение09.10.2007, 19:20 


10/11/06
64
Цитата:
А есть ли модули для классификации и кластеризации? И есть ли в документации ссылки на то, где описаны алгоритмы?


Есть и не один.
Например, class и cluster.

Обычно, в документации есть ссылка на источник (как правило, англ.)

 Профиль  
                  
 
 
Сообщение10.10.2007, 11:41 


16/05/07
172
Москва
Наткнулся на любопытную книгу: http://www.amazon.com/gp/product/custom ... merReviews

(отзыв на которую еще более интересен).

Возник вопрос: действительно ли в R так все хорошо с robust"ными методами оценок?

Добавлено спустя 37 секунд:

Где можно почитать о всех методах, реализованных в R?

 Профиль  
                  
 
 
Сообщение29.10.2007, 11:50 


16/05/07
172
Москва
Есть вот такая книга: http://www.amazon.com/R-Book-Michael-J- ... 01-1481604

Где бы ее раздобыть?...

 Профиль  
                  
 
 
Сообщение29.10.2007, 16:55 


16/05/07
172
Москва
Ха, ха... я ее нашел :lol:

 Профиль  
                  
 
 Пакет R (для ТВиМС)
Сообщение24.08.2008, 17:04 


28/05/08
284
Трантор
Цели этой темы:

1. Сообщить о существовании еще одного мат.пакета (реклама, однако);
2. Написать краткую шпаргалку для себя, в которую можно будет заглянуть через 2 месяца и понять, что и как делать;
3. Получить комментарии уважаемых форумчан к этой шпаргалке, дабы сделать ее более читаемой и, надеюсь, полезной для других.

Понятно, что есть help, но он на английском (это все-таки снижает доступность информации) и он слегка перегружен для первого чтения.

Назвать это курсом нельзя (но хотелось написать что-то вроде этого), потому что я сам нахожусь в процессе изучения этого пакета и вовсе не являюсь знатоком теории вероятностей или матстатистики. Скорее, это конспект хелпа. Все будет очень поверхностно, я думаю.

Если это окажется никому не интересно, то блога не будет, честное слово :).

Жду критики по всем направлениям, в любой форме. Не гарантирую, что смогу ответить на вопросы.

Шпаргалка по R.

Часть 1. Предварительные замечания.

R представляет собой бесплатно распространяемый математический пакет, ориентированный на задачи теории вероятностей и статистики. Скачать его можно тут.

При входе в систему мы узнаем, что R - это свободное ПО. Также выходят инструкции о получении помощи:

help() открывает стандартную справку

help.start() открывает справку в окне браузера.

Для получения помощи по конкретной команде нужно ввести

?command_name

или

help(command_name)

R чувствителен к регистру.

R позволяет использовать русские буквы в идентификаторах (у меня, по крайней мере). IMHO, это совершенно ни к чему.

Комментарии пишутся после знака #:

#все до конца этой строки - комментарий

Оператор присваивания: <- (можно и ->)

x<-5 # x:=5
52+369/85.32 -> y # y:= 52+369/85.32

Возведение в степень: ^

x<-5^(1+2); #x будет равен 125

Названия функций стандартны: log (натуральный, а не десятичный), sin, sqrt, exp, и т.п.

Для работы с комплексными числами нужно явно указывать мнимую часть: sqrt(-11) выдаст NaN (not a number), а вот sqrt(-11+0i) выдаст 0+3.316625i. Коэффициент при i должен стоять даже в том случае, если он равен 1: (2+i)^3 -"Ошибка: объект "i" не найден", а (2+1i)^3 выдаст 2+11i.

Для использования R в качестве калькулятора остается добавить следующее:

Команды отделяются друг от друга символом ; или просто нажатием на Enter;

Команды могут быть сгруппированы в блок с помощью {};

При переводе строки, если вводится отдельная команда, она немедленно выполняется (если это выражение (в частности, имя переменной), то на экран выводится его значение);

При переводе строки, если вводится одна из команд блока, меняется системная подсказка (вместо > возникает +, то же самое происходит и в случае, когда отдельная команда не помещается в одну строку), выполнение произойдет только после ввода закрывающей }.

Часть 2. Векторы.

Векторы - это простейшая из структур данных, используемых в R.

Создадим вектор размерности 5:
x<-c(2.3, 5.6, 8.9, 12, 12.3)

Здесь c - оператор конкатенации. Он принимает на вход векторы и числа, причем их можно перемешивать в любом порядке.

Например, следующая команда вполне корректна и в результате ее выполнения x станет вектором размерности 11:

x<-c(x, 5, x)

Чтобы убедиться в этом, можно ввести просто x. Появится следующее:

[1] 2.3 5.6 8.9 12.0 12.3 5.0 2.3 5.6 8.9 12.0 12.3

Как правило, операции над векторами выполняются покомпонентно. Например, команда

1/x

выведет

[1] 0.43478261 0.17857143 0.11235955 0.08333333 0.08130081

0.20000000 0.43478261 0.17857143
[9] 0.11235955 0.08333333 0.08130081

В квадратных скобках выводится индекс элемента x, с которого начинается вывод в данной строке. Если сделать окно R поуже, то та же команда напечатает

[1] 0.43478261 0.17857143
[3] 0.11235955 0.08333333
[5] 0.08130081 0.20000000
[7] 0.43478261 0.17857143
[9] 0.11235955 0.08333333
[11] 0.08130081

Так как мы не присвоили вычисленное значение никакой переменной, R вычислил его, напечатал и нигде не сохранил (кроме переменной .Last.value).

Обратиться к элементу вектора можно по его индексу, который указывается в квадратных скобках, нумерация начинатеся с 1:

y<-c(x[1],x[3],x[6]) #y будет равен (2.3, 8.9, 5)

Внимание! Если длины векторов не совпадают, то все векторы циклически дополняются до максимальной из длин векторов, участвующих в выражении:

{a<-c(2,3,6); b<-c(1,2,3,4,5,6,7); c<-c(8,3,2,1); d<-a*b+c+9}

Вектор a будет дополнен до (2,3,6,2,3,6,2), вектор c (да, R позволяет использовать с в качестве имени переменной) до (8,3,2,1,8,3,2), а константа 9 будет повторена 7 раз: (9,9,9,9,9,9,9). Вектор d будет равен (19, 18, 29, 18, 32, 48, 25). Так как длины векторов a и b не делят длину вектора b, R выдаст соответствующее предупреждение, но команду выполнит.

Точно так же можно использовать и стандартные функции:

{x<-c(1,2,3,4); y<-sqrt(x)+log(x)}.

Другие функции:

max(), min(), length(), sum() - назначение ясно из названия.
prod() возвращает произведение всех элементов вектора,
sort() выполняет сортировку по возрастанию,
mean() возвращает среднее арифметическое (mean(x)=sum(x)/length(x)),
var() возвращает несмещенную(!) оценку для дисперсии:

var(x)=sum((x-mean(x))^2)/(length(x)-1).

Для сортировки есть и другие функции (order(), sort.list() ).

Аргументом всех вышеперечисленных функций является единственный вектор (кроме max, min, которые могут принимать несколько векторов), значением - число.

Также имеется функция range(), которая возвращает минимальную и максимальную компоненты вектора: range(x)=c(min(x),max(x)).

Если нужно загнать в вектор арифметическую прогрессию с разностью 1 или -1, то это можно сделать так:

{x<-1:100; y<-100:1; x+y;} #после этого не надо быть Гауссом, чтобы вычислить sum(x) :)

Двоеточие можно использовать и в индексе, для выкусывания из вектора непрерывных кусков:

{x<-500:100000; y<-x[3:41]; y}

напечатает

[1] 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519
520 521 522 523 524
[24] 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540

Если разность прогрессии другая, то можно воспользоваться функцией seq(). У нее 5 аргументов, но одновременно можно использовать лишь некоторые из них.

Первые два параметра - from и to, и команды seq(13, 26), seq(from=13, to=26), seq(to=26, from=13) все равносильны 13:26. Значения from и to по умолчанию равны 1. Заметим, что аргументы можно перечислять в определенном порядке, не именуя их, или именовать, тогда порядок аргументов может быть произвольным.

Если же мы хотим получить все нечетные числа от 3 до 175, то необходимо использовать параметр by (разность прогрессии, по умолчанию, в отсутствие других аргументов, кроме from и to, равна 1):

x<-seq(from=3, to=175, by=2)

На псевдокоде:
Код:
x[1]:=from;
i:=1;
while b<=to do
  begin
      x[i+1]:=x[i]+by;
      i:=i+1;
  end;


То есть команды x<-seq(0, 150, by=25) и x<-seq(0, 174.99999, by=25)
равносильны. А вот {x<-seq(0, 174.999999, by=25); x} уже дает другой результат: [1] 0 25 50 75 100 125 150 175.

Точность низковата, как ее изменить, я пока не смотрел :(

Если to-from и by имеют разные знаки, то R выдает сообщение об ошибке.

Еще один аргумент функции seq() называется length. Значение по умолчанию не задано.Предположим, что мне нужно получить первые 20 чисел, кратных 17:
x<-seq(from=17, by=17, length=20);

Можно использовать только to, by, length:

x<-seq(to=340, by=17, length=20);

или только from, to, length:

x<-seq(from=0, to=5, length=10001); #сетка с шагом 0,0005
#не забываем добавлять 1

но указание from, to, by и length одновременно - ошибка:

x<-seq(from=17, to=340, by=17, length=20);

Имеется также аргумент along.with. Этот аргумент векторный и предназначен для создания прогрессии той же длины, что и указанный вектор. То есть
{y<-c(12,13,56); x<-seq(from=52, along.with=y)}
и
{y<-c(12,13,56); x<-seq(from=52, length=length(y))}
равносильны.

Для некоторых из приведенных выше вариантов использования функции seq() имеются специальные сокращения, см. справку.

И последнее на сегодня. Вот мы насоздавали кучу разных векторов, многократно переопределяя x и пользуясь другими переменными. Все они сохраняются в памяти, причем иногда занимая значительный ее объем. Удалить ненужные более объекты можно с помощью команды rm(), в качестве аргументов ей передаются имена объектов. А получить имена (почти) всех объектов можно с помощью функции objects() или ls() (без аргументов).

Дальнейший план: вероятностные распределения (самое, ИМХО, интересное), линейная алгебра, графика, программирование, чтение данных из файлов и запись в файл.

 Профиль  
                  
 
 Re: Пакет R (для ТВиМС)
Сообщение25.08.2008, 10:46 


10/08/06
6
Из "Баголовка"
Narn писал(а):
Понятно, что есть help, но он на английском (это все-таки снижает доступность информации) и он слегка перегружен для первого чтения.

На английском кроме хелпа есть ещё различные руководства, которые поставляются прямо с дистрибутивом R.
На русском языке по этому пакету много писал А. Шипунов

Narn писал(а):
R представляет собой бесплатно распространяемый математический пакет, ориентированный на задачи теории вероятностей и статистики. Скачать его можно тут.

Пакет бесплатно распространяемый и, кроме этого, он ещё и кроссплатформенный.
Вы дали странную ссылку для скачивания. У R есть официальный сайт www.r-project.org/, оттуда по ссылкам можно найти все версии программы, репозиторий с пакетами расширений и вики-документацию.

Narn писал(а):
Оператор присваивания: <- (можно и ->)

А можно и "=".

Спасибо за начинание. Пишите ещё, пожалуйста.

 Профиль  
                  
 
 
Сообщение06.09.2008, 13:55 


04/02/08
325
Буково
Кстати, в журнале Linux Format был цикл статей об этом пакете.

 Профиль  
                  
 
 
Сообщение08.09.2008, 14:30 


20/12/07
69
Спасибо за эту тему!
Мы сейчас как раз непараметричискую статистику в ней проходим. :lol:

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group