Eu realizei uma ANOVA de três medidas repetidas; que análises post-hoc são válidas?
Este é um design totalmente equilibrado (2x2x2) com um dos fatores que possui uma medida repetida dentro dos sujeitos. Estou ciente das abordagens multivariadas para ANOVA de medidas repetidas em R, mas meu primeiro instinto é prosseguir com um estilo simples de ANOVA aov ():
aov.repeated <- aov(DV ~ IV1 * IV2 * Time + Error(Subject/Time), data=data)
DV = variável de resposta
IV1 = variável independente 1 (2 níveis, A ou B)
IV2 = variável independente 2 (2 níveis, Sim ou Não)
IV3 = Tempo (2 níveis, Antes ou Depois)
Assunto = ID do sujeito (40 indivíduos no total, 20 para cada nível de 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
Como alternativa, eu estava pensando em usar o pacote nlme para uma ANOVA no estilo 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
Meu primeiro instinto post-hoc de interações bidirecionais significativas com Tukey contrasta usando glht () do pacote 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
O principal problema que vejo nessas análises post-hoc são algumas comparações que não são úteis para minhas hipóteses.
Quaisquer sugestões para uma análise post-hoc apropriada são muito apreciadas, obrigado.
Editar: pergunta e resposta relevantes que apontam para o teste de matrizes de contraste manuais
fonte
/
é usado para denotar aninhamento (como normalmente visto em um experimento de plotagem dividida), diferentemente de seu uso noError
termoaov()
em que indica principalmente como criar estratos de erro .Error
termoaov()
dessa maneira para especificar queTime
é o fator dentro dos grupos. De BaronError(subj/(color + shape))
parece ser usado da mesma maneira.lme
modelo, não estou claro sobre o uso adequado de/
. Como você especificarTime
como o fator dentro de-grupos como naError()
comaov()
?Respostas:
Acho que os estatísticos lhe dirão que sempre há um problema com qualquer análise post hoc, porque ver os dados pode influenciar o que você olha e você pode ser tendencioso porque está procurando resultados significativos. A FDA em estudos de ensaios clínicos exige que o plano estatístico seja completamente descrito no protocolo. em um modelo linear, você certamente poderia pré-especificar os contrastes que gostaria de examinar caso a ANOVA ou a ANCOVA encontre uma diferença geral. Tais contrastes pré-especificados seriam bons de olhar, desde que o tratamento usual para a multiplicidade também faça parte dele.
fonte
R
. Especificamente, não tenho certeza se é mais apropriado especificar manualmente matrizes de contraste para os contrastes relevantes de Tukey usandoglht()
ou executar todas as comparações por padrão. Além disso, não sei como lidar adequadamente com a medida repetida deTime
em termos de post-hoc.Se você possui um pacote de software como o SAS, provavelmente utilizaria proc mixed para executar o modelo misto de medidas repetidas e se especificar qual contraste deseja usar o SAS o tratará adequadamente para você. Você também pode fazer isso com a opção repetida no PROC GLM, mas tenha cuidado, pois eles se comportam de maneira diferente e fazem suposições diferentes. As observações repetidas são geralmente corrigidas porque têm algo em comum. Frequentemente, tenho repetido medidas no mesmo paciente em diferentes momentos. Assim, ao calcular os contrastes, os termos de covariância entram no problema.
fonte