Как выполнить t-тест для парных выборок в R


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

Например, предположим, что мы хотим знать, значительно ли влияет определенная учебная программа на успеваемость студента на конкретном экзамене. Чтобы проверить это, у нас есть 20 учеников в классе, которые проходят предварительный тест. Затем каждый из студентов участвует в учебной программе каждый день в течение двух недель. Затем учащиеся пересдают тест аналогичной сложности.

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

Как провести парный t-тест

Для проведения парного t-теста мы можем использовать следующий подход:

Шаг 1: Сформулируйте нулевую и альтернативную гипотезы.

Н 0 : мк д = 0

H a : μ d ≠ 0 (двусторонний)
H a : µ d > 0 (односторонний)
H a : µ d < 0 (односторонний)

где μ d — средняя разница.

Шаг 2: Найдите статистику теста и соответствующее значение p.

Пусть a = балл учащегося за первый тест, а b = балл учащегося за второй тест. Чтобы проверить нулевую гипотезу о том, что истинная средняя разница между результатами теста равна нулю:

  • Рассчитайте разницу между каждой парой оценок (d i = b i – a i )
  • Вычислить среднюю разницу (d)
  • Рассчитать стандартное отклонение разностей s d
  • Рассчитайте t-статистику, которая равна T = d / (s d / √n)
  • Найдите соответствующее p-значение для t-статистики с n-1 степенями свободы.

Шаг 3: Отклонить или не отклонить нулевую гипотезу в зависимости от уровня значимости.

Если p-значение меньше выбранного нами уровня значимости, мы отклоняем нулевую гипотезу и делаем вывод о наличии статистически значимой разницы между средними значениями двух групп. В противном случае мы не можем отвергнуть нулевую гипотезу.

Как провести парный t-тест в R

Чтобы провести парный t-тест в R, мы можем использовать встроенную функцию t.test() со следующим синтаксисом:

t.test (x, y, парный = ИСТИНА, альтернативный = «двухсторонний»)

  • x,y: два числовых вектора, которые мы хотим сравнить
  • парный: логическое значение, указывающее, что мы хотим вычислить парный t-тест
  • альтернатива: альтернативная гипотеза. Это может быть установлено на «двусторонний» (по умолчанию), «больше» или «меньше».

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

Создайте данные

Сначала мы создадим набор данных:

#create the dataset
data <- data.frame(score = c(85 ,85, 78, 78, 92, 94, 91, 85, 72, 97,
 84, 95, 99, 80, 90, 88, 95, 90, 96, 89,
 84, 88, 88, 90, 92, 93, 91, 85, 80, 93,
 97, 100, 93, 91, 90, 87, 94, 83, 92, 95),
 group = c(rep('pre', 20), rep('post', 20)))

#view the dataset
data

# score group
#1 85 pre
#2 85 pre
#3 78 pre
#4 78 pre
#5 92 pre
#6 94 pre
#7 91 pre
#8 85 pre
#9 72 pre
#10 97 pre
#11 84 pre
#12 95 pre
#13 99 pre
#14 80 pre
#15 90 pre
#16 88 pre
#17 95 pre
#18 90 pre
#19 96 pre
#20 89 pre
#21 84 post
#22 88 post
#23 88 post
#24 90 post
#25 92 post
#26 93 post
#27 91 post
#28 85 post
#29 80 post
#30 93 post
#31 97 post
#32 100 post
#33 93 post
#34 91 post
#35 90 post
#36 87 post
#37 94 post
#38 83 post
#39 92 post
#40 95 post

Визуализируйте различия

Далее мы рассмотрим сводную статистику двух групп с помощью функций group_by() иsumm() из библиотеки dplyr :

#load *dplyr* library
library(dplyr)

#find sample size, mean, and standard deviation for each group
data %>%
 group_by(group) %>%
 summarise (
 count = n(),
 mean = mean(score),
 sd = sd(score)
 )

# A tibble: 2 x 4
# group count mean sd
# 
#1 post 20 90.3 4.88
#2 pre 20 88.2 7.24

Мы также можем создавать диаграммы с помощью функции boxplot() в R, чтобы просмотреть распределение оценок для групп до и после:

boxplot(score~group,
 data=data,
 main="Test Scores by Group",
 xlab="Group",
 ylab="Score",
 col="steelblue",
 border="black"
) 

Как по сводной статистике, так и по диаграммам мы видим, что средний балл в пост -группе немного выше, чем средний балл в предварительной группе. Мы также можем видеть, что оценки для пост -группы имеют меньшую изменчивость, чем оценки в предварительной группе.

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

Проведите парный t-тест

Прежде чем проводить парный t-критерий, мы должны проверить, что распределение различий нормально (или приблизительно нормально) распределено. Для этого мы можем создать новый вектор, определяемый как разница между оценками до и после, и выполнить тест Шапиро-Уилка на нормальность этого вектора значений:

#define new vector for difference between post and pre scores
differences <- with(data, score[group == "post"] - score[group == "pre"])

#perform shapiro-wilk test for normality on this vector of values
shapiro.test(differences)

# Shapiro-Wilk normality test
#
#data: differences
#W = 0.92307, p-value = 0.1135
#

Значение p теста составляет 0,1135, что больше, чем альфа = 0,05. Таким образом, мы не можем отвергнуть нулевую гипотезу о том, что наши данные нормально распределены. Это означает, что теперь мы можем приступить к проведению парного t-теста.

Мы можем использовать следующий код для проведения парного t-теста:

t.test (score ~ group, data = data, paired = TRUE)

# Paired t-test
#
#data: score by group
#t = 1.588, df = 19, p-value = 0.1288
#alternative hypothesis: true difference in means is not equal to 0
#95 percent confidence interval:
# -0.6837307 4.9837307
#sample estimates:
#mean of the differences 
# 2.15

Из вывода мы видим, что:

  • Тестовая статистика t равна 1,588 .
  • Значение p для этой тестовой статистики с 19 степенями свободы(df) равно 0,1288 .
  • 95% доверительный интервал для средней разницы составляет (-0,6837, 4,9837) .
  • Средняя разница между баллами для группы до и после лечения составляет 2,15 .

Таким образом, поскольку наше p-значение меньше нашего уровня значимости 0,05, мы не сможем отвергнуть нулевую гипотезу о том, что две группы имеют статистически значимые средние значения.

Другими словами, у нас нет достаточных доказательств, чтобы сказать, что средние баллы между группами до и после лечения статистически значимо различаются. Это означает, что учебная программа не оказала существенного влияния на результаты тестов.

Кроме того, наш доверительный интервал 95% говорит о том, что мы «уверены на 95%» в том, что истинная средняя разница между двумя группами находится между -0,6837 и 4,9837 .

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