kstera.ru

Содержание

Первые шаги:
Как ввести и сохранить данные?

R с нуля (последнее обновление 22.01.2011)

Первые шаги

Почему стоит попробовать R?

R - это достаточно мощный статистический инструмент. А в отличие, например, от SPSS, R распространяется бесплатно.


Установка, запуск, выход, сохранение рабочего пространства

Где взять устновочные файлы?

Сайт о проекте R - это www.r-project.org/. Там можно скачать программу в разделе Downloads для нужной операционной системы. Также на сайте есть мануалы (увы, только на английском), новости, скриншоты и многое другое.

Как запустить программу и что делать дальше?

Пользователям Windows нужно искать в меню в списке программ строку R. Пользователи Linux (а может и Windows тоже, но не пробовала) могут набрать R в командной строке

При запуске R представляет собой командную строку. Вы увидите приветствие, надпись о версии программы, а ниже строку с символом
>
Это приглашение ко вводу команды. По окончании ввода текста команды нужно нажать Enter для ее выполнения.

Если у вас установлен пакет Rcmdr, то есть RCommander, графическая оболочка, то можно запустить его, введя library(Rcmdr). Вы увидите окошко, сверху которого будет набор меню: Файл, Правка, Данные итд, ниже панель для управления данными, а основная часть - два окошка. Верхнее - окно скриптов, нижнее - окно вывода. Если набрать любую из команд, которые описываются в дальнейшем для командной строки, в окне скриптов, выделить и нажать кнопку "выполнить", то результат будет такой же, как если бы вы набрали команду в командной строке. При описании применения R в матметодах я буду по возможности соотноситься с меню командера, но в основном буду писать про командную строку.

Чтобы выйти из программы можно набрать q(). R спросит, нужно ли сохранить рабочее пространство. В рабочее пространство входит история набранных команд, созданные переменные. Полезно сохранять, потому что к истории команд иногда удобно обращаться.

Сохранить рабочее пространство можно и не выходя из программы. Для этого нужно набрать save()


Как работать с командной строкой?

После ввода команд нужно нажать Enter для их выполнения. Команды вводятся либо по одной либо разделяются символом ;. Также можно группировать команды внутри фигурных скобок.

Все набранные команды сохраняются в историю. Нажимая стрелку вверх, вы двигаетесь по истории от недавних к предыдущим командам.

Комментарии также сохраняются в истории. Комментарием считается любой текст справа от знака #. Этот знак можно ставить как в начале строки (тогда вся строка будет комментарием), так и в середине (тогда комментарием будет считаться только та часть строки, которая справа).

Логические значения истина и ложь в R обозначаются либо числами (1 - истина, 0 - ложь), либо заглавными буквами (T или TRUE - истина, F или FALSE - ложь). Важен регистр. Другие обозначения воспринимаются как имена переменных, а не логические значения.


Как получить справку?

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

help(func) - показывает справку о функции func. Справка на английском языке, охватывает использование, параметры, другую справочную информацию, а в конце каждой статьи можно найти примеры использования функции.

args(func) - показывает список всех аргументов функции func со значениями, используемыми по умолчанию. В некоторых функциях очень много возможных аргументов, однако в цели данной методички не входит описывать их все. Я упоминаю лишь наиболее важные и полезные аргументы, с моей точки зрения. Поэтому при необходимости смотрите справочник или справку по функции или ее аргументам.

Как использовать R в качестве калькулятора?


Самое простое применение R - это выполнение арифметических операций. Все что требуется - это ввести нужное арифметическое выражение и нажать Enter. Доступные арифметические функции:

операторвыполняемое действие
+сложение
-вычитание
*умножение
/деление
%%остаток от деления целого на целое
%/%целая часть от деления целого на целое
то же самое, что (a-(a%%b))/b
sqrt(n)квадратный корень из n
sin(x)синус x
cos(x)косинус x
tan(x)тангенс x
abs(x)модуль x
log(x,base)логарифм x по основанию base
log2(x)логарифм x по основанию 2
log10(x)логарифм x по основанию 10

В выражениях можно использовать скобки.

Как ввести и сохранить данные?

Как работать с переменными?

Чтобы создать переменную (например, х) и присвоить ей значение (например, 1234) нужно просто ввести команду х=1234. Теперь в любых выражениях имя переменной (в нашем случае х) будет автоматически заменено значением (у нас это 1234).

Чтобы узнать значение переменной, достаточно ввести название переменной, и R выдаст ее значение. Выглядеть это будет так:
> x=1234
> х
[1] 1234

Присваивая переменной новое значение, можно использовать старое значение, то есть создавать конструкции типа
> a=5
> a
[1] 5
> a=a+3
> a
[1] 8

Важно знать, что имена переменных могут состоять из латинских букв обоих регистров, из цифр и знаков подчеркивания (например, допустимы такие имена: a, x, x1, a_x, O_o, the_Variable_with_Long_Name, a459x4h36J4lbgT62). При этом первым символом должна обязательно являться буква! Наконец, регистр имеет значение, то есть RainForest и RainFOrest - это разные переменные.


Векторы, или как работать с рядами данных?

Что такое векторы в R?

Допустим, у нас есть группа из 5 человек, и нам надо сохранить их возраста. Можно создать пять переменных, например
> age_1=25
> age_2=20
> age_3=9
> age_4=44
> age_5=37

Однако удобнее создать одну переменную, в которую поместить все 5 значений. Такой ряд данных, объединенных одним именем, хранящийся в определенном порядке - это массив данных, или вектор.

assign("age",c(25,20,9,44,37))
или сокращенно: age<-c(25,20,9,44,37)

Теперь, каждый отдельный элемент можно вызвать по его порядковому номеру в ряду, например, четвертый элемент можно получить так:
> age[4]
[1] 44

С такими отдельными элементами можно производить все те же операции, что и с обычными числами


Функция append, или как добавить элементы в существующий вектор?

Допустим, в нашей группе появился еще один человек, возраст которого 31 год. Мы можем создать заново вектор age, но теперь из шести элементов вместо пяти. Однако есть другой способ - использовать функцию append:
> append(age,31)
[1] 25 20 9 44 37 31

Замечу, что мы могли бы вставить несколько значений, вспомнив про функцию c():
> append(age,c(31,33,35))
[1] 25 20 9 44 37 31 33 35

Также функция позволяет вставить элементы в любом месте вектора с помощью параметра after. По умолчанию установлено значение after=length(x), то есть элементы добавляются в конец. Но допустим, мы захотим вставить нашего шестого человека после второго:
> append(age, 31, after=2)
[1] 25 20 31 9 44 37


Операции с векторами, или что можно делать с векторами?

Можно оперировать всеми элементами вектора одновременно. Так прибавление числа к вектору равносильно прибавление этого числа к каждому элементу вектора. Или, например, чтобы вывести, сколько десяктов лет прожил каждый человек из нашего примера, можно сделать так:
> age/10
[1] 2.5 2.0 0.9 4.4 3.7

Аналогично со сложением, вычитанием и другими операциями, описанными в пункте про R как калькулятор


Как сравнивать векторы, элементы векторов?

Допустим, нужно выяснить, какие элементы вектора (пусть будет тот же age) больше определенного числа (например, кто из нашей маленькой выборки совершеннолетний). R для каждого элемента скажет, выполняется ли условие, то есть TRUE (верно) или FALSE (не верно) Выглядеть будет примерно так:
>age
[1] 25 20 31 9 44 37
> age >= 18
[1] TRUE TRUE FALSE TRUE TRUE

Но может понадобиться получить один ответ, например, верно ли, что все элементы соответствуют условию? или есть ли вообще элементы, соответствующие условию? Для этого используем две функции, соответственно, all() и any()

all(x1,x2,...,xn) - ответит на вопрос, верно ли, что все условия (x1, x2, ... и xn) верны? то есть это логическая конъюнкция. Например:
> all (age >= 7, age < 60)
[1] TRUE
# действительно, все испытуемые не младше семи и младше шестидесяти
> all (age >=18, 1 > 0)
[1] FALSE
# хотя единица, конечно, больше нуля, но среди наших испытуемых есть один девятилетний, поэтому не верно

any(x1,x2,...,xn) - ответит на вопрос, есть ли среди условий (x1, x2, ..., xn) хоть одно верное? то есть это логическая дизъюнкция. Пример:
> any (age >=18, 1 > 0)
[1] TRUE

Наконец, можно сравнивать между собой два вектора. Но для этого нужно либо чтобы длина большего была кратна длине меньшего либо чтобы длины были равны. Примеры:
> a <- c( 1:5 ); b <- c( 6:2 ); c <- c( 1:7 ); d <- c( 10:1 )
> a > b
[1] FALSE FALSE FALSE TRUE TRUE


Как задать последовательность чисел?

  • оператор :
  • seq(from,to,by,length,along) - создает последовательность, начиная с from, заканчивая to с шагом by. Можно задать длину ряда параметром length или приравнять по длине к другому вектору along . Аргументы: from, to, by, length, along (такой же длины как...)
  • rep(a, times, each) - повторять вектор a times раз или each раз каждый элемент a. Аргументы: вектор, times, each

Сортировка

  • sort(v,increasing) - сортирует вектор v; increasing - булев, true - по возрастанию, false - по убыванию, можно вместо этого написать increasing=decreasing;
  • order()

Продолжение следует...


R и измерительные математические модели

R и измерительные шкалы

Графики, гистограммы, ...

hist(theVector)

theVector [V, вектор, по которому строится гистограмма]
  • breaks [<вектор, перечисляющий разделители; <число ячеек гистограммы;
  • freq [L, T - frequencies, F - densities]
  • probability []
  • include.lowest []
  • right [L, T - cells are right-closed and left-open]
  • density []
  • angle [slope of shading lines in degrees, counter-clockwise]
  • col [цвет ячеек]
  • border [цвет границ ячеек]
  • main, xlab,ylab [названия]
  • xlim, ylim [пределы]
  • axes [L, ???]
  • plot [L, рисовать ли]
  • labels [L or Char, рисовать ли лэйблы на верху ячеек]
  • nclass [int, ???]
  • ... - другие аргументы, графические параметры
  • lty [пунктирность линий ячеек]
  • lwd [толщина осей]

plot()

- см. par, [methods(plot) - выводит список методов], plot.formula, points, lines.
  • x
  • y
  • type [p - points, l - lines, b - both, c - линии с вырезанными точками, o - overplotted, h - histogram, s - ступеньки, сначала направо, S - ступеньки, сначала вверх, n - no plotting]
  • main,xlab,ylab - как в hist
  • sub [subtitle]
  • asp [y/x aspect ratio]
графические параметры:
  • adj [выравнивание text, mtext, title - от 0 (по левому краю) до 1 (по правому краю)]
  • ann [L, ?аннотация]
  • ask [L, интерактивность - запрос на ввод перед печатью следующей фигуры]
  • bg [цвет фона]
  • bty [обрамление графика, форма "коробочки": o, 1, 7, c, u, ], n - нет]
  • cex [во сколько раз по сравнению с обычным увеличить размер точек]
  • Указатель по функциям

    На главную  mail@kstera.ru