Для изучения и экспериментов лучше подходит интерактивный режим. Поэтому будем использовать именно его.
На примере этих (и других) данных будет рассмотрены возможности языка:
X = "181.1 167.9 170.5 194.1 171.6 168.6 180.7 184.9 165.3 165.5 171.1 174.4 175.2 180.3 181.2 168.9 176.2 167.4 165.9 177.2 180.8 173.9 163.5 175.0 171.0 177.6 173.6 185.8 184.0 178.7 174.3 170.3 178.6 172.3 162.3 166.3 160.4 163.0 174.7 183.1"
Y = "163.3 172.6 154.3 159.8 174.0 159.0 180.1 168.9 177.0 166.4 162.7 169.3 170.3 161.8 171.9 177.3 166.8 175.5 175.1 174.8 161.0 169.8 177.9 174.3 168.7 176.6 156.3 179.3 178.3 168.7 178.5 151.0 164.0 159.5 180.9 178.7 166.0 169.5 167.0 150.4"
Данные представлены не столбцом, а строкой. Поэтому для начала разобъём её на подстроки, а потом преобразуем в вещественные числа:
header - есть ли заголовок.
Пример файла
Работа с DataFrame
names(D) - имена полей
nrow(D), ncol(D) - число строк, столбцов
Доступ к полям. Имя поля (столбца) записывается после знака $:
D[42,] - 42 строчка таблицы
D[,2] - данные из второго столбца
Указывать набор конкретных строк\столбцов можно вектором:
D[ c(1,3,7, 13), ]
исключить эти столбцы:
D[ , - c(1,2) ]
Вместо индексов столбцов можно указывать их имена (тут унарный минус не работает):
mtcars[ , c('wt', 'am')]
Создание нового поля (заполненного нулями)
...
Среда
Самая популярная среда - R Studio.
интервальные оценки
Далее будем использовать уровень значимости α=0.05. Это самое часто используемое значение, хотя вопрос о его выборе заслуживает отдельной статьи. Для каждой проверки должны быть сформированы нулевая и альтернативные гипотезы. Часто, для краткости приводят только одну, например альтернативную: математические ожидания не равны. В таком случае оставшаяся гипотеза, например основная пряма противоположна первой: математические ожидания равны.
На примере этих (и других) данных будет рассмотрены возможности языка:
X = "181.1 167.9 170.5 194.1 171.6 168.6 180.7 184.9 165.3 165.5 171.1 174.4 175.2 180.3 181.2 168.9 176.2 167.4 165.9 177.2 180.8 173.9 163.5 175.0 171.0 177.6 173.6 185.8 184.0 178.7 174.3 170.3 178.6 172.3 162.3 166.3 160.4 163.0 174.7 183.1"
Y = "163.3 172.6 154.3 159.8 174.0 159.0 180.1 168.9 177.0 166.4 162.7 169.3 170.3 161.8 171.9 177.3 166.8 175.5 175.1 174.8 161.0 169.8 177.9 174.3 168.7 176.6 156.3 179.3 178.3 168.7 178.5 151.0 164.0 159.5 180.9 178.7 166.0 169.5 167.0 150.4"
Данные представлены не столбцом, а строкой. Поэтому для начала разобъём её на подстроки, а потом преобразуем в вещественные числа:
X = as.double(strsplit(X,' ')[[1]])Работа с файловой системой
list.files() # список файлов
getwd() # полное имя текущего каталога
setwd(dir) # изменить каталог
Загрузка данных
Текстовые файлы. Загрузить текстовый файл как список строкx <- scan("data.txt", what="", sep="\n")CSV файлы.
';' - разделитель полей;D = read.delim('studlab.csv',';', header=TRUE)
header - есть ли заголовок.
Пример файла
N;X;YXLS файлы. Для загрузки из xls файла потребуется пакет gdata (см. установку пакетов) [so]
0;15.04;12.0
1;16.24;14.18
2;7.96;12.12
3;17.4;7.98
require(gdata) # подключим пакет
read.xls("file.xls")
Работа с данными
сводка по даннымsummary(D)
N X Y
Min. : 0.00 Min. : 6.26 Min. : 3.74
1st Qu.:24.75 1st Qu.:10.54 1st Qu.: 9.33
Median :49.50 Median :12.27 Median :11.14
Mean :49.50 Mean :12.34 Mean :10.91
3rd Qu.:74.25 3rd Qu.:14.12 3rd Qu.:12.55
Max. :99.00 Max. :20.65 Max. :17.94
Работа с DataFrame
names(D) - имена полей
nrow(D), ncol(D) - число строк, столбцов
Доступ к полям. Имя поля (столбца) записывается после знака $:
D$XДоступ к даныым можно получить используя индексацию: строка, столбец.
D[42,] - 42 строчка таблицы
D[,2] - данные из второго столбца
Указывать набор конкретных строк\столбцов можно вектором:
D[ c(1,3,7, 13), ]
исключить эти столбцы:
D[ , - c(1,2) ]
Вместо индексов столбцов можно указывать их имена (тут унарный минус не работает):
mtcars[ , c('wt', 'am')]
Создание нового поля (заполненного нулями)
D$Z = 0Загрузка из Интернета.
...
Среда
Самая популярная среда - R Studio.
Числовые характеристики
интервальные оценки
Графики
Диаграмма рассеивания
plot(D$X,D$X)
Дополнительные параметры функции plot:
xlab = "Ось X", ylab = "Ось Y" - подписи к осям;
col = "red" - цвет маркеров;
type = "b" - тип графика (p - точки (по умолчанию), l - линии, b - линии и точки, и т.п. см. справку по plot);
main = "Заголовок" - подпись сверху;
sub = "Подзаголовок" - подпись снизу.
Добавим координатную сетку:
ggplot2
Более эстетичные графики можно построить с помощью библиотеки ggplot2
aes(x=D$X, y=D$Y) - задаёт соответствие осей данным
geom_point() - определяет способ отображения данных
Закрасить область
xlab = "Ось X", ylab = "Ось Y" - подписи к осям;
col = "red" - цвет маркеров;
type = "b" - тип графика (p - точки (по умолчанию), l - линии, b - линии и точки, и т.п. см. справку по plot);
main = "Заголовок" - подпись сверху;
sub = "Подзаголовок" - подпись снизу.
Добавим координатную сетку:
grid()Дополнительные параметры функции: nx=10,ny=10 - число делений сетки.
ggplot2
Более эстетичные графики можно построить с помощью библиотеки ggplot2
library(ggplot2)
ggplot(D, aes(x=D$X, y=D$Y))+geom_point() + xlab('X')+ylab('Y')
aes(x=D$X, y=D$Y) - задаёт соответствие осей данным
geom_point() - определяет способ отображения данных
Закрасить область
https://www.r-bloggers.com/creating-shaded-areas-in-r/
Сохранить график в файл
Сохранить график в файл
png('my-boxplot.png')
... Построение графика ...
dev.off()
Гистограмма
Диаграмма рассеивания
Ящик с усами или диаграмма размаха.
boxplot(x,y)
Дополнительно
стоит подписать каждую диаграмму, пусть это будут лаконичные имена
случайных величин для которых они построены: X и Y.
Дополнительные элементы графиков, такие как заголовок, подписи к осям и т.п. выполняются также как и для других графиков.boxplot(x,y, names = c('X', 'Y') )
Проверка гипотез [wiki]
Для понимая нижеследующих процедур необходимы знания о процедурах проверки статистических гипотез, p-value (и ещё о p-value), уровне значимости и т.д.Далее будем использовать уровень значимости α=0.05. Это самое часто используемое значение, хотя вопрос о его выборе заслуживает отдельной статьи. Для каждой проверки должны быть сформированы нулевая и альтернативные гипотезы. Часто, для краткости приводят только одну, например альтернативную: математические ожидания не равны. В таком случае оставшаяся гипотеза, например основная пряма противоположна первой: математические ожидания равны.
Проверка статистического распределения на нормальность
Требование "нормальности" часто встречается при проверке других статистических гипотез (например на равенство средних или дисперсий). Кроме того, знание о распределении может быть интересно само по себе. Или если нужно по статистическим данным получить гладкую кривую подобрав его параметры.
Используем одну из наиболее популярных в таких случаев проверок: критерий Шапиро-Уилка.
Нулевая гипотеза: случайная величина распределена нормально.
Альтернативная гипотеза: случайная величина не распределена нормально.
shapiro.test(x)
Результат:
Shapiro-Wilk normality test
data: x
W = 0.98343, p-value = 0.2434
Здесь мы видим два числа, W - значение критерия и p-value. Они могут использоваться независимо при проверке гипотез.
В этом примере, p-value > α, значит принимаем нулевую гипотезу: с.в. распределена нормально.
о равенстве дисперсий
...
Гипотеза о равенстве математических ожиданий
Предположим, что по данным выборки, где известны средние требуется установить, равны ли математические ожидания в генеральных совокупностях, откуда были сделаны эти выборки. Непосредственным сравнение выборочных средних этого сделать нельзя, потому, что эти средние, например, могут отличатся. Так как сравниваются выборки, то вполне вероятно, что различия в средних получились совершенно случайно. В большинстве остальных выборок эти средние равны. Поэтому возникает вопрос: насколько можно доверять различию выборочных средних средних?
Лучше всего для этого построить доверительные интервалы для генеральных математических ожиданий.
Если изучаются различия в нормально распределенных выборках, где медиана и математическое ожидание равные, то эти различия можно оценить построив диаграмму размаха:
Лучше всего для этого построить доверительные интервалы для генеральных математических ожиданий.
Если изучаются различия в нормально распределенных выборках, где медиана и математическое ожидание равные, то эти различия можно оценить построив диаграмму размаха:
boxplot(x,y, names = c('X', 'Y') )
Например для выборок A и B (пусть они содержат по 100 элементов) проверку средних производить не имеет смысла. Большинство, около 3/4, значений каждой выборки расположены в разных областях числовой прямой. Выборки различны, а значит и средние значения различны.
Для следующих выборок (см. данные в начале), ответ на вопрос о равенстве средних уже не так очевиден:
Стоит помнить, что на диаграмме приводятся медианы (жирная линия) а не средние. Поэтому вычислим последние отдельно:
Для следующих выборок (см. данные в начале), ответ на вопрос о равенстве средних уже не так очевиден:
Стоит помнить, что на диаграмме приводятся медианы (жирная линия) а не средние. Поэтому вычислим последние отдельно:
> mean(X); mean(Y)
[1] 173.9Да, разница есть. Но на сколько она существенна, с учётом дисперсий и объёмов выборок?
[1] 168.9
Далее следует определится с выбором критерия (pdf), который будет применятся для сравнения. Для этого может понадобится проверить выборки на соответствие требованиям критерия.
Рассмотрим два теста (см. pdf выше): Z-тест и T-тест.
Установка пакетов [r-bloggers]
Предположим, что выборки сделаны из нормально распределенных генеральных совокупностей. То есть подходят под одноименное требование Z-теста. Однако дисперсии генеральных совокупностей неизвестны. Казалось бы, что эти величины можно заменить одноименными но для выборок, но в результате увеличится элемент случайности, который тоже нужно будет учесть. Как раз для этой задачи существует T-тест, поэтому остановим свой выбор на нём.
Нулевая гипотеза H0: M(X) = M(Y), математические ожидания генеральных совокупностей равны.
Нулевая гипотеза H0: M(X) = M(Y), математические ожидания генеральных совокупностей равны.
> t.test(X,Y)
Welch Two Sample t-test
data: X and Y
t = 2.8408, df = 77.187, p-value = 0.005753
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
1.494589 8.500411
sample estimates:
mean of x mean of y
173.9300 168.9325
p-value < α, значит отклоняем нулевую гипотезу. Математические ожидания генеральных совокупностей не равны.
Установка пакетов [r-bloggers]
install.packages("ggplot2")