Estou tentando executar uma Anova de medidas repetidas em R, seguida de alguns contrastes específicos nesse conjunto de dados. Eu acho que a abordagem correta seria usar
Anova()
o pacote do carro.
Vamos ilustrar minha pergunta com o exemplo retirado do ?Anova
uso dos
OBrienKaiser
dados (Nota: omiti o fator sexo do exemplo):
Temos um design com um fator entre sujeitos, tratamento (3 níveis: controle, A, B) e 2 repetidos fatores de medidas (dentro dos sujeitos), fase (3 níveis: pré-teste, pós-teste, acompanhamento) e hora (5 níveis: 1 a 5).
A tabela ANOVA padrão é dada por (ao contrário do exemplo (Anova), mudei para Soma de quadrados do tipo 3, que é o que meu campo deseja):
require(car)
phase <- factor(rep(c("pretest", "posttest", "followup"), c(5, 5, 5)),
levels=c("pretest", "posttest", "followup"))
hour <- ordered(rep(1:5, 3))
idata <- data.frame(phase, hour)
mod.ok <- lm(cbind(pre.1, pre.2, pre.3, pre.4, pre.5, post.1, post.2, post.3, post.4, post.5, fup.1, fup.2, fup.3, fup.4, fup.5) ~ treatment, data=OBrienKaiser)
av.ok <- Anova(mod.ok, idata=idata, idesign=~phase*hour, type = 3)
summary(av.ok, multivariate=FALSE)
Agora, imagine que a interação de mais alta ordem teria sido significativa (o que não é o caso) e gostaríamos de explorá-la ainda mais com os seguintes contrastes:
Existe uma diferença entre as horas 1 e 2 versus as horas 3 (contraste 1) e entre as horas 1 e 2 versus horas 4 e 5 (contraste 2) nas condições de tratamento (A&B juntas)?
Em outras palavras, como faço para especificar esses contrastes:
((treatment %in% c("A", "B")) & (hour %in% 1:2))
versus((treatment %in% c("A", "B")) & (hour %in% 3))
((treatment %in% c("A", "B")) & (hour %in% 1:2))
versus((treatment %in% c("A", "B")) & (hour %in% 4:5))
Minha idéia seria executar outra ANOVA, omitindo a condição de tratamento não necessária (controle):
mod2 <- lm(cbind(pre.1, pre.2, pre.3, pre.4, pre.5, post.1, post.2, post.3, post.4, post.5, fup.1, fup.2, fup.3, fup.4, fup.5) ~ treatment, data=OBrienKaiser, subset = treatment != "control")
av2 <- Anova(mod2, idata=idata, idesign=~phase*hour, type = 3)
summary(av2, multivariate=FALSE)
No entanto, ainda não tenho idéia de como configurar a matriz de contraste dentro do sujeito apropriada comparando as horas 1 e 2 com 3 e 1 e 2 com 4 e 5. E não tenho certeza se a omissão do grupo de tratamento não necessário é realmente uma boa ideia, pois altera o termo geral do erro.
Antes de ir, Anova()
eu também estava pensando em ir lme
. No entanto, existem pequenas diferenças nos valores de F ep entre a ANOVA do livro e o que é retornado anove(lme)
devido a possíveis variações negativas na ANOVA padrão (que não são permitidaslme
). Da mesma forma, alguém me indicou o gls
que permite o ajuste de medidas repetidas ANOVA, no entanto, não há argumento de contraste.
Para esclarecer: eu quero um teste F ou t (usando somas de quadrados do tipo III) que responda se os contrastes desejados são significativos ou não.
Atualizar:
Eu já fiz uma pergunta muito semelhante no R-help, não houve resposta .
Perguntas semelhantes foram feitas no R-help há algum tempo. No entanto, as respostas também não resolveram o problema.
Atualização (2015):
Como essa pergunta ainda gera alguma atividade, especificar teses e basicamente todos os outros contrastes agora pode ser feito de maneira relativamente fácil com o afex
pacote em combinação com o lsmeans
pacote, conforme descrito na vinheta afex .
treatment
, 3) para cada pessoa média acima dos níveis deprePostFup
, 4) para cada pessoa média durante horas 1,2 (= grupo de dados 1) bem como durante as horas 3,4 (= grupo de dados 2), 5) execute o teste t para 2 grupos dependentes. Como Maxwell e Delaney (2004), bem como Kirk (1995), desencorajam contrastes com um termo de erro comum em projetos internos, essa poderia ser uma alternativa simples.Respostas:
Esse método geralmente é considerado "antiquado", portanto, embora seja possível, a sintaxe é difícil e suspeito que menos pessoas saibam como manipular os comandos anova para obter o que deseja. O método mais comum é usar
glht
com um modelo baseado em probabilidade denlme
oulme4
. (Eu certamente sou bem-vindo ao provar que estou errado com outras respostas.)Dito isto, se eu precisasse fazer isso, não me incomodaria com os comandos anova; Eu apenas ajustaria o modelo equivalente usando
lm
, escolheria o termo de erro correto para esse contraste e calcularia o teste F (ou equivalente, teste t, pois há apenas 1 df). Isso exige que tudo seja equilibrado e tenha esfericidade, mas, se você não tiver, provavelmente deverá usar um modelo baseado em probabilidade de qualquer maneira. Você pode corrigir um pouco a não-esfericidade usando as correções de Greenhouse-Geiser ou Huynh-Feldt que (acredito) usam a mesma estatística F, mas modificam o df do termo de erro.Se você realmente deseja usar
car
, poderá achar úteis as vinhetas de heplot ; eles descrevem como as matrizes nocar
pacote são definidas.Usando o método de caracal (para os contrastes 1 e 2 - 3 e 1 e 2 - 4 e 5), recebo
É assim que eu obteria os mesmos valores p:
Remodele os dados em formato longo e execute
lm
para obter todos os termos do SS.Faça uma matriz de contraste alternativa para o período da hora.
Verifique se meus contrastes dão o mesmo SS que os contrastes padrão (e os mesmos do modelo completo).
Obtenha o SS e o df apenas para os dois contrastes que eu quero.
Obtenha os valores-p.
Opcionalmente, ajuste a esfericidade.
fonte
heplots
vinheta, esse é realmente um bom resumo do que está acontecendo em termos do modelo linear geral.Se você quiser / precisar usar contrastes com o termo de erro agrupado da ANOVA correspondente, faça o seguinte. Infelizmente, isso será longo e não sei como fazer isso de maneira mais conveniente. Ainda assim, acho que os resultados estão corretos, pois são verificados contra Maxwell & Delaney (veja abaixo).
Você deseja comparar grupos do seu primeiro fator
hour
dentro de um projeto SPF-p.qr (notação de Kirk (1995): Projeto fatorial de plotagem dividida 1 entre fatortreatment
com grupos p, primeiro dentro do fatorhour
com grupos q, segundo dentro do fatorprePostFup
com grupos). A seguir, assume-setreatment
grupos de tamanho idêntico e esfericidade.Primeiro, observe que o efeito principal de
hour
é o mesmo após a média da médiaprePostFup
, passando para o design mais simples do SPF-pq que contém apenastreatment
ehour
como IVs.Agora observe que no SPF-pq ANOVA, o efeito de
hour
é testado contra a interaçãoid:hour
, ou seja, essa interação fornece o termo de erro para o teste. Agora, os contrastes parahour
grupos podem ser testados como em uma ANOVA de via única entre os sujeitos, simplesmente substituindo o termo de erro e os graus de liberdade correspondentes. A maneira mais fácil de obter o SS e o df dessa interação é ajustar o modelolm()
.Mas também vamos calcular tudo manualmente aqui.
hour:id
Anova()
car
fonte