Estou analisando os resultados de um experimento de tempo de reação em R.
Executei uma ANOVA de medidas repetidas (1 fator dentro do sujeito com 2 níveis e 1 fator entre sujeitos com 2 níveis). Eu executei um modelo misto linear semelhante e queria resumir os resultados anteriores na forma de tabela ANOVA usando lmerTest::anova
.
Não me interpretem mal: não esperava resultados idênticos, mas não tenho certeza sobre os graus de liberdade nos lmerTest::anova
resultados. Parece-me que reflete antes uma ANOVA sem agregação no nível de assunto.
Estou ciente do fato de que calcular graus de liberdade em modelos de efeito misto é complicado, mas lmerTest::anova
é mencionado como uma solução possível no ?pvalues
tópico atualizado ( lme4
pacote).
Este cálculo está correto? Os resultados lmerTest::anova
refletem corretamente o modelo especificado?
Atualização: Eu fiz as diferenças individuais maiores. Os graus de liberdade lmerTest::anova
são mais diferentes da anova simples, mas ainda não tenho certeza, por que eles são tão grandes para o fator / interação dentro do sujeito.
# mini example with ANT dataset from ez package
library(ez); library(lme4); library(lmerTest)
# repeated measures ANOVA with ez package
data(ANT)
ANT.2 <- subset(ANT, !error)
# update: make individual differences larger
baseline.shift <- rnorm(length(unique(ANT.2$subnum)), 0, 50)
ANT.2$rt <- ANT.2$rt + baseline.shift[as.numeric(ANT.2$subnum)]
anova.ez <- ezANOVA(data = ANT.2, dv = .(rt), wid = .(subnum),
within = .(direction), between = .(group))
anova.ez
# similarly with lmer and lmerTest::anova
model <- lmer(rt ~ group * direction + (1 | subnum), data = ANT.2)
lmerTest::anova(model)
# simple ANOVA on all available data
m <- lm(rt ~ group * direction, data = ANT.2)
anova(m)
Resultados do código acima [ atualizado ]:
anova.ez
$ ANOVA
Effect DFn DFd F p p<.05 ges
2 group 1 18 2.6854464 0.11862957 0.1294475137
3 direction 1 18 0.9160571 0.35119193 0.0001690471
4 group:direction 1 18 4.9169156 0.03970473 * 0.0009066868
lmerTest :: anova (modelo)
Analysis of Variance Table of type 3 with Satterthwaite
approximation for degrees of freedom
Df Sum Sq Mean Sq F value Denom Pr(>F)
group 1 13293 13293 2.6830 18 0.1188
direction 1 1946 1946 0.3935 5169 0.5305
group:direction 1 11563 11563 2.3321 5169 0.1268
anova (m)
Analysis of Variance Table
Response: rt
Df Sum Sq Mean Sq F value Pr(>F)
group 1 1791568 1791568 242.3094 <2e-16 ***
direction 1 728 728 0.0985 0.7537
group:direction 1 12024 12024 1.6262 0.2023
Residuals 5187 38351225 7394
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
fonte
ezAnova
aviso, pois você não deve executar o 2x2 anova se, de fato, seus dados forem do design 2x2x2.ez
pode ser reformulado; na verdade, tem duas partes importantes: (1) que os dados estão sendo agregados e (2) itens sobre projetos parciais. O número 1 é mais pertinente à discrepância, pois explica que, para fazer uma anova tradicional de efeitos não mistos, é necessário agregar os dados em uma única observação por célula do design. Nesse caso, queremos uma observação por assunto por nível da variável "direção" (mantendo os rótulos de grupo para os assuntos). O ezANOVA calcula isso automaticamente.summary(aov(rt ~ group*direction + Error(subnum/direction), data=ANT.2))
e dá 16 (?) Dfs paragroup
e 18 paradirection
egroup:direction
. O fato de haver ~ 125 observações por combinação de grupo / direção é praticamente irrelevante para o RM-ANOVA; veja, por exemplo, minha própria pergunta stats.stackexchange.com/questions/286280 : a direção é testada, por assim dizer, contra assuntos interação de direção.lmerTest
estimativas de ~ 125 dfs.lmerTest::anova(model2, ddf="Kenward-Roger")
retorna 18.000 df paragroup
e17.987
df para os outros dois fatores, o que está em excelente concordância com o RM-ANOVA (conforme ezAnova). Minha conclusão é que a aproximação de Satterthwaite falhamodel2
por algum motivo.Eu geralmente concordo com a análise de Ben, mas deixe-me acrescentar algumas observações e um pouco de intuição.
Primeiro, os resultados gerais:
Ben descreve o design no qual
subnum
está aninhado porgroup
enquantodirection
egroup:direction
é cruzadosubnum
. Isso significa que o termo de erro natural (isto é, o chamado "estrato de erro anexo")group
é parasubnum
enquanto o estrato de erro anexo para os outros termos (incluindosubnum
) são os resíduos.Essa estrutura pode ser representada no chamado diagrama de estrutura fatorial:
Aqui, os termos aleatórios são colocados entre colchetes,
0
representam a média geral (ou interceptação),[I]
representam o termo do erro, os números do super script são o número de níveis e os números do sub script são o número de graus de liberdade, assumindo um design equilibrado. O diagrama indica que o termo de erro natural (que inclui o estrato de erro) paragroup
ésubnum
e que o numerador df parasubnum
, que é igual ao denominador df paragroup
, é 18: 20 menos 1 df paragroup
e 1 df para a média geral. Uma introdução mais abrangente aos diagramas de estrutura fatorial está disponível no capítulo 2 aqui: https://02429.compute.dtu.dk/eBook .Se os dados fossem exatamente balanceados, poderíamos construir os testes F a partir de uma decomposição SSQ, conforme fornecido por
anova.lm
. Como o conjunto de dados é muito equilibrado, podemos obter testes F aproximados da seguinte maneira:Aqui todos os valores de F e p são calculados assumindo que todos os termos têm os resíduos como estrato de erro anexo, e isso é verdade para todos, exceto para 'grupo'. O teste F 'equilibrado-correto' para o grupo é:
onde usamos o
subnum
MS em vez doResiduals
MS no denominador de valor F.Observe que esses valores correspondem muito bem aos resultados de Satterthwaite:
As diferenças restantes devem-se ao fato de os dados não serem exatamente equilibrados.
O OP compara
anova.lm
comanova.lmerModLmerTest
, o que é bom, mas para comparar como com nós temos que usar os mesmos contrastes. Nesse caso, há uma diferença entreanova.lm
eanova.lmerModLmerTest
uma vez que eles produzem testes tipo I e III por padrão, respectivamente, e para esse conjunto de dados há uma diferença (pequena) entre os contrastes do tipo I e III:Se o conjunto de dados tivesse sido completamente equilibrado, os contrastes do tipo I teriam sido os mesmos dos contrastes do tipo III (que não são afetados pelo número observado de amostras).
Uma última observação é que a 'lentidão' do método Kenward-Roger não se deve ao reajuste do modelo, mas porque envolve cálculos com a matriz de variância-covariância marginal das observações / resíduos (5191x5191 neste caso) que não é o caso do método de Satterthwaite.
Em relação ao modelo2
Quanto ao modelo2, a situação se torna mais complexa e acho que é mais fácil iniciar a discussão com outro modelo em que incluí a interação 'clássica' entre
subnum
edirection
:Como a variação associada à interação é essencialmente zero (na presença do
subnum
efeito principal aleatório), o termo de interação não afeta o cálculo dos graus de liberdade do denominador, valores F e valores p :No entanto,
subnum:direction
é o estrato de erro que o encerra,subnum
portanto, se removermossubnum
todo o SSQ associado, voltaremos asubnum:direction
Agora, o termo de erro natural para
group
,direction
egroup:direction
ésubnum:direction
e comnlevels(with(ANT.2, subnum:direction))
= 40 e quatro parâmetros, os graus de liberdade do denominador para esses termos devem ser cerca de 36:Esses testes F também podem ser aproximados com os testes F 'com balanceamento correto' :
agora voltando para o model2:
Este modelo descreve uma estrutura de covariância de efeito aleatório bastante complicada com uma matriz de covariância de variância 2x2. A parametrização padrão não é fácil de lidar e é melhor refazer a parametrização do modelo:
Se compararmos
model2
amodel4
, eles têm igualmente muitos de efeitos aleatórios; 2 para cada umsubnum
, ou seja, 2 * 20 = 40 no total. Emboramodel4
estipule um único parâmetro de variância para todos os 40 efeitos aleatórios,model2
estipula que cadasubnum
par de efeitos aleatórios tem uma distribuição normal bi-variável com uma matriz de variância-covariância 2x2 cujos parâmetros são dados porIsso indica excesso de ajuste, mas vamos deixar isso para outro dia. O ponto importante aqui é que
model4
é um caso especial demodel2
e quemodel
é também um caso especial demodel2
. Falar livremente (e intuitivamente)(direction | subnum)
contém ou captura a variação associada ao efeito principalsubnum
, bem como à interaçãodirection:subnum
. Em termos dos efeitos aleatórios, podemos pensar nesses dois efeitos ou estruturas como capturando variações entre linhas e linhas por colunas, respectivamente:Nesse caso, essas estimativas de efeito aleatório e as estimativas dos parâmetros de variação indicam que realmente temos apenas um efeito principal aleatório de
subnum
(variação entre linhas) aqui apresentado. O que tudo isso leva a é que os graus de liberdade do denominador Satterthwaite emé um compromisso entre essas estruturas de efeito principal e interação: O grupo DenDF permanece em 18 (aninhado
subnum
por design), mas odirection
egroup:direction
DenDF são compromissos entre 36 (model4
) e 5169 (model
).Acho que nada aqui indica que a aproximação de Satterthwaite (ou sua implementação no lmerTest ) está com defeito.
A tabela equivalente com o método Kenward-Roger fornece
Não é de surpreender que KR e Satterthwaite possam diferir, mas para todos os efeitos práticos a diferença nos valores de p é pequena. Minha análise acima indica que o valor
DenDF
fordirection
egroup:direction
não deve ser menor que ~ 36 e provavelmente maior que o dado que basicamente temos apenas o efeito principal aleatório dodirection
presente, portanto, se alguma coisa eu acho que isso é uma indicação de que o método KR ficaDenDF
muito baixo nesse caso. Mas lembre-se de que os dados não suportam realmente a(group | direction)
estrutura, portanto a comparação é um pouco artificial - seria mais interessante se o modelo fosse realmente suportado.fonte
model3
. No entanto, ele usasubnum:direction
como o termo de erro para o testedirection
. Enquanto aqui você pode forçar isso a acontecer apenas excluindo(1|subnum)
como emmodel4
. Por quê? (2b) Além disso, a RM-ANOVA produz df = 18 paradirection
, e não 36 quando você entramodel4
. Por quê?summary(aov(rt ~ group*direction + Error(subnum/direction), data=ANT.2))
.subnum
esubnum:direction
sejam diferentes de zero, entãoanova(lm(rt2 ~ group * direction + subnum + subnum:direction, data = ANT.2))
daremos 18 df para todos os três fatores e é isso que o método KR capta. Isso pode ser visto já commodel3
onde KR dá a 18 df baseada em design para todos os termos , mesmo quando a variância da interação é zero, enquanto Satterthwaite reconhece o termo variância desaparecendo e ajusta a df conformidade ....