Независимый t-тест с aov-объектом в R - PullRequest
0 голосов
/ 05 февраля 2020

Есть ли простой способ вычисления независимых t-тестов с объектом aov, подобный тому, как парные сравнения могут быть вычислены с помощью pairs(emmeans(aov.object,~variable)?

1 Ответ

0 голосов
/ 06 февраля 2020

Я пытаюсь понять, что на самом деле вопрос. Этот ответ основан на этом предположении:

Можно ли использовать 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 
...