Когда и как применять Критерий Стьюдента (t-test), проверка нормальности данных в среде R

 t-тест простыми словамиНаступила осень, а значит, настало время для запуска нового тематического проекта "Статистический анализ с R". В нем мы рассмотрим статистические методы с точки зрения их применения на практике: узнаем какие методы существуют, в каких случаях и каким образом их проводить в среде R. На мой взгляд, Критерий Стьюдента или t-тест (от англ. t-test) идеально подходит в качестве введения в мир статистического анализа. Тест Стьюдента достаточно прост и показателен, а также требует минимум базовых знаний в статистике, с которыми читатель может ознакомиться в ходе прочтения этой статьи.

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

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

Что такое t-тест и в каких случаях его стоит применять

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

автор Стьюдент Любопытно, что создал этот метод Уильямом Госсет - химик, приглашенный работать на фабрику Guinness. Разработанный им тест служил изначально для оценки качества пива. Однако, химикам фабрики запрещалось независимо публиковать научные работы под своим именем. Поэтому в 1908 году Уильям опубликовал свою статью в журнале "Biometrika" под псевдонимом "Стьюдент". Позже, выдающийся математик и статистик Рональд Фишер доработал метод, который затем получил массовое распространение под названием Student's t-test.

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

Нормальное распределение данных и методы его оценки qqplot и shapiro.test

Нормальное распределение данных характерно для количественных данных, на распределение которых влияет множество факторов, либо оно случайно. Нормальное распределение характеризуется несколькими особенностями:

  • Оно всегда симметрично и имеет форму колокола.
  • Значения среднего и медианы совпадают.
  • В пределах одного стандартного отклонения в обе стороны лежат 68.2% всех данных, в пределах двух - 95,5%, в пределах трех - 99,7%

 rnorm нормальное распределениеДавайте создадим случайную выборку с нормальным распределением на языке программирования R, где общее количество измерений = 100, среднее арифметическое = 5, а стандартное отклонение = 1. Затем отобразим его на графике в виде гистограммы:

mydata <- rnorm(100, mean = 5, sd = 1)
hist(mydata, col = "light green")

Ваш график может слегка отличаться от моего, так как числа сгенерированы случайным образом. Как Вы видите, данные не идеально симметричны, но кажется сохраняют форму нормального распределения. Однако, мы воспользуемся более объективными методами определения нормальности данных.

график qqplot

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

install.packages("car") #установка пакета "car"
library(car) #загрузка пакета "car" в среду R
qqPlot(mydata) #запустим тест

Как видно из графика, наши данные не имеют серьезных отклонений от теоретического нормального распределения. Но порой при помощи qqplot невозможно дать однозначный ответ. В этом случае следует использовать тест Шапиро-Уилка, который основан на нулевой гипотезе, что наши данные распределены нормально. Если же P-значение менее 0.05 (p-value < 0.05), то мы вынуждены отклонить нулевую гипотезу. P-значение в этом случае будет говорить о том, что вероятность ошибки при отклонении нулевой гипотезы будет равна менее 5%.

Тест Шапиро shapiro-testПровести тест Шапиро-Уилка в R не составит труда. Для этого нужно всего лишь вызвать функцию shapiro.test, и в скобках вставить имя ваших данных. В нашем случае p-value должен быть значительно больше 0.05, что не позволяет отвергнуть нулевую гипотезу о том, что наши данные распределены нормально.

Запускаем t-тест Стьюдента в среде R

Итак, если данные из выборок имеют нормальное распределение, можно смело приступать к сравнению средних этих выборок. Существует три основных типа t-теста, которые применяются в различных ситуациях. Рассмотрим каждый из них с использованием наглядных примеров.

Одновыборочный критерий Стьюдента (one-sample t-test)

Одновыборочный t-тест следует выбирать, если Вы сравниваете выборку с общеизвестным средним. Например, отличается ли средний возраст жителей Северо-Кавказского Федерального округа от общего по России. Существует мнение, что климат Кавказа и культурные особенности населяющих его народов способствуют продлению жизни. Для того, чтобы проверить эту гипотезу, мы возьмем данные РосСтата (таблицы среднего ожидаемого продолжительности жизни по регионам России) и применим одновыборочный критерий Стьюдента. Так как критерий Стьюдента основан на проверке статистических гипотез, то за нулевую гипотезу будем принимать то, что различий между средним ожидаемым уровнем продолжительности по России и республикам Северного Кавказа нет. Если различия существуют, то для того, чтобы считать их статистически значимыми p-value должно быть менее 0.05 (логика та же, что и в вышеописанном тесте Шапиро-Уилка).

Загрузим данные в R. Для этого, создадим вектор со средними значениями по республикам Кавказа (включая Адыгею). Затем, запустим одновыборочный t-тест, указав в параметре mu среднее значение ожидаемого возраста жизни по России равное 70.93.

rosstat <-c(79.42, 75.83, 74.16, 73.91, 73.82, 73.06, 72.01)
qqPlot(rosstat)
shapiro.test(rosstat)
t.test(rosstat, mu = 70.93)

Несмотря на то, что у нас всего 7 точек в выборке, в целом они проходят тесты нормальности и мы можем на них полагаться, так как эти данные уже были усреднены по региону.

Результаты t-тестРезультаты t-теста говорят о том, что средняя ожидаемая продолжительность жизни у жителей Северного Кавказа (74.6 лет) действительно выше, чем в среднем по России (70.93 лет), а результаты теста являются статистически значимыми (p < 0.05).

Двувыборочный для независимых выборок (independent two-sample t-test)

Двувыборочный t-тест используется, когда Вы сравниваете две независимые выборки. Допустим, мы хотим узнать, отличается ли урожайность картофеля на севере и на юге какого-либо региона. Для этого, мы собрали данные с 40 фермерских хозяйств: 20 из которых располагались на севере и сформировали выборку "North", а остальные 20 - на юге, сформировав выборку "South".

Загрузим данные в среду R. Кроме проверки нормальности данных, будет полезно построить "график с усами", на котором можно видеть медианы и разброс данных для обеих выборок.

North <- c(122, 150, 136, 129, 169, 158, 132, 162, 143, 179, 139, 193, 155, 160, 165, 149, 173, 173, 141, 166)
qqPlot(North)
shapiro.test(North)

South <- c(170, 163, 178, 150, 166, 142, 157, 149, 151, 164, 163, 161, 159, 139, 180, 155, 144, 139, 151, 160)
qqPlot(North)
shapiro.test(North)

boxplot(North, South)

Как видно из графика, медианы выборок не сильно отличаются друг от друга, однако разброс данных гораздо сильнее на севере. Проверим отличаются ли статистически средние значения при помощи функции t.test. Однако в этот раз на место параметра mu мы ставим имя второй выборки. Результаты теста, которые Вы видите на рисунке снизу, говорят о том, что средняя урожайность картофеля на севере статистически не отличается от урожайности на юге (p = 0.6339).

Критерий Стьюдента в R

Двувыборочный для зависимых выборок (dependent two-sample t-test)

Третий вид t-теста используется в том случае, если элементы выборок зависят друг от друга. Он идеально подходит для проверки повторяемости результатов эксперимента: если данные повтора статистически не отличаются от оригинала, то повторяемость данных высокая. Также двувыборочный критерий Стьюдента для зависимых выборок широко применяется в медицинских исследованиях при изучении эффекта лекарства на организм до и после приема.

Для того, чтобы запустить его в R, следует ввести все ту же функцию t.test. Однако, в скобках, после таблиц данных, следует ввести дополнительный аргумент paired = TRUE. Этот аргумент говорит о том, что Ваши данные зависят друг от друга. Например:

t.test(experiment, povtor.experimenta, paired = TRUE)
t.test(davlenie.do.priema, davlenie.posle.priema, paired = TRUE)

Также в функции t.test существует два дополнительных аргумента, которые могут улучшить качество результатов теста: var.equal и alternative. Если вы знаете, что вариация между выборками равна, вставьте аргумент var.equal = TRUE. Если же вы хотите проверить гипотезу о том, что разница между средними в выборках значительно меньше или больше 0, то введите аргумент alternative="less" или alternative="greater" (по умолчанию альтернативная гипотеза говорит о том, что выборки просто отличаются друг от друга: alternative="two.sided").

Заключение

Статья получилась довольно длинной, зато теперь Вы знаете: что такое критерий Стьюдента и нормальное распределение; как при помощи функций qqplot и shapiro.test проверять нормальность данных в R; а также разобрали три типа t-тестов и провели их в среде R.

Тема для тех, кто только начинает знакомиться со статистическим анализом - непростая. Поэтому не стесняйтесь, задавайте вопросы, я с удовольствием на них отвечу. Гуру статистики, пожалуйста поправьте меня, если где-нибудь допустил ошибку. В общем, пишите Ваши комментарии, друзья!

Комментарии: 4
  1. Виталий
    http://vitbash.ru

    «Результаты t-теста говорят о том, что средняя ожидаемая продолжительность жизни у жителей Северного Кавказа (74.6 лет) действительно выше, чем в среднем по России (70.93 лет), а результаты теста являются статистически значимыми (p < 0.001)."

    Вы не ошиблись со значением p? В тесте оно 0,007, а дальше вы пишите, что p < 0.001. Вероятно имеется ввиду p < 0.05.

    1. Samoedd (Автор записи)
      https://samoedd.com

      Здравствуйте, Виталий!
      Спасибо, что сообщили. Очепятка исправлена:-)

  2. Эсмира

    Добрый вечер! Как Вы доступно и легко объясняете!Спасибо!
    Что Вы можете рассказать о тесте Колмогорова-Смирнова, тест пропорций и биноминальном тесте? в каких случаях их лучше использовать?

    1. Samoedd (Автор записи)
      https://samoedd.com

      Вам спасибо, что читаете этот блог! Я думаю написать о некоторых из этих тестов в Августе-Сентябре этого года. Пока работаю над другими статьями (про R пакеты).

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *