Przeprowadziłem ANOVA z powtarzanymi potrójnymi pomiarami; jakie analizy post-hoc są ważne?
Jest to w pełni zbalansowany projekt (2x2x2) z jednym z czynników powtarzających się w obrębie badanych osób. Jestem świadomy wielowymiarowego podejścia do ANOVA z powtarzanymi pomiarami w R, ale moim pierwszym instynktem jest przejście do prostej ANOVA w stylu aov ():
aov.repeated <- aov(DV ~ IV1 * IV2 * Time + Error(Subject/Time), data=data)
DV = zmienna odpowiedzi
IV1 = zmienna niezależna 1 (2 poziomy, A lub B)
IV2 = zmienna niezależna 2 (2 poziomy, tak lub nie)
IV3 = Czas (2 poziomy, Przed lub Po)
Obiekt = ID podmiotu (40 wszystkich przedmiotów, 20 dla każdego poziomu IV1: nA = 20, nB = 20)
summary(aov.repeated)
Error: Subject
Df Sum Sq Mean Sq F value Pr(>F)
IV1 1 5969 5968.5 4.1302 0.049553 *
IV2 1 3445 3445.3 2.3842 0.131318
IV1:IV2 1 11400 11400.3 7.8890 0.007987 **
Residuals 36 52023 1445.1
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Error: Subject:Time
Df Sum Sq Mean Sq F value Pr(>F)
Time 1 149 148.5 0.1489 0.701906
IV1:Time 1 865 864.6 0.8666 0.358103
IV2:Time 1 10013 10012.8 10.0357 0.003125 **
IV1:IV2:Time 1 852 851.5 0.8535 0.361728
Residuals 36 35918 997.7
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Alternatywnie, myślałem o użyciu pakietu nlme dla ANOVA w stylu lme:
aov.repeated2 <- lme(DV ~ IV1 * IV2 * Time, random = ~1|Subject/Time, data=data)
summary(aov.repeated2)
Fixed effects: DV ~ IV1 * IV2 * Time
Value Std.Error DF t-value p-value
(Intercept) 99.2 11.05173 36 8.975972 0.0000
IV1 19.7 15.62950 36 1.260437 0.2156
IV2 65.9 15.62950 36 4.216385 0.0002 ***
Time 38.2 14.12603 36 2.704228 0.0104 *
IV1:IV2 -60.8 22.10346 36 -2.750701 0.0092 **
IV1:Time -26.2 19.97722 36 -1.311494 0.1980
IV2:Time -57.8 19.97722 36 -2.893295 0.0064 **
IV1:IV2:Time 26.1 28.25206 36 0.923826 0.3617
Mój pierwszy instynkt post hoc znaczących dwukierunkowych interakcji z Tukey kontrastuje za pomocą glht () z pakietu multcomp:
data$IV1IV2int <- interaction(data$IV1, data$IV2)
data$IV2Timeint <- interaction(data$IV2, data$Time)
aov.IV1IV2int <- lme(DV ~ IV1IV2int, random = ~1|Subject/Time, data=data)
aov.IV2Timeint <- lme(DV ~ IV2Timeint, random = ~1|Subject/Time, data=data)
IV1IV2int.posthoc <- summary(glht(aov.IV1IV2int, linfct = mcp(IV1IV2int = "Tukey")))
IV2Timeint.posthoc <- summary(glht(aov.IV2Timeint, linfct = mcp(IV2Timeint = "Tukey")))
IV1IV2int.posthoc
#A.Yes - B.Yes == 0 0.94684
#B.No - B.Yes == 0 0.01095 *
#A.No - B.Yes == 0 0.98587 I don't care about this
#B.No - A.Yes == 0 0.05574 . I don't care about this
#A.No - A.Yes == 0 0.80785
#A.No - B.No == 0 0.00346 **
IV2Timeint.posthoc
#No.After - Yes.After == 0 0.0142 *
#Yes.Before - Yes.After == 0 0.0558 .
#No.Before - Yes.After == 0 0.5358 I don't care about this
#Yes.Before - No.After == 0 0.8144 I don't care about this
#No.Before - No.After == 0 0.1941
#No.Before - Yes.Before == 0 0.8616
Głównym problemem, jaki widzę w tych analizach post-hoc, są niektóre porównania, które nie są przydatne w moich hipotezach.
Dziękujemy za wszelkie sugestie dotyczące odpowiedniej analizy post-hoc.
Edycja: Odpowiednie pytanie i odpowiedź wskazujące na przetestowanie ręcznych matryc kontrastowych
źródło
/
jest używany do oznaczania zagnieżdżenia (jak zwykle widać w eksperymencie z podzieloną fabułą), w przeciwieństwie do jego zastosowania w zakresie,Error
waov()
którym wskazuje głównie, jak budować warstwy błędów .Error
termin waov()
ten sposób, aby określić, żeTime
jest to czynnik wewnątrz grup. Od BaronaError(subj/(color + shape))
wydaje się być używany w ten sam sposób.lme
modelu, nie jestem pewien , jak prawidłowo go używać/
. Jak określiłbyśTime
jako czynnik wewnątrz grup jak wError()
przypadkuaov()
?Odpowiedzi:
Myślę, że statystycy powiedzą ci, że zawsze jest problem z każdą analizą post hoc, ponieważ widzenie danych może wpływać na to, na co patrzysz, i możesz być stronniczy, ponieważ polujesz na znaczące wyniki. FDA w badaniach klinicznych wymaga, aby plan statystyczny był całkowicie zapisany w protokole. w modelu liniowym z pewnością można wcześniej określić kontrasty, na które chciałbyś spojrzeć w przypadku, gdy ANOVA lub ANCOVA znajdzie ogólną różnicę. Takie uprzednio określone kontrasty byłyby w porządku, o ile tylko ich częścią jest zwykłe leczenie mnogości.
źródło
R
. W szczególności nie jestem pewien, czy najbardziej odpowiednie jest ręczne określenie macierzy kontrastu dla odpowiednich kontrastów Tukey za pomocąglht()
lub domyślne wykonanie wszystkich porównań. Ponadto nie jestem pewien, jak właściwie radzić sobie z powtarzaną miarąTime
post-hoc.Jeśli masz pakiet oprogramowania, taki jak SAS, prawdopodobnie użyłbyś proc mixed do wykonania modelu mieszanego z powtarzanymi pomiarami i jeśli określisz, który kontrast chcesz użyć SAS, odpowiednio go obsłuży. Możesz to również zrobić z powtarzającą się opcją w PROC GLM, ale bądź ostrożny, ponieważ zachowują się inaczej i przyjmują różne założenia. Powtarzające się obserwacje są zwykle skorygowane, ponieważ mają coś wspólnego. Często powtarzałem pomiary u tego samego pacjenta w różnych punktach czasowych. Tak więc przy obliczaniu kontrastów w grę wchodzą terminy kowariancji.
źródło