26 марта 2012

Классические методы статистики: t-критерий Стьюдента



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

Начать, пожалуй, стоит с математических допущений, на которых основан критерий Стьюдента. Основных таких допущений, как известно, два:
  • Сравниваемые выборки должны происходить из нормально распределенных совокупностей;
  • Дисперсии сравниваемых генеральных совокупностей должны быть равны.
Кроме того, в своей исходной форме, t-критерий предполагает независимость сравниваемых выборок.

Проверка указанных требований к данным должна всегда предшествовать формальному статистическому анализу, в котором задействован критерий Стьюдента (к сожалению, многие исследователи забывают об этом). Способы проверки этих требований я рассмотрю в будущих сообщениях. Сейчас же пока отметим, что условие нормальности распределения данных становится не таким жестким при "больших" объемах выборок, а для выборок с разными дисперсиями существует особая модификация t-критерия (критерий Уэлча; см. также ниже).






Одновыборочный t-критерий

Этот вариант критерия Стьюдента служит для проверки нулевой гипотезы о равенстве среднего значения (\(mu_1\)) генеральной совокупности, из которой была взята выборка, некоторому известному значению (\(mu_0\)):

\[H_0: mu_1 = mu_0 \]

В общем виде проверка (= тест) этой гипотезы выполняется при помощи t-критерия, который рассчитывается как отношение разницы между выборочным средним и известным значением к стандартной ошибке выборочного среднего:

 

Рассчитанное значение критерия мы можем далее интерпретировать следующим образом, исходя из свойств t-распределения: если это значение попадает в т.н. область отклонения нулевой гипотезы (см. рисунок ниже), то мы вправе отклонить проверяемую нулевую гипотезу. Область отклонения нулевой гипотезы для критерия Стьюдента определяется заранее принятым уровнем значимости (например, α = 0.05) и числом степеней свободы.


Эквивалентным подходом к интерпретации результатов теста будет следующий: допустив, что нулевая гипотеза верна, мы можем рассчитать, насколько велика вероятность получить t-критерий, равный или превышающий то реальное значение, которое мы рассчитали по имеющимся выборочным данным. Если эта вероятность оказывается меньше, чем заранее принятый уровень значимости (например, Р < 0.05), мы вправе отклонить проверяемую нулевую гипотезу. Именно такой подход сегодня используется чаще всего: исследователи приводят в своих работах P-значение, которое легко рассчитывается при помощи статистических программ. Рассмотрим, как это можно сделать в системе R.

Предположим, у нас имеются данные по суточному потреблению энергии, поступающей с пищей (кДж/сутки), для 11 женщин (пример заимствован из книги Altman D. G. (1981) Practical Statistics for Medical Research, Chapman & Hall, London):

d.intake <- c(5260, 5470, 5640,
  6180, 6390, 6515,
  6805, 7515, 7515,
  8230, 8770)

Среднее значение для этих 11 наблюдений составляет:

mean(d.intake)
[1] 6753.6

Вопрос: отличается ли это выборочное среднее значение от установленной нормы в 7725 кДж/сутки? Разница между нашим выборочным значением и этим нормативом довольно прилична: 7725 - 6753.6 = 971.4. Но насколько велика эта разница статистически? Ответить на этот вопрос поможет одновыборочный t-тест. Как и другие варианты t-теста, одновыборочный тест Стьюдента выполняется в R при помощи функции t.test():

t.test(d.intake, mu = 7725)
 
        One Sample t-test
 
data:  d.intake 
t = -2.8208, df = 10, p-value = 0.01814
alternative hypothesis: true mean is not equal to 7725 
95 percent confidence interval:
 5986.348 7520.925 
sample estimates:
mean of x 
 6753.636

Видим, что для имеющихся выборочных данных t-критерий составляет -2.821 при 10 степенях свободы (df). Вероятность получить такое (либо большее) значение t при условии, что проверяемая нулевая гипотеза верна, оказалась весьма мала: p-value = 0.01814  (во всяком случае, это меньше 5%). Следовательно (см. выше), мы можем отклонить проверяемую нулевую гипотезу о равенстве выборочного среднего значения нормативу и принять альтернативную гипотезу (alternative hypothesis: true mean is not equal to 7725). Делая это, мы рискуем ошибиться с вероятностью менее 5%.

Помимо t-критерия, количества степеней свободы, Р-значения и выборочного среднего (sample estimates: mean of x), программа рассчитала также 95%-ный доверительный интервал (95 percent confidence interval) для истинной разницы между выборочным средним значением суточного потребления энергии и нормативом. Если бы мы повторили аналогичный тест много раз для разных групп из 11 женщин, то в 95% случаев эта разница оказалась бы в диапазоне от 5986.3 до 7520.9 кДж/сутки.


Сравнение двух независимых выборок

При сравнении двух выборок проверяемая нулевая гипотеза состоит в том, что обе эти выборки происходят из нормально распределенных генеральных совокупностей с одинаковыми средними значениями:


Поскольку эти генеральные средние мы оцениваем при помощи выборочных средних значений, формула t-критерия приобретает вид


В знаменателе приведенной формулы находится стандартная ошибка разницы между выборочными средними, которая в общем виде рассчитывается как

\[S_{\bar{x}_1-\bar{x}_2} = \sqrt {\frac{s^2_1}{n_1}+\frac{s^2_2}{n_2}},\]

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

Рассмотрим пример о суточном расходе энергии (expend) у худощавых женщин (lean) и женщин с избыточным весом (obese), приведенный в книге Питера Дальгаарда (Dalgaard P (2008) Introductory statistics with R. Springer). Данные из этого примера (подробнее см. ?energy) входят в состав пакета ISwR, сопровождающего книгу (если он у Вас не установлен, выполните команду install.packages("ISwR")):

library(ISwR)
data(energy)
attach(energy)
energy
   expend stature
1    9.21   obese
2    7.53    lean
3    7.48    lean
4    8.08    lean
5    8.09    lean
6   10.15    lean
7    8.40    lean
8   10.88    lean
9    6.13    lean
10   7.90    lean
11  11.51   obese
12  12.79   obese
13   7.05    lean
14  11.85   obese
15   9.97   obese
16   7.48    lean
17   8.79   obese
18   9.69   obese
19   9.68   obese

Соответствующие средние значения потребления энергии в рассматриваемых группах пациенток составляют (подробнее о примененной ниже функции tapply() см. здесь):

tapply(expend, stature, mean)
lean obese 
8.07 10.30

Вопрос: различаются ли эти средние значения статистически? Проверим гипотезу об отсутствии разницы при помощи t-теста:

t.test(expend ~ stature)
 
        Welch Two Sample t-test
 
data:  expend by stature 
t = -3.8555, df = 15.919, p-value = 0.001411
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -3.459167 -1.004081 
sample estimates:
 mean in group lean mean in group obese 
           8.066154           10.297778

Обратите внимание на использование знака ~ в вызове функции t.test(). Это стандартный для R способ записи формул, описывающих связь между переменными. В нашем случае выражение expend ~ stature можно расшифровать как "зависимость суточного потребления энергии (expend) от статуса пациентки (stature)".

Согласно полученному значению P (p-value = 0.001411), средние значения потребления энергии у женщин из  рассматриваемых весовых групп статистически значимо различаются. Отвергая нулевую гипотезу о равенстве этих средних значений, мы рискуем ошибиться с вероятностью лишь около 0.1%. При этом истинная разница между средними значениями с вероятностью 95% находится в диапазоне от -3.5 до -1.0 (см. 95 percent confidence interval).

Следует подчеркнуть, что при выполнении двухвыборочного t-теста R по умолчанию принимает, что дисперсии сравниваемых совокупностей не равны, и, как следствие, выполняет t-тест в модификации Уэлча (подробнее см. здесь). Мы можем изменить такое поведение программы, воспользовавшись аргументом var.equal = TRUE: (от variance - дисперсия, и equal - равный):

t.test(expend ~ stature, var.equal = TRUE)
 
        Two Sample t-test
 
data:  expend by stature 
t = -3.9456, df = 20, p-value = 0.000799
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -3.411451 -1.051796 
sample estimates:
 mean in group lean mean in group obese 
           8.066154           10.297778

Р-значение стало еще меньше, и мы так же, как и после теста в модификации Уэлча, можем сделать вывод о наличии существенной разницы между средними. Однако такое совпадение выводов будет иметь место не всегда и, следовательно, на разницу между групповыми дисперсиями (или ее отсутствие) следует обращать серьезное внимание при выборе и интерпретации того или иного варианта t-теста.




Сравнение двух зависимых (= парных) выборок



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


Но как в таких случаях оценить наличие эффекта от воздействия статистически? В общем виде критерий Стьюдента можно представить как

 

Нас интересует "истинное значение параметра" - среднее изменение какого-либо количественного признака как результат экспериментального воздействия - обозначим его δ. Оценкой этого истинного параметра является наблюдаемое (выборочное) среднее изменение признака. Тогда t-критерий примет вид


Если нулевая гипотеза заключается в равенстве истинного эффекта нулю, формула для парного критерия Стьюдента примет вид

 

В книге П. Дальгаарда (Dalgaard 2008) имеется пример о суточном потреблении энергии, измеренном у одних и тех же 11 женщин до и после периода менструаций:

data(intake) # из пакета ISwR
attach(intake)
intake
    pre post
1  5260 3910
2  5470 4220
3  5640 3885
4  6180 5160
5  6390 5645
6  6515 4680
7  6805 5265
8  7515 5975
9  7515 6790
10 8230 6900
11 8770 7335

Индивидуальные разницы в потреблении энергии у этих женщин составляют:

post - pre
[1] -1350 -1250 -1755 -1020  -745 -1835 -1540 -1540
[9]  -725 -1330 -1435

Усреднив эти индивидуальные разницы, получим

mean(post - pre)
[1] -1320.5

Задача заключается в том, чтобы оценить, насколько статистически значимо эта средняя разница отличается от нуля. Применим парный критерий Стьюдента (обратите внимание на использование аргумента paired = TRUE):

t.test(pre, post, paired = TRUE)
 
        Paired t-test
 
data:  pre and post 
t = 11.9414, df = 10, p-value = 3.059e-07
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 1074.072 1566.838 
sample estimates:
mean of the differences 
               1320.455

Как видим, рассчитанное программой P-значение оказалось намного меньше 0.05, что позволяет нам сделать заключение о наличии существенной разницы в потреблении энергии у исследованных женщин до и после менструации. Истинная величина эффекта (в абсолютном выражении) с вероятностью 95% находится в интервале от 1074.1 до 1566.8 кДж/сутки.

Приведенные выше примеры охватывают наиболее типичные случаи применения критерия Стьюдента. За рамками этого сообщения остаются т.н. односторонние варианты t-теста, когда проверяемая нулевая гипотеза заключается в том, что одно из сравниваемых средних значений больше (или меньше) другого. Однако можно отметить, что односторонний вариант t-теста легко реализуется при помощи функции t.test() в сочетании с аргументом alternative, который может принимать одно из трех значений - "two.sided" ("двухсторонний"; выбирается программой по умолчанию), "greater" ("больше") или "less" ("меньше").


14 комментариев :

kovalevvn комментирует...

Спасибо за интересную статью, очень подробно и доступно.

Анонимный комментирует...

"Условие нормальности распределения данных становится не таким жестким при "больших" объемах выборок". При "больших" объемах выборок - это сколько???

Сергей Мастицкий комментирует...

Если Вы обратили внимание, слово "больших" взято в кавычки. Этим подчеркивается то обстоятельство, что какое-либо точное "достаточно" большое значение объема выборки назвать фактически невозможно - в разных случаях оно будет разным. Но в литературе часто в качестве своего рода "волшебного" числа приводят 30.

Валентина комментирует...

Благодарю Вас за ответ. Вы мне очень помогли.

Сергей Мастицкий комментирует...

Всегда пожалуйста :)

Анонимный комментирует...

Отличная статья. На редкость отличная.

Анонимный комментирует...

Спасибо за статью! :) Вы очень помогли.

Andreo комментирует...

"Одновыборочный t-критерий

Этот вариант критерия Стьюдента служит для проверки нулевой гипотезы о равенстве выборочного среднего значения некоторому известному значению"

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

Анонимный комментирует...

Как всегда, отличная статья. Хотелось бы только узнать, как получить такой красивый график, где обозначены результаты до и после эксперимента?

Sergey Mastitsky комментирует...

Тот конкретный рисунок был сделан "на быструю руку" просто в Power Point'е :)
Но и в R его можно было бы сделать без проблем. Если пользоваться базовыми функциями, то plot() и lines()

Анонимный комментирует...

Еще одна опечатка: в расчете общей дисперсии (Сравнение двух независимых выборок) под корнем S должны быть в квадрате - там же сумма дисперсий, а не СКО! СКО не аддитивны..

Sergey Mastitsky комментирует...

Спасибо за указание на неточности! Исправил. Надеюсь, сейчас все правильно.

Unknown комментирует...

А кто-то может разницу обьяснить просты языком по параметру alternative. У меня есть данные по испытуемым до и после. Я провел парный тест с параметром по умолчанию "two.sided". Получил p<0.05. А теперь если я проведу такой же тест, но с параметром, например "less". Что в этом случае я померяю?

Анонимный комментирует...

Большое Вам спасибо!

Отправить комментарий