ANOVA de plotagem dividida: testes de comparação de modelos em R


12

Como posso testar efeitos em uma ANOVA de plotagem dividida usando comparações de modelos adequadas para uso com os argumentos Xe em R? Estou familiarizado com Dalgaard (2007) [1]. Infelizmente, ele apenas modela os designs de plotagem dividida. Fazendo isso em um design totalmente aleatório, com dois fatores internos:Manova.mlm()?anova.mlm

N  <- 20  # 20 subjects total
P  <- 3   # levels within-factor 1
Q  <- 3   # levels within-factor 2
DV <- matrix(rnorm(N* P*Q), ncol=P*Q)           # random data in wide format
id <- expand.grid(IVw1=gl(P, 1), IVw2=gl(Q, 1)) # intra-subjects layout of data matrix

library(car)        # for Anova()
fitA <- lm(DV ~ 1)  # between-subjects design: here no between factor
resA <- Anova(fitA, idata=id, idesign=~IVw1*IVw2)
summary(resA, multivariate=FALSE, univariate=TRUE)  # all tests ...

As comparações de modelo a seguir levam aos mesmos resultados. O modelo restrito não inclui o efeito em questão, mas todos os outros efeitos da mesma ordem ou inferior, o modelo completo adiciona o efeito em questão.

anova(fitA, idata=id, M=~IVw1 + IVw2, X=~IVw2, test="Spherical") # IVw1
anova(fitA, idata=id, M=~IVw1 + IVw2, X=~IVw1, test="Spherical") # IVw2
anova(fitA, idata=id, M=~IVw1 + IVw2 + IVw1:IVw2,
                      X=~IVw1 + IVw2, test="Spherical")          # IVw1:IVw2

Um design Split-Splot com um fator interno e um fator entre sujeitos:

idB  <- subset(id, IVw2==1, select="IVw1")          # use only first within factor
IVb  <- gl(2, 10, labels=c("A", "B"))               # between-subjects factor
fitB <- lm(DV[ , 1:P] ~ IVb)                        # between-subjects design
resB <- Anova(fitB, idata=idB, idesign=~IVw1)
summary(resB, multivariate=FALSE, univariate=TRUE)  # all tests ...

Estes são os anova()comandos para replicar os testes, mas não sei por que eles funcionam. Por que os testes das seguintes comparações de modelos levam aos mesmos resultados?

anova(fitB, idata=idB, X=~1, test="Spherical") # IVw1, IVw1:IVb
anova(fitB, idata=idB, M=~1, test="Spherical") # IVb

Dois fatores entre sujeitos e um fator entre sujeitos:

fitC <- lm(DV ~ IVb)  # between-subjects design
resC <- Anova(fitC, idata=id, idesign=~IVw1*IVw2)
summary(resC, multivariate=FALSE, univariate=TRUE)  # all tests ...

Como replico os resultados fornecidos acima com as comparações de modelos correspondentes para uso com os argumentos Xe Mde anova.mlm()? Qual é a lógica por trás dessas comparações de modelos?

EDIT: suncoolsu apontou que, para todos os efeitos práticos, os dados desses projetos devem ser analisados ​​usando modelos mistos. No entanto, eu ainda gostaria de entender como replicar os resultados summary(Anova())com anova.mlm(..., X=?, M=?).

[1]: Dalgaard, p. 2007. Novas funções para análise multivariada. R News, 7 (2), 2-7.


Ei, @caracal, acho que o jeito que você está usando "Design de plotagem dividida" não é o que Casella, George define em seu livro, Statistical Design. O Gráfico de divisão definitivamente fala sobre aninhamento, mas é uma maneira especial de impor a estrutura de correlação. E na maioria das vezes você acaba usando o lme4pacote para se ajustar ao modelo E NÃO lm. Mas essa pode ser uma visão baseada em livro muito específica. Vou deixar outro comentário sobre isso. Eu posso dar um exemplo baseado em como eu o interpreto, que é diferente do seu.
suncoolsu

2
@suncoolsu A terminologia nas ciências sociais pode ser diferente, mas Kirk (1995, p512) e Maxwell & Delaney (2004, p592) chamam modelos com um "gráfico de parcelas" entre um e outro fator. O fator intermediário fornece as "parcelas" (análogas à origem agrícola).
caracal

Eu tenho muitas coisas no meu prato no momento. Expandirei minha resposta para ser mais específico à sua pergunta. Vejo que você investiu muito em elaborar sua pergunta. Obrigado por isso.
suncoolsu

Respostas:


10

O Xe Mbasicamente especificam os dois modelos que você deseja comparar, mas apenas em termos dos efeitos dentro do assunto; em seguida, mostra resultados para a interação de todos os efeitos entre sujeitos (incluindo a interceptação) com os efeitos dentro dos sujeitos que foram alterados entre Xe M.

Seus exemplos fitBsão mais fáceis de entender se adicionarmos os padrões para Xe M:

anova(fitB, idata=idB, M=~1, X=~0, test="Spherical") # IVb
anova(fitB, idata=idB, M=diag(3), X=~1, test="Spherical") # IVw1, IVw1:IVb

O primeiro modelo é a mudança de efeitos não internos (todos têm a mesma média) para uma média diferente para cada um, por isso adicionamos o idefeito aleatório, que é a coisa certa para testar a interceptação geral e o geral entre os efeitos sujeitos em.

O segundo modelo anuncia a id:IVw1interação, que é a coisa certa a ser testada IVw1e os IVw1:IVbtermos contra. Como existe apenas um efeito dentro do assunto (com três níveis), o padrão do diag(3)segundo modelo será responsável por isso; seria equivalente a correr

anova(fitB, idata=idB, M=~IVw1, X=~1, test="Spherical") # IVw1, IVw1:IVb

Para você fitC, acredito que esses comandos recriarão o Anovaresumo.

anova(fitC, idata=id, M=~1, X=~0, test="Spherical") #IVb
anova(fitC, idata=id, M=~IVw1 + IVw2, X=~IVw2, test="Spherical") # IVw1
anova(fitC, idata=id, M=~IVw1 + IVw2, X=~IVw1, test="Spherical") # IVw2
anova(fitC, idata=id, M=~IVw1 + IVw2 + IVw1:IVw2,
                  X=~IVw1 + IVw2, test="Spherical")          # IVw1:IVw2

Agora, como você descobriu, esses comandos são realmente complicados. Felizmente, não há mais motivos para usá-los. Se você estiver disposto a assumir a esfericidade, use apenas aovou, para uma sintaxe ainda mais fácil, use lme calcule os testes F corretos. Se você não está disposto a assumir a esfericidade, usar lmeé realmente o caminho a seguir, pois você obtém muito mais flexibilidade do que nas correções de GG e HF.

Por exemplo, aqui está o código aove lmpara o seu fitA. Você precisa ter os dados em formato longo primeiro; Aqui está uma maneira de fazer isso:

library(reshape)
d0 <- data.frame(id=1:nrow(DV), DV)
d0$IVb <- IVb
d0 <- melt(d0, id.vars=c(1,11), measure.vars=2:10)
id0 <- id
id0$variable <- factor(levels(d0$variable), levels=levels(d0$variable))
d <- merge(d0, id0)
d$id <- factor(d$id)

E aqui está o lm andcódigo aov`:

anova(lm(value ~ IVw1*IVw2*id, data=d))
summary(aov(value ~ IVw1*IVw2 + Error(id/(IVw1*IVw2)), data=d))

Muito obrigado, é exatamente isso que eu estava procurando! Eu ainda estava interessado por anova()causa do problema Anova()descrito aqui . Mas sua última sugestão funciona tão bem quanto é mais simples. (Minor coisa: Eu acho que os últimos 2 linhas são cada faltando 1 parêntese de fechamento, e deve ler Error(id/(IVw1*IVw2)))
caracal

8

Os projetos de parcelas subdivididas se originaram na agricultura, daí o nome. Mas eles freqüentemente ocorrem, e eu diria - o cavalo de batalha da maioria dos ensaios clínicos. A plotagem principal é tratada com um nível de um fator, enquanto os níveis de algum outro fator podem variar com as subparcelas. O design surge como resultado de restrições em uma randomização completa. Por exemplo: um campo pode ser dividido em quatro subparcelas. Pode ser possível plantar variedades diferentes em subparcelas, mas apenas um tipo de irrigação pode ser usado para todo o campo. Não é a distinção entre divisões e blocos. Blocos são características das unidades experimentais das quais temos a opção de aproveitar o design experimental, porque sabemos que elas estão lá. As divisões, por outro lado, impõem restrições sobre quais atribuições de fatores são possíveis. Eles impõem requisitos no design que impedem uma randomização completa.

Eles são muito utilizados em ensaios clínicos em que quando um fator é fácil de alterar, enquanto outro fator leva muito mais tempo para mudar. Se o experimentador precisar executar todas as execuções para cada nível do fator difícil de alterar consecutivamente, um design de plotagem dividida resultará em um fator de difícil alteração que representa o fator inteiro da plotagem.

Aqui está um exemplo: Em um teste de campo agrícola, o objetivo era determinar os efeitos de duas variedades de culturas e quatro métodos diferentes de irrigação. Oito campos estavam disponíveis, mas apenas um tipo de irrigação pode ser aplicado a cada campo. Os campos podem ser divididos em duas partes com uma variedade diferente em cada parte. Todo o fator de plotagem é a irrigação, que deve ser atribuída aleatoriamente aos campos. Dentro de cada campo, a variedade é atribuída.

É assim que você faz isso R:

install.packages("faraway")
data(irrigation)
summary(irrigation)

library(lme4)

R> (lmer(yield ~ irrigation * variety + (1|field), data = irrigation))
Linear mixed model fit by REML 
Formula: yield ~ irrigation * variety + (1 | field) 
   Data: irrigation 
  AIC  BIC logLik deviance REMLdev
 65.4 73.1  -22.7     68.6    45.4
Random effects:
 Groups   Name        Variance Std.Dev.
 field    (Intercept) 16.20    4.02    
 Residual              2.11    1.45    
Number of obs: 16, groups: field, 8

Fixed effects:
                       Estimate Std. Error t value
(Intercept)               38.50       3.02   12.73
irrigationi2               1.20       4.28    0.28
irrigationi3               0.70       4.28    0.16
irrigationi4               3.50       4.28    0.82
varietyv2                  0.60       1.45    0.41
irrigationi2:varietyv2    -0.40       2.05   -0.19
irrigationi3:varietyv2    -0.20       2.05   -0.10
irrigationi4:varietyv2     1.20       2.05    0.58

Correlation of Fixed Effects:
            (Intr) irrgt2 irrgt3 irrgt4 vrtyv2 irr2:2 irr3:2
irrigation2 -0.707                                          
irrigation3 -0.707  0.500                                   
irrigation4 -0.707  0.500  0.500                            
varietyv2   -0.240  0.170  0.170  0.170                     
irrgtn2:vr2  0.170 -0.240 -0.120 -0.120 -0.707              
irrgtn3:vr2  0.170 -0.120 -0.240 -0.120 -0.707  0.500       
irrgtn4:vr2  0.170 -0.120 -0.120 -0.240 -0.707  0.500  0.500

Basicamente, o que este modelo diz é que a irrigação e a variedade são efeitos fixos e a variedade é aninhada na irrigação. Os campos são os efeitos aleatórios e pictoricamente serão algo como

I_1 I_2 I_3 I_4

V_1 V_2 V_1 V_2 V_1 V_2 V_1 V_2

Mas essa era uma variante especial com efeito fixo de plotagem e efeito de plotagem inteira. Pode haver variantes nas quais uma ou mais são aleatórias. Pode haver designs mais complicados, como split-split .. plot designs. Basicamente, você pode ir selvagem e louco. Mas, dada a estrutura e a distribuição subjacentes (ou seja, fixa ou aleatória, aninhada ou cruzada, etc.) é claramente entendida, a lmer-Ninjanão terá problemas na modelagem. Pode ser que a interpretação seja uma bagunça.

Em relação às comparações, diga que você tem lmer1e lmer2:

anova(lmer1, lmer2)

fornecerá o teste apropriado com base na estatística do teste qui-quadrado com graus de liberdade iguais à diferença de parâmetros.

cf: Faraway, J., Estendendo modelos lineares com R.

Casella, G., Desenho Estatístico


Aprecio a introdução à análise de projetos de divisão de splot com modelos de efeitos mistos e mais informações de plano de fundo! Certamente é a maneira preferida de realizar a análise. Atualizei minha pergunta para enfatizar que ainda gostaria de saber como fazer isso "da maneira antiga".
Caracal
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.