Как исключить нежелательные сравнения в двухстороннем ANOVA в R
Я уже спрашивал об этом на stats.exchange ( оригинальный вопрос), теперь я снова разместил здесь тот же контент - в надежде получить помощь от более широкого населения.
Я хотел бы знать, как исключить все нежелательные пары из вывода, сгенерированного из двухстороннего ANOVA, поэтому, когда там показан значительный результат из резюме (aov()), дополнительный тест не даст мне никаких сравнений Я не хочу Подробности следующим образом:
я имею datTable
содержат данные о пропорции под два фактора site
(четыре уровня: A, B, C, D) и treatment
(два уровня: контроль и лечение). В частности, я хочу сделать попарный тест среди всех site
под каждым же treatment
(например, контроль-A VS. контроль-B, контроль-A VS.control-C, обработанный-A VS.treated-C и т. д.), но исключает сравнения между различными sites
и разные treatments
(например, пары, такие как контроль-A VS. обработано-B, контроль-B VS. обработано-C).
Данные выглядят так:
> datTable
site treatment proportion
A control 0.5000000
A control 0.4444444
A treated 0.1000000
A treated 0.4000000
B control 0.4444444
B control 0.4782609
B treated 0.0500000
B treated 0.3000000
C control 0.3214286
C control 0.4705882
C treated 0.1200000
C treated 0.4000000
D control 0.3928571
D control 0.4782609
D treated 0.4000000
D treated 0.4100000
Я сделал двусторонний ANOVA (также не уверен, следует ли использовать в рамках темы site/treatment
или между темой site*treatment
...) и подвел итоги.
m1 <- aov(proportion~site*treatment,data=datTable) # Or should I use 'site/treatment'?
Тогда мой summary(m1)
дал мне следующее:
> summary(m1)
Df Sum Sq Mean Sq F value Pr(>F)
site 3 0.02548 0.00849 0.513 0.6845
treatment 1 0.11395 0.11395 6.886 0.0305 *
site:treatment 3 0.03686 0.01229 0.742 0.5561
Residuals 8 0.13239 0.01655
Следующим шагом является использование TukeyHSD
апостериорный тест, чтобы увидеть, какая пара фактически вызвала *
значение в site
фактор.
> TukeyHSD(m1)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = proportion ~ site * treatment, data = datTable)
$site
diff lwr upr p adj
B-A -0.042934783 -0.3342280 0.2483585 0.9631797
C-A -0.033106909 -0.3244002 0.2581863 0.9823452
D-A 0.059168392 -0.2321249 0.3504616 0.9124774
C-B 0.009827873 -0.2814654 0.3011211 0.9995090
D-B 0.102103175 -0.1891901 0.3933964 0.6869754
D-C 0.092275301 -0.1990179 0.3835685 0.7461309
$treatment
diff lwr upr p adj
treated-control -0.1687856 -0.3171079 -0.02046328 0.0304535
$`site:treatment`
diff lwr upr p adj
B:control-A:control -0.010869565 -0.5199109 0.4981718 1.0000000
C:control-A:control -0.076213819 -0.5852551 0.4328275 0.9979611
D:control-A:control -0.036663216 -0.5457045 0.4723781 0.9999828
A:treated-A:control -0.222222222 -0.7312635 0.2868191 0.6749021
B:treated-A:control -0.297222222 -0.8062635 0.2118191 0.3863364 # Not wanted
C:treated-A:control -0.212222222 -0.7212635 0.2968191 0.7154690 # Not wanted
D:treated-A:control -0.067222222 -0.5762635 0.4418191 0.9990671 # Not wanted
C:control-B:control -0.065344254 -0.5743856 0.4436971 0.9992203
D:control-B:control -0.025793651 -0.5348350 0.4832477 0.9999985
A:treated-B:control -0.211352657 -0.7203940 0.2976887 0.7189552 # Not wanted
B:treated-B:control -0.286352657 -0.7953940 0.2226887 0.4233804 # Not wanted
C:treated-B:control -0.201352657 -0.7103940 0.3076887 0.7583437 # Not wanted
D:treated-B:control -0.056352657 -0.5653940 0.4526887 0.9996991
D:control-C:control 0.039550603 -0.4694907 0.5485919 0.9999713
A:treated-C:control -0.146008403 -0.6550497 0.3630329 0.9304819 # Not wanted
B:treated-C:control -0.221008403 -0.7300497 0.2880329 0.6798628 # Not wanted
C:treated-C:control -0.136008403 -0.6450497 0.3730329 0.9499131
D:treated-C:control 0.008991597 -0.5000497 0.5180329 1.0000000 # Not wanted
A:treated-D:control -0.185559006 -0.6946003 0.3234823 0.8168230 # Not wanted
B:treated-D:control -0.260559006 -0.7696003 0.2484823 0.5194129 # Not wanted
C:treated-D:control -0.175559006 -0.6846003 0.3334823 0.8505865 # Not wanted
D:treated-D:control -0.030559006 -0.5396003 0.4784823 0.9999950
B:treated-A:treated -0.075000000 -0.5840413 0.4340413 0.9981528
C:treated-A:treated 0.010000000 -0.4990413 0.5190413 1.0000000
D:treated-A:treated 0.155000000 -0.3540413 0.6640413 0.9096378
C:treated-B:treated 0.085000000 -0.4240413 0.5940413 0.9960560
D:treated-B:treated 0.230000000 -0.2790413 0.7390413 0.6429921
D:treated-C:treated 0.145000000 -0.3640413 0.6540413 0.9326207
Тем не менее, есть некоторые пары, которые я не хочу включать в двухсторонний ANOVA, который я предварительно сформировал, определяя как # not wanted
,
Есть ли способ, которым я могу настроить aov
или же TukeyHSD
функция для исключения тех возможностей ("ненужных"), которые я перечислил выше? Я мог бы легко выбрать значительный интерес, который мне интересен (с *
) из длинного списка, произведенного из TukeyHSD
, Но я не хочу, чтобы мой результат от anova был предвзятым! (В реальных данных случается, что значение на самом деле вызвано этими нежелательными парами!)
NB: Вы могли заметить, что site:treatment
Специальные тесты не показывают никакой значимости, потому что я выбрал только небольшую выборку из исходных данных.
1 ответ
Если вы хотите полностью исключить эти сравнения из расчетов, тест Тьюки работает, выполняя попарные сравнения для всех комбинаций условий. Не имеет смысла "исключать" любые пары.
Если вы имеете в виду, что хотите исключить нежелательные сравнения из показа в ваших окончательных результатах, то да, это возможно. Результатом TukeyHSD является просто список и site:treatment
это просто матрица, которой вы можете манипулировать, как вам нравится.
lst <- TukeyHSD(m1)
lst[['site:treatment']] <- lst[['site:treatment']][-c(5,6,7,10,11,12,15,16,18,19,20,21),]