Загрузим файл, содержащий данные по пассажирам «Титаника» (реальные исторические данные, подробнее описание можно почитать здесь):

df <- read.csv("https://raw.githubusercontent.com/allatambov/Py-programming-3/master/28-05/Titanic.csv")

Так как в датасете присутствуют пропущенные значения (NA), удалим строки, в которых хотя бы одна ячейка не заполнена:

df <- na.omit(df)

Теперь для определенности отберем конкретную группу пассажиров. Пусть это будут пассажиры, которые выжили в этой катастрофе (Survived равен 1):

surv <- df[df$Survived == 1, ]

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

Критерий Стьюдента для одной выборки

Посмотрим на средний возраст (переменная Age) выживших пассажиров (среднее арифметическое \(\bar{x}\)):

mean(surv$Age)
## [1] 28.34369

Можем ли мы утверждать, что средний возраст выживших пассажиров на «Титанике» примерно 30 лет? Пока ничего определенного сказать не можем. С одной стороны, из того, что выборочное среднее не равно 30, не следует, что и средний возраст, посчитанный по всем пассажирам «Титаника», не 30 лет (у нас же не по всем пассажирам есть данные). С другой стороны, полученное значение близко к 30. Проверим формально — сформулируем статистическую гипотезу и проверим ее с помощью t-критерия (t-теста) Стьюдента. Альтернативную гипотезу выберем двустороннюю.

\[ H_0: \mu = 30 \text{ (средний возраст равен 30)} \] \[ H_1: \mu \ne 30 \text{ (средний возраст не равен 30)} \] Проверяем в R (по умолчанию выбирается двусторонняя альтернатива):

t.test(surv$Age, mu = 30)
## 
##  One Sample t-test
## 
## data:  surv$Age
## t = -1.8866, df = 289, p-value = 0.06022
## alternative hypothesis: true mean is not equal to 30
## 95 percent confidence interval:
##  26.61570 30.07168
## sample estimates:
## mean of x 
##  28.34369

Какую информацию мы видим в выдаче?

Вспомним, как что считается (тут пока всё довольно просто).

\[ t_{\text{набл}} = \frac{\bar{x} - \mu}{\frac{s}{\sqrt{n}}}. \] Можем посчитать результат по этой формуле в R и сверить с ответом из выдачи:

se <- sd(surv$Age) / sqrt(290)  # знаменатель
(mean(surv$Age) - 30) / se  # итог
## [1] -1.886565

Число степеней свободы равно \(\text{df} = n - 1 = 289\). Осталось проверить p-value:

\[ \text{p-value} = P(|t| > -1.886) = 2 \cdot (1 - P(t < 1.886)). \] Посчитаем в R:

pt(1.886, df = 289)  # P(t < 1.886) при df = 289
## [1] 0.9698512
2 * (1 - pt(1.886, df = 289))
## [1] 0.06029762

Всё совпало! Теперь сделаем выводы (примем уровень значимости равным 5%).

Статистический вывод: так как p-value более 0.05, на имеющихся данных на уровне значимости 5% у нас нет оснований отвергнуть нулевую гипотезу.

Содержательный вывод: средний возраст выживших пассажиров «Титаника» равен 30 годам.

Если бы у нас была односторонняя гипотеза, то мы бы сообщили это R явно: тип less для левосторонней альтернативы, тип greater — для правосторонней.

В нашем случае нужно брать левостороннюю альтернативу, так как выборочное среднее (28.34) оказалось меньше среднего в гипотезе (30):

\[ H_1: \mu < 30 \text{ (средний возраст менее 30)} \] Проверим в R:

t.test(surv$Age, mu = 30, alternative = "less") # H1: mu < 30
## 
##  One Sample t-test
## 
## data:  surv$Age
## t = -1.8866, df = 289, p-value = 0.03011
## alternative hypothesis: true mean is less than 30
## 95 percent confidence interval:
##      -Inf 29.79243
## sample estimates:
## mean of x 
##  28.34369

В отличие от предыдущего случая, здесь на 5% уровне значимости нулевую гипотезу следует отвергнуть. Следовательно, мы можем считать, что средний возраст выживших пассажиров на «Титанике» не 30 лет, а меньше.

Критерий Стьюдента для двух выборок

Теперь проверим, правда ли, что средний возраст выживших женщин равен среднему возрасту выживших мужчин.

\[ H_0: \mu_1 = \mu_2 \text{ (средние равны)} \] \[ H_1: \mu_1 \ne \mu_2 \text{ (средние не равны)} \] Проверим в R, используя критерий Стьюдента для двух выборок (точнее, тест Уэлша, он реализуется в R):

t.test(surv$Age ~ surv$Sex)  # группируем по переменной Sex
## 
##  Welch Two Sample t-test
## 
## data:  surv$Age by surv$Sex
## t = 0.7909, df = 158.22, p-value = 0.4302
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -2.353227  5.496616
## sample estimates:
## mean in group female   mean in group male 
##             28.84772             27.27602

Статистический вывод: так как p-value более 0.05, на имеющихся данных на уровне значимости 5% у нас нет оснований отвергнуть нулевую гипотезу.

Содержательный вывод: средний возраст выживших на «Титанике» женщин равен среднему возрасту выживших мужчин.