В задаче 4 из листочка к семинару 15 мы столкнулись с ситуацией, когда точно рассчитать p-value без помощи R у нас не получилось. По табличке мы смогли лишь оценить, что p-value (при двусторонней альтернативе) точно больше 0.2. Как посчитать вероятность вида \(P(T<t)\) для случайной величины \(T\), имеющей распределение Стьюдента с некоторым числом степеней свободы \(\text{df}\)? Для этого есть функция pt()
. Например, посчитаем \(P(T<0)\) для распределения Стьюдента с \(\text{df}=10\):
pt(0, df = 10)
## [1] 0.5
Довольно логично, потому что плотность распределения Стьюдента с любым числом степеней свободы симметрична относительно 0. А теперь посчитаем \(P(T<2)\) для того же распределения:
pt(2, df = 10)
## [1] 0.963306
При желании всегда сможем вычесть результат из 1 и посчитать, например, \(P(T > 2)\):
1 - pt(2, df = 10)
## [1] 0.03669402
Теперь посчитаем \(P(T<1.11)\) для нашей задачи:
pt(1.11, df = 10)
## [1] 0.8535115
И, наконец, точное \(\text{p-value} = P(T>1.11) + P(T<-1.11)= 2 \cdot P(T>1.11)\):
(1 - pt(1.11, df = 10)) * 2
## [1] 0.2929771
Мы не ошиблись, когда на качественном уровне прикинули, что p-value точно больше 0.2.
Теперь перейдем к проверке гипотез в R. Загрузим файл с данными, сохраним таблицу в переменную chipdale
и удалим строки с пропущенными значениями:
chipdale <- read.csv("https://allatambov.github.io/psms/chip-n-dale.csv")
chipdale <- na.omit(chipdale)
Посмотрим на описательные статистики:
summary(chipdale)
## X group female spec fav assoc
## Min. : 1.00 191 :16 Min. :0.0000 PA:24 Chip :15 Chip :22
## 1st Qu.:17.25 192 :17 1st Qu.:0.0000 PG:42 Dale :10 Dale :12
## Median :34.50 193 :10 Median :1.0000 Gadget:29 Gadget:16
## Mean :34.23 194 :13 Mean :0.5606 Monty : 6 Monty : 7
## 3rd Qu.:50.75 195 : 8 3rd Qu.:1.0000 Other : 3 Other : 5
## Max. :67.00 teacher: 2 Max. :1.0000 Zipper: 3 Zipper: 4
## cheer grump cheeze tech
## Min. : 0.00 Min. : 5.00 Min. : 0.00 Min. : 0.00
## 1st Qu.: 42.50 1st Qu.: 50.00 1st Qu.: 50.00 1st Qu.: 25.00
## Median : 70.00 Median : 70.00 Median : 77.00 Median : 60.00
## Mean : 61.67 Mean : 68.47 Mean : 70.59 Mean : 51.21
## 3rd Qu.: 80.00 3rd Qu.: 90.00 3rd Qu.:100.00 3rd Qu.: 72.25
## Max. :100.00 Max. :101.00 Max. :100.00 Max. :100.00
## reaction
## Min. : 0.00
## 1st Qu.: 50.00
## Median : 70.00
## Mean : 60.54
## 3rd Qu.: 78.53
## Max. :100.00
Допустим, нас интересует доля студентов, которые хотели бы поступить на профиль «политический анализ», и мы хотим на 5%-ном уровне значимости проверить следующую нулевую гипотезу, выдвинув двустороннюю альтернативу:
\[
H_0: p = 0.25
\] \[
H_1: p \ne 0.25
\] Для проверки гипотезы о доле нам нужна функция prop.test()
. На первом месте в этой функции указывается число успехов (24 человека хотят на «политический анализ»), на втором месте — общее число опрошенных (66 человек), а затем формулируется нулевая гипотеза.
prop.test(24, 66, p = 0.25)
##
## 1-sample proportions test with continuity correction
##
## data: 24 out of 66, null probability 0.25
## X-squared = 3.9596, df = 1, p-value = 0.0466
## alternative hypothesis: true p is not equal to 0.25
## 95 percent confidence interval:
## 0.2513999 0.4918234
## sample estimates:
## p
## 0.3636364
Критерий, который использует R, немного отличается от того, что мы использовали при расчетах руками, но это сейчас не главное. Что есть в выдаче? Во-первых, название теста. По первой строчке видно, что это критерий для доли и для одной выборки. Во-вторых, альтернативная гипотеза. Здесь true p is not equal to 0.25
, и это неслучайно: R по умолчанию использует двустороннюю альтернативу. В-третьих, sample estimates
, оценка доли \(\hat{p}\), полученная по выборке, равная 0.36. Наконец, само p-value, равное 0.0466.
Интерпретация выдачи. На 5% уровне значимости на имеющихся данных есть основания отвергнуть нулевую гипотезу, так как p-value меньше \(\alpha=5\)%. Доля студентов, которые планируют поступать на «политический анализ», не равна 0.25.
Если мы хотим сформулировать одностороннюю альтернативу, R позволит нам это сделать, в prop.test()
можно указать аргумент alternative
:
alternative = less
для левосторонней альтернативы;alternative = greater
для правосторонней альтернативы.Представим теперь, что при проверке той же нулевой гипотезы мы выбрали правосторонню альтернативу:
prop.test(24, 66, p = 0.25, alternative = "greater")
##
## 1-sample proportions test with continuity correction
##
## data: 24 out of 66, null probability 0.25
## X-squared = 3.9596, df = 1, p-value = 0.0233
## alternative hypothesis: true p is greater than 0.25
## 95 percent confidence interval:
## 0.2665397 1.0000000
## sample estimates:
## p
## 0.3636364
Интерпретация у нас глобально не изменилась, нулевую гипотезу стоит отвергнуть.
Давайте теперь проверим гипотезу о равенстве среднего числу. Проверим гипотезу о равенстве средней степени любви к сыру 70:
\[ H_0: \mu = 70 \]
\[ H_1: \mu \ne 70 \]
Для проверки этой гипотезы нам потребуется критерий Стьюдента и функция t.test()
, в которой мы укажем показатель cheeze
, по которому мы считаем среднее, и саму гипотезу:
t.test(chipdale$cheeze, mu = 70)
##
## One Sample t-test
##
## data: chipdale$cheeze
## t = 0.16314, df = 65, p-value = 0.8709
## alternative hypothesis: true mean is not equal to 70
## 95 percent confidence interval:
## 63.35715 77.82467
## sample estimates:
## mean of x
## 70.59091
Итак, видим, что это критерий Стьюдента для одной выборки. Наблюдаемое значение статистики критерия \(t_{набл} = 0.1631\). Это значение взято из распределения Стьюдента с числом степеней свободы \(\text{df} = n - 1 = 65\). Выборочное среднее \(\bar{x}\) равно 70.59. Значение p-value равно 0.8709.
Интерпретация выдачи. Так как p-value больше любого конвенционального уровня значимости (1%, 5%, 10%), на имеющихся данных у нас нет оснований отвергнуть нулевую гипотезу. Среднее значение любви к сыру можно считать равным 70.
Теперь проверим гипотезу о равенстве средних в двух группах. Правда ли, что средние значения показателя любви к технике одинаковы для тех, кто хочет поступать на «политический анализ» и «политическое управление»?
\[ H_0: \mu_{PA} = \mu_{PG} \] \[ H_1: \mu_{PA} \ne \mu_{PG} \]
Воспользуемся критерием Стьюдента для двух выборок и в функции t.test()
через ~
укажем переменную группировки — специализацию:
t.test(chipdale$tech ~ chipdale$spec)
##
## Welch Two Sample t-test
##
## data: chipdale$tech by chipdale$spec
## t = 1.2873, df = 47.498, p-value = 0.2042
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -5.813436 26.492008
## sample estimates:
## mean in group PA mean in group PG
## 57.79167 47.45238
Интерпретация выдачи. Несмотря на то, что разница между выборочными средними есть и примерно равна 10 (значения 57.79 и 47.45 в sample estimates
), эта разница не является статистически значимой, то есть такой, чтобы нулевую гипотезу о равенстве средних можно было отвергнуть. На 5%-ном уровне значимости нет оснований отвергнуть нулевую гипотезу. Средний уровень любви к технике у студентов, собирающихся поступать на «политический анализ» и «политическое управление» можно считать одинаковым.