Я пытаюсь понять, что на самом деле вопрос. Этот ответ основан на этом предположении:
Можно ли использовать emmeans()
для выполнения всех независимых t испытаний, сравнивающих несколько образцов, по два за раз?
Объединенные t-тесты: НЕТ (похоже, но не точно)
Ответ на этот вопрос "не совсем". Я проиллюстрирую это данными InsectSprays
в пакете наборов данных . Мы можем приспособить эту aov
модель:
> fm1 <- aov(count ~ spray, data = InsectSprays)
Затем используйте emmeans
для сравнения распылителей:
> library("emmeans")
> pairs(emmeans(fm1, "spray"), adjust = "none")
contrast estimate SE df t.ratio p.value
A - B -0.833 1.6 66 -0.520 0.6045
A - C 12.417 1.6 66 7.755 <.0001
A - D 9.583 1.6 66 5.985 <.0001
A - E 11.000 1.6 66 6.870 <.0001
A - F -2.167 1.6 66 -1.353 0.1806
B - C 13.250 1.6 66 8.276 <.0001
B - D 10.417 1.6 66 6.506 <.0001
B - E 11.833 1.6 66 7.391 <.0001
B - F -1.333 1.6 66 -0.833 0.4080
C - D -2.833 1.6 66 -1.770 0.0814
C - E -1.417 1.6 66 -0.885 0.3795
C - F -14.583 1.6 66 -9.108 <.0001
D - E 1.417 1.6 66 0.885 0.3795
D - F -11.750 1.6 66 -7.339 <.0001
E - F -13.167 1.6 66 -8.223 <.0001
Это выполняет t тестов, сравнивающих два означает за один раз (добавление adjust = "none"
указывает, что нет корректировки множественности, поэтому каждый тест принимается как есть, без ссылки на другой тест). Значения сравниваемых средних значений - это как раз те средства, которые будут сравниваться, если бы вы выполняли t.test()
отдельно для каждой пары выборок. Однако , эти результаты не совсем совпадают с результатами t.test()
, поскольку дисперсия ошибки в fm1
оценивается путем объединения всех 6 выборок вместе, тогда как t.test()
будет использовать изменчивость в только два образца используются в конкретном тесте. Я покажу это явно для сравнения A - B
:
> t.test(count ~ spray, data = InsectSprays, subset = (spray %in% c("A","B")), var.equal = TRUE)
Two Sample t-test
data: count by spray
t = -0.45352, df = 22, p-value = 0.6546
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-4.643994 2.977327
sample estimates:
mean in group A mean in group B
14.50000 15.33333
Обратите внимание, что отношение t немного отличается, и есть 22 df, а не 66, потому что только дисперсии из двух образцов были объединены.
Испытания Уэлча: ДА
Это * Можно использовать аналогичный метод для получения всех t проверяет точно, при разных предположениях, что дисперсии не все равны. Для этого требуется модель, которая не определяет равные отклонения, как aov()
. Вот тот же пример, использующий модель gls()
:
> library("nlme")
> fm2 <- gls(count ~ spray, data = InsectSprays, weights = varIdent(form = ~ 1 | spray))
> pairs(emmeans(fm2, "spray", df.method = "boot"), adjust = "none")
contrast estimate SE df t.ratio p.value
A - B -0.833 1.837 21.8 -0.454 0.6547
A - C 12.417 1.477 14.7 8.407 <.0001
A - D 9.583 1.542 16.7 6.214 <.0001
A - E 11.000 1.451 13.9 7.580 <.0001
A - F -2.167 2.252 20.5 -0.962 0.3473
B - C 13.250 1.358 15.5 9.754 <.0001
B - D 10.417 1.429 17.8 7.289 <.0001
B - E 11.833 1.330 14.5 8.894 <.0001
B - F -1.333 2.177 19.5 -0.613 0.5472
C - D -2.833 0.920 20.9 -3.078 0.0057
C - E -1.417 0.758 21.6 -1.868 0.0754
C - F -14.583 1.882 13.2 -7.748 <.0001
D - E 1.417 0.879 19.6 1.612 0.1229
D - F -11.750 1.934 14.5 -6.076 <.0001
E - F -13.167 1.862 12.7 -7.071 <.0001
Degrees-of-freedom method: satterthwaite
Обратите внимание, что тест сравнения A - B
идентичен тесту t.test()
, который по умолчанию принимает отклонения равными:
> t.test(count ~ spray, data = InsectSprays, subset = (spray %in% c("A","B")))
Welch Two Sample t-test
data: count by spray
t = -0.45352, df = 21.784, p-value = 0.6547
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-4.646182 2.979515
sample estimates:
mean in group A mean in group B
14.50000 15.33333