Проверка статистических гипотез
Приведем список некоторых основных пакетов, содержащих стандартные статистические тесты (многие критерии находятся в пакете stats, который загружается автоматически):
ctest - классические тесты (Фишера, "Стьюдента", Пирсона, Бартлетта, Колмогорова- Смирнова...)
eda - методы, используемые в “Разведочном анализе данных”
lqs - регрессия и оценка ковариации
modreg – современные методы построения регрессионных моделей: сглаживание и локальные регрессии
mva - многомерный анализ
nls – нелинейные модели регрессии
splines - сплайны
stepfun - эмпирические функции распределения
ts - исследования временных рядов
Для загрузки пакета используется фукция: library() с именем соответствующего пакета:
> library(eda)
3.1. Критерий Х2 Пирсона (Проверка гипотезы о нормальном распределении генеральной совокупности ).
Описание
Критерий c2 используется для анализа таблиц сопряженности признаков и сравнения законов распределения непрерывных случайных величин. Анализируются номинальные или приведенные к номинальной шкале данные, представленные в виде таблицы сопряженности признаков. Для непрерывных случайных величин используется принадлежность значений заданным интервалам, выбираемых таким образом, чтобы в каждом из них было не менее 5-7 значений (интервалы с меньшим числом значений объединяются). Простейшим выбором является равный шаг интервалов, равный или .
Вычисление критериальной статистики производится по формуле:
где ni- эмпирические частоты, ni’- теоретические частоты попадания элементов выборки в группы (заданные интервалы).
Число степеней свободы находят по формуле:
где -число групп выборки, -число параметров предполагаемого распределения, которые оценены по данным выборки.
Если предполагаемое распределение – нормальное, то по выборке оценивают два параметра (математическое ожидание и дисперсию), поэтому =2 и .Одной из функций, осуществляющей проверку данного критерия в R является chisq.test().
Описание функции
chisq.test (x, y = NULL, p = rep(1/length (x), length (x)))
Параметры
x | вектор или матрица. |
y | вектор; игнорируемый, если x - матрица. |
p | вектор теоретических вероятностей той же длины, что x. |
Примечание
Если x матрица с одной строкой или столбцом, или если x вектор, и y не дан, x одномерная таблица сопряженности признаков. В этом случае, проверенная гипотеза - равняются ли вероятности совокупности тем, что в p, или все равны, если p не дается. Если x - матрица с двумя строками (или столбцами), содержащими неотрицательные целые числа, то она рассматривается как таблица сопряженности признаков. Если x и y – два вектора, содержащих факторы (номинальные или ординальные значения), то по ним строится таблица сопряженности.
Критические значения (квантили) находятся с использованием функции qchisq(p,df) или по таблице c2-распределения [2,стр.329].
Пример
Сгенерируем случайную выборку из нормального распределения, и проверим ее нормальность.
N<-100 # объем выборки
x.norm<-rnorm(N,mean=2,sd=2.5) # задаем среднее и СКО
Вычисляем квантили выборки с шагом 10% (по 10 элементов в интервале)
> x.norm.q <- quantile(x.norm,probs=seq(0,1,0.1))
> round(x.norm.q,2)
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
-4.12 -1.51 -0.14 0.59 1.52 2.15 2.70 3.89 4.51 5.22 8.15
> summary(x.norm)
Min. 1st Qu. Median Mean 3rd Qu. Max.
-1.4490 0.6675 2.0330 2.0670 3.1050 6.5830
Выбираем интервалы:
> k<-6 # число интервалов
> x.q <- c(-10, -1.0, 0.5, 2.0, 3.5, 5.0,12.0)
Вычисляем фактические частоты
> x.norm.hist<-hist(x.norm,breaks=x.q,plot=FALSE)
> x.norm.hist$counts
12 15 22 18 18 15
Вычисляем (по выборке) теоретические вероятности для каждого интервала
> x.q[1]<-(-Inf);x.q[k+1]<-(+Inf)#«раздвигаем» границы до бесконечности
> x.norm.p.theor<-pnorm(x.q,mean=mean(x.norm),sd=sd(x.norm))
> x.norm.p.theor<-(x.norm.p.theor[2:(k+1)]-x.norm.p.theor[1:k])
> round(x.norm.p.theor,2)
0.12 0.15 0.21 0.22 0.16 0.14
Сравниваем фактические и теоретические частоты
> chisq.test(x.norm.hist$counts,p=x.norm.p.theor)
Chi-squared test for given probabilities
data: x.norm.hist$counts
X-squared = 0.9691, df = 5, p-value = 0.965
Поскольку для проверки нулевой гипотезы H0 о нормальности распределения генеральной совокупности в нашем случае используется правосторонний критерий, а уровень значимости (p-value) равен 0.965 (96.5%), то нужно допустить разрешить вероятность ошибки, равную 96.5%, чтобы считать выборку не принадлежащей нормальному распределению. Следовательно, гипотеза о нормальности принимается.
Приведем пример проверки случайности сопряжения признаков. Пусть первый признак является полом (закодированным символами «М» и «Ж»), а второй – наличием близорукости (закодированной числами 0, 1).
> x<-c(”М”,”Ж”,”Ж”,”М”,”Ж”,”Ж”,”М”,”Ж”,”М”,”Ж”,”Ж”,”М”,”М”)
> y<-c( 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0)
> tbl<-table(x,y)
> tbl
y
x 0 1
Ж 4 3
М 4 2
Оцениваем по выборке маргинальные (безусловные) вероятности для x и y:
> p.x<-c(sum(tbl[1,])/sum(tbl),sum(tbl[2,])/sum(tbl))
> p.y<-c(sum(tbl[,1])/sum(tbl),sum(tbl[,2])/sum(tbl))
или, что тоже самое (годится для таблиц любой размерности),
> p.x<-apply(tbl,1,sum)/sum(tbl) # 1 - суммируем по строкам
> p.y<-apply(tbl,2,sum)/sum(tbl) # 2 - суммируем по столбцам
Если сопряженности признаков нет (гипотеза H0), то наблюдаемые относительные частоты должны совпадать с произведениями маргинальных вероятностей:
>p.theor<-c(p.x[1]*p.y[1],p.x[2]*p.y[1], p.x[1]*p.y[2],p.x[2]*p.y[2])
или, что тоже самое (годится для таблиц любой размерности),
> p.theor<- p.x %*% t(p.y)
> chisq.test(as.vector(t),p=p.theor)
Chi-squared test for given probabilities
data: as.vector(t)
X-squared = 0.1238, df = 3, p-value = 0.9888
Поскольку p-value близко к единице, то нулевая гипотеза принимается. Отметим, что поскольку в таблице сопряженности tbl есть ячейки с числами, меньшими 5 (в нашем случае – все ячейки такие), то аппроксимация хи-квадрат может быть неправильной, а полученный результат - неверным.