Teste post hoc após ANOVA com medidas repetidas usando R

24

Realizei ANOVA de medidas repetidas em R, da seguinte maneira:

aov_velocity = aov(Velocity ~ Material + Error(Subject/(Material)), data=scrd)
summary(aov_velocity)
  • Qual sintaxe em R pode ser usada para realizar um teste post hoc após uma ANOVA com medidas repetidas?
  • O teste de Tukey com correção de Bonferroni seria apropriado? Se sim, como isso poderia ser feito no R?
L_T
fonte
1
veja esta questão relacionada em testes post hoc para medidas repetidas projeta stats.stackexchange.com/questions/575/...
Jeromy Anglim
3
Sobre o seu segundo ponto: o HSD de Tukey já inclui uma "correção" para multiplicidade (no nível da estatística do teste, não no nível alfa, como no método de Bonferroni). Portanto, não há necessidade de combinar os dois.
chl
1
@chl: então não precisamos corrigir o nível alfa durante as comparações múltiplas em pares no caso do HSD de Tukey?
stan
3
@stan N ° (Nota: não planeada (post-hoc) ensaios deve ser realizada após a ANOVA revelou um resultado significativo, sobretudo se se trata de uma abordagem de confirmação.)
CHL

Respostas:

20

O que você pode fazer é especificar o modelo lmee, em seguida, usar glhtno multcomppacote para fazer o que você deseja. No entanto, o lme fornece valores F ligeiramente diferentes do que uma ANOVA padrão (veja também minhas perguntas recentes aqui ).

lme_velocity = lme(Velocity ~ Material, data=scrd, random = ~1|Subject)
anova(lme_velocity)

require(multcomp)
summary(glht(lme_velocity, linfct=mcp(Material = "Tukey")), test = adjusted(type = "bonferroni"))

Para outros contrastes, em seguida, bonferroni, veja, por exemplo, o livro multcompdos autores do pacote .

Você também pode querer ver este post na lista R-mailing , e este post para especificar uma ANOVA de medidas repetidas em R .

No entanto, como mostrado nesta minha pergunta, não tenho certeza se essa abordagem é idêntica a uma ANOVA. Além disso, o glht relata apenas valores z em vez dos valores t ou F usuais . Isso também parece incomum.

Até agora, não encontrei outra maneira de fazer isso.

Henrik
fonte
2

Se você deseja manter a aov()função, pode usar o emmeanspacote que pode manipular aovlist(e muitos outros ) objetos.

library("emmeans")
# set orthogonal contrasts
options(contrasts = c("contr.sum", "contr.poly"))

aov_velocity <- aov(Velocity ~ Material + Error(Subject / Material), data = scrd)

Depois de criar um emmGridobjeto da seguinte maneira

emm <- emmeans(aov_velocity, ~ Material)

é muito fácil obter todas as comparações (post hoc) aos pares usando a pairs()função ou qualquer contraste desejado usando a contrast()função do emmeanspacote. Ajustes de teste múltiplo podem ser alcançados através do adjustargumento destas funções:

pairs(emm)  # adjust argument not specified -> default p-value adjustment in this case is "tukey"  

Para obter mais informações, achei as vinhetas emmeans detalhadas e a documentação muito úteis.

Além disso, você pode encontrar um exemplo completo (reproduzível), incluindo uma descrição de como obter os pesos de contraste corretos na minha resposta aqui .

Observe, no entanto, que o uso de um modelo univariado para os testes post hoc pode resultar em valores p anti-conservadores se a esfericidade for violada.

statmerkur
fonte
0

Se a esfericidade for atendida, você poderá executar uma ANOVA bidirecional:

aov_velocity = aov(Velocity~Material+Subject, data=scrd)
posthoc      = TukeyHSD(aov_velocity, 'Material', conf.level=0.95).
Juan José González Henríquez
fonte