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, Супермодераторы



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

Сейчас этот форум просматривают: Dmitriy40


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

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