Qual è l'equivalente di lme4 :: lmer di un ANOVA a tre misure ripetute?


11

La mia domanda si basa su questa risposta che ha mostrato quale lme4::lmermodello corrisponde a una misura ripetuta a due vie ANOVA:

require(lme4)
set.seed(1234)
d <- data.frame(
    y = rnorm(96),
    subject = factor(rep(1:12, 4)),
    a = factor(rep(1:2, each=24)),
    b = factor(rep(rep(1:2, each=12))),
    c = factor(rep(rep(1:2, each=48))))

# standard two-way repeated measures ANOVA:
summary(aov(y~a*b+Error(subject/(a*b)), d[d$c == "1",]))

# corresponding lmer call:
anova(lmer(y ~ a*b+(1|subject) + (1|a:subject) + (1|b:subject), d[d$c == "1",]))

La mia domanda ora è su come estenderlo al caso di un ANOVA a tre vie:

summary(aov(y~a*b*c+Error(subject/(a*b*c)), d))
## [...]
## Error: subject:a:b:c
##           Df Sum Sq Mean Sq F value Pr(>F)
## a:b:c      1  0.101  0.1014   0.115  0.741
## Residuals 11  9.705  0.8822 

L'estensione naturale e le sue versioni non corrispondono ai risultati ANOVA:

anova(lmer(y ~ a*b*c +(1|subject) + (1|a:subject) + (1|b:subject) + (1|c:subject), d))
## [...]
## a:b:c  1 0.1014  0.1014  0.1500

anova(lmer(y ~ a*b*c +(1|subject) + (1|a:subject) + (1|b:subject) + (1|c:subject) + 
               (1|a:b:subject) + (1|a:c:subject) + (1|b:c:subject), d))
## [...]
## a:b:c  1 0.1014  0.1014  0.1539

Si noti che una domanda molto simile è stata posta in precedenza . Tuttavia, mancavano i dati di esempio (forniti qui).


Sei sicuro di non voler essere il tuo modello a due livelli y ~ a*b + (1 + a*b|subject), d[d$c == "1",]? O forse mi manca qualcosa?
Rasmus Bååth,

@ RasmusBååth Go Ahead e proverà ad adattarlo, lmersi lamenterà perché gli effetti casuali non vengono più identificati. Inizialmente ho anche pensato che questo fosse il modello che volevo, ma non lo è. Se confronti il ​​modello lmer che propongo per il caso a 2 vie con lo standard ANOVA vedrai che i valori F corrispondono esattamente . Come detto nella risposta, ho collegato.
Henrik,

3
Per il problema a tre vie, il primo lmermodello che hai scritto (che esclude le interazioni a due vie casuali) non dovrebbe essere equivalente a un RM-ANOVA a 3 vie, ma il secondo che hai scritto (che include il casuale interazioni a due vie) dovrebbero essere. Per quanto riguarda il motivo per cui c'è una discrepanza anche con quel modello, ho un'idea di quale sia il problema, andando a prendere la cena quindi guarderò un po 'di più il set di dati del giocattolo.
Jake Westfall,

Risposte:


18

La risposta diretta alla tua domanda è che l'ultimo modello che hai scritto,

anova(lmer(y ~ a*b*c +(1|subject) + (1|a:subject) + (1|b:subject) + (1|c:subject) + 
           (1|a:b:subject) + (1|a:c:subject) + (1|b:c:subject), d))

Credo che sia "in linea di principio" corretto, sebbene sia una strana parametrizzazione che non sembra sempre funzionare bene nella pratica reale.

Per quanto riguarda il motivo per cui l'output che si ottiene da questo modello non è conforme aov()all'output, penso che ci siano due ragioni.

  1. Il tuo semplice set di dati simulato è patologico in quanto il modello più adatto è quello che implica componenti di varianza negativa, che i modelli misti adattati da lmer()(e la maggior parte degli altri programmi di modelli misti) non consentiranno.
  2. Anche con un set di dati non patologici, il modo in cui hai impostato il modello, come menzionato sopra, non sembra sempre funzionare bene nella pratica, anche se devo ammettere che non capisco davvero perché. È anche solo generalmente strano secondo me, ma questa è un'altra storia.

Consentitemi innanzitutto di dimostrare la parametrizzazione che preferisco nel vostro esempio ANOVA bidirezionale iniziale. Supponiamo che il set di dati dsia caricato. Il tuo modello (nota che sono passato da codici fittizi a codici di contrasto) era:

options(contrasts=c("contr.sum","contr.poly"))
mod1 <- lmer(y ~ a*b+(1|subject) + (1|a:subject) + (1|b:subject),
         data = d[d$c == "1",])
anova(mod1)
# Analysis of Variance Table
#     Df  Sum Sq Mean Sq F value
# a    1 2.20496 2.20496  3.9592
# b    1 0.13979 0.13979  0.2510
# a:b  1 1.23501 1.23501  2.2176

che ha funzionato bene qui in quanto corrispondeva aov()all'output. Il modello che preferisco prevede due cambiamenti: codifica manualmente i fattori in modo da non lavorare con gli oggetti fattore R (cosa che raccomando di fare nel 100% dei casi) e specificando gli effetti casuali in modo diverso:

d <- within(d, {
  A <- 2*as.numeric(paste(a)) - 3
  B <- 2*as.numeric(paste(b)) - 3
  C <- 2*as.numeric(paste(c)) - 3
})
mod2 <- lmer(y ~ A*B + (1|subject)+(0+A|subject)+(0+B|subject),
             data = d[d$c == "1",])
anova(mod2)
# Analysis of Variance Table
# Df  Sum Sq Mean Sq F value
# A    1 2.20496 2.20496  3.9592
# B    1 0.13979 0.13979  0.2510
# A:B  1 1.23501 1.23501  2.2176

logLik(mod1)
# 'log Lik.' -63.53034 (df=8)
logLik(mod2)
# 'log Lik.' -63.53034 (df=8)

I due approcci sono totalmente equivalenti nel semplice problema a 2 vie. Passiamo ora a un problema a 3 vie. Ho menzionato prima che il set di dati di esempio che hai fornito era patologico. Quindi, quello che voglio fare prima di affrontare il tuo set di dati di esempio è generare un set di dati da un modello di componenti di varianza reale (ovvero, dove i componenti di varianza diversi da zero sono integrati nel modello reale). Per prima cosa mostrerò come la mia parametrizzazione preferita sembra funzionare meglio di quella che hai proposto. Quindi mostrerò un altro modo di stimare i componenti della varianza che non impone che debbano essere non negativi. Quindi saremo in grado di vedere il problema con il set di dati di esempio originale.

Il nuovo set di dati sarà identico nella struttura tranne che avremo 50 soggetti:

set.seed(9852903)
d2 <- expand.grid(A=c(-1,1), B=c(-1,1), C=c(-1,1), sub=seq(50))
d2 <- merge(d2, data.frame(sub=seq(50), int=rnorm(50), Ab=rnorm(50),
  Bb=rnorm(50), Cb=rnorm(50), ABb=rnorm(50), ACb=rnorm(50), BCb=rnorm(50)))
d2 <- within(d2, {
  y <- int + (1+Ab)*A + (1+Bb)*B + (1+Cb)*C + (1+ABb)*A*B +
    (1+ACb)*A*C + (1+BCb)*B*C + A*B*C + rnorm(50*2^3)
  a <- factor(A)
  b <- factor(B)
  c <- factor(C)
})

I rapporti F che vogliamo abbinare sono:

aovMod1 <- aov(y ~ a*b*c + Error(factor(sub)/(a*b*c)), data = d2)
tab <- lapply(summary(aovMod1), function(x) x[[1]][1,2:4])
do.call(rbind, tab)
#                          Sum Sq Mean Sq F value
# Error: factor(sub)       439.48    8.97        
# Error: factor(sub):a     429.64  429.64  32.975
# Error: factor(sub):b     329.48  329.48  27.653
# Error: factor(sub):c     165.44  165.44  17.924
# Error: factor(sub):a:b   491.33  491.33  49.694
# Error: factor(sub):a:c   305.46  305.46  41.703
# Error: factor(sub):b:c   466.09  466.09  40.655
# Error: factor(sub):a:b:c 392.76  392.76 448.101

Ecco i nostri due modelli:

mod3 <- lmer(y ~ a*b*c + (1|sub)+(1|a:sub)+(1|b:sub)+(1|c:sub)+
  (1|a:b:sub)+(1|a:c:sub)+(1|b:c:sub), data = d2)
anova(mod3)
# Analysis of Variance Table
#       Df Sum Sq Mean Sq F value
# a      1  32.73   32.73  34.278
# b      1  21.68   21.68  22.704
# c      1  12.53   12.53  13.128
# a:b    1  60.93   60.93  63.814
# a:c    1  50.38   50.38  52.762
# b:c    1  57.30   57.30  60.009
# a:b:c  1 392.76  392.76 411.365

mod4 <- lmer(y ~ A*B*C + (1|sub)+(0+A|sub)+(0+B|sub)+(0+C|sub)+
  (0+A:B|sub)+(0+A:C|sub)+(0+B:C|sub), data = d2)
anova(mod4)
# Analysis of Variance Table
#       Df Sum Sq Mean Sq F value
# A      1  28.90   28.90  32.975
# B      1  24.24   24.24  27.653
# C      1  15.71   15.71  17.924
# A:B    1  43.56   43.56  49.694
# A:C    1  36.55   36.55  41.703
# B:C    1  35.63   35.63  40.655
# A:B:C  1 392.76  392.76 448.101

logLik(mod3)
# 'log Lik.' -984.4531 (df=16)
logLik(mod4)
# 'log Lik.' -973.4428 (df=16)

Come possiamo vedere, solo il secondo metodo corrisponde all'output di aov(), sebbene il primo metodo sia almeno nel ballpark. Il secondo metodo consente anche una maggiore probabilità di log. Non sono sicuro del motivo per cui questi due metodi danno risultati diversi, poiché ritengo che siano equivalenti "in linea di principio", ma forse lo sono per ragioni numeriche / computazionali. O forse mi sbaglio e non sono equivalenti nemmeno in linea di principio.

Ora mostrerò un altro modo di stimare i componenti della varianza in base alle idee ANOVA tradizionali. Fondamentalmente prenderemo le equazioni quadrate medie attese per il vostro disegno, sostituiremo i valori osservati dei quadrati medi e risolveremo i componenti di varianza. Per ottenere i quadrati medi attesi utilizzeremo una funzione R che ho scritto alcuni anni fa, chiamata EMS(), che è documentata QUI . Di seguito suppongo che la funzione sia già caricata.

# prepare coefficient matrix
r <- 1 # number of replicates
s <- 50 # number of subjects
a <- 2 # number of levels of A
b <- 2 # number of levels of B
c <- 2 # number of levels of C
CT <- EMS(r ~ a*b*c*s, random="s")
expr <- strsplit(CT[CT != ""], split="")
expr <- unlist(lapply(expr, paste, collapse="*"))
expr <- sapply(expr, function(x) eval(parse(text=x)))
CT[CT != ""] <- expr
CT[CT == ""] <- 0
mode(CT) <- "numeric"
# residual variance and A*B*C*S variance are confounded in
# this design, so remove the A*B*C*S variance component
CT <- CT[-15,-2]
CT
#        VarianceComponent
# Effect  e b:c:s a:c:s a:b:s a:b:c c:s b:s a:s b:c a:c a:b s   c   b   a
#   a     1     0     0     0     0   0   0   4   0   0   0 0   0   0 200
#   b     1     0     0     0     0   0   4   0   0   0   0 0   0 200   0
#   c     1     0     0     0     0   4   0   0   0   0   0 0 200   0   0
#   s     1     0     0     0     0   0   0   0   0   0   0 8   0   0   0
#   a:b   1     0     0     2     0   0   0   0   0   0 100 0   0   0   0
#   a:c   1     0     2     0     0   0   0   0   0 100   0 0   0   0   0
#   b:c   1     2     0     0     0   0   0   0 100   0   0 0   0   0   0
#   a:s   1     0     0     0     0   0   0   4   0   0   0 0   0   0   0
#   b:s   1     0     0     0     0   0   4   0   0   0   0 0   0   0   0
#   c:s   1     0     0     0     0   4   0   0   0   0   0 0   0   0   0
#   a:b:c 1     0     0     0    50   0   0   0   0   0   0 0   0   0   0
#   a:b:s 1     0     0     2     0   0   0   0   0   0   0 0   0   0   0
#   a:c:s 1     0     2     0     0   0   0   0   0   0   0 0   0   0   0
#   b:c:s 1     2     0     0     0   0   0   0   0   0   0 0   0   0   0
#   e     1     0     0     0     0   0   0   0   0   0   0 0   0   0   0

# get mean squares
(MSmod <- summary(aov(y ~ a*b*c*factor(sub), data=d2)))
#                   Df Sum Sq Mean Sq
# a                  1  429.6   429.6
# b                  1  329.5   329.5
# c                  1  165.4   165.4
# factor(sub)       49  439.5     9.0
# a:b                1  491.3   491.3
# a:c                1  305.5   305.5
# b:c                1  466.1   466.1
# a:factor(sub)     49  638.4    13.0
# b:factor(sub)     49  583.8    11.9
# c:factor(sub)     49  452.2     9.2
# a:b:c              1  392.8   392.8
# a:b:factor(sub)   49  484.5     9.9
# a:c:factor(sub)   49  358.9     7.3
# b:c:factor(sub)   49  561.8    11.5
# a:b:c:factor(sub) 49   42.9     0.9
MS <- MSmod[[1]][,"Mean Sq"]

# solve
ans <- solve(CT, MS)
cbind(rev(ans[c(grep("e",names(ans)),grep("s",names(ans)))])/
        c(1,2,2,2,4,4,4,1))
# s     1.0115549
# a:s   1.5191114
# b:s   1.3797937
# c:s   1.0441351
# a:b:s 1.1263331
# a:c:s 0.8060402
# b:c:s 1.3235126
# e     0.8765093
summary(mod4)
# Random effects:
#  Groups   Name        Variance Std.Dev.
#  sub      (Intercept) 1.0116   1.0058  
#  sub.1    A           1.5191   1.2325  
#  sub.2    B           1.3798   1.1746  
#  sub.3    C           1.0441   1.0218  
#  sub.4    A:B         1.1263   1.0613  
#  sub.5    A:C         0.8060   0.8978  
#  sub.6    B:C         1.3235   1.1504  
#  Residual             0.8765   0.9362  
# Number of obs: 400, groups:  sub, 50

Bene, ora torneremo all'esempio originale. I rapporti F che stiamo cercando di abbinare sono:

aovMod2 <- aov(y~a*b*c+Error(subject/(a*b*c)), data = d)
tab <- lapply(summary(aovMod2), function(x) x[[1]][1,2:4])
do.call(rbind, tab)
#                       Sum Sq Mean Sq F value
# Error: subject       13.4747  1.2250        
# Error: subject:a      1.4085  1.4085  1.2218
# Error: subject:b      3.1180  3.1180  5.5487
# Error: subject:c      6.3809  6.3809  5.2430
# Error: subject:a:b    1.5706  1.5706  2.6638
# Error: subject:a:c    1.0907  1.0907  1.5687
# Error: subject:b:c    1.4128  1.4128  2.3504
# Error: subject:a:b:c  0.1014  0.1014  0.1149

Ecco i nostri due modelli:

mod5 <- lmer(y ~ a*b*c + (1|subject)+(1|a:subject)+(1|b:subject)+
  (1|c:subject)+(1|a:b:subject)+(1|a:c:subject)+(1|b:c:subject),
  data = d)
anova(mod5)
# Analysis of Variance Table
#       Df Sum Sq Mean Sq F value
# a      1 0.8830  0.8830  1.3405
# b      1 3.1180  3.1180  4.7334
# c      1 3.8062  3.8062  5.7781
# a:b    1 1.5706  1.5706  2.3844
# a:c    1 0.9620  0.9620  1.4604
# b:c    1 1.4128  1.4128  2.1447
# a:b:c  1 0.1014  0.1014  0.1539

mod6 <- lmer(y ~ A*B*C + (1|subject)+(0+A|subject)+(0+B|subject)+
  (0+C|subject)+(0+A:B|subject)+(0+A:C|subject)+
  (0+B:C|subject), data = d)
anova(mod6)
# Analysis of Variance Table
#       Df Sum Sq Mean Sq F value
# a      1 0.8830  0.8830  1.3405
# b      1 3.1180  3.1180  4.7334
# c      1 3.8062  3.8062  5.7781
# a:b    1 1.5706  1.5706  2.3844
# a:c    1 0.9620  0.9620  1.4604
# b:c    1 1.4128  1.4128  2.1447
# a:b:c  1 0.1014  0.1014  0.1539

logLik(mod5)
# 'log Lik.' -135.0351 (df=16)
logLik(mod6)
# 'log Lik.' -134.9191 (df=16)

In questo caso i due modelli producono sostanzialmente gli stessi risultati, sebbene il secondo metodo abbia una probabilità di log leggermente superiore. Nessuno dei due metodi corrisponde aov(). Ma diamo un'occhiata a ciò che otteniamo quando risolviamo i componenti della varianza come abbiamo fatto sopra, usando la procedura ANOVA che non limita i componenti della varianza a essere non negativi (ma che possono essere utilizzati solo in progetti bilanciati senza predittori continui e nessun dati mancanti; i presupposti classici ANOVA).

# prepare coefficient matrix
r <- 1 # number of replicates
s <- 12 # number of subjects
a <- 2 # number of levels of A
b <- 2 # number of levels of B
c <- 2 # number of levels of C
CT <- EMS(r ~ a*b*c*s, random="s")
expr <- strsplit(CT[CT != ""], split="")
expr <- unlist(lapply(expr, paste, collapse="*"))
expr <- sapply(expr, function(x) eval(parse(text=x)))
CT[CT != ""] <- expr
CT[CT == ""] <- 0
mode(CT) <- "numeric"
# residual variance and A*B*C*S variance are confounded in
# this design, so remove the A*B*C*S variance component
CT <- CT[-15,-2]

# get mean squares
MSmod <- summary(aov(y ~ a*b*c*subject, data=d))
MS <- MSmod[[1]][,"Mean Sq"]

# solve
ans <- solve(CT, MS)
cbind(rev(ans[c(grep("e",names(ans)),grep("s",names(ans)))])/
        c(1,2,2,2,4,4,4,1))
# s      0.04284033
# a:s    0.03381648
# b:s   -0.04004005
# c:s    0.04184887
# a:b:s -0.03657940
# a:c:s -0.02337501
# b:c:s -0.03514457
# e      0.88224787
summary(mod6)
# Random effects:
#  Groups    Name        Variance  Std.Dev. 
#  subject   (Intercept) 7.078e-02 2.660e-01
#  subject.1 A           6.176e-02 2.485e-01
#  subject.2 B           0.000e+00 0.000e+00
#  subject.3 C           6.979e-02 2.642e-01
#  subject.4 A:B         1.549e-16 1.245e-08
#  subject.5 A:C         4.566e-03 6.757e-02
#  subject.6 B:C         0.000e+00 0.000e+00
#  Residual              6.587e-01 8.116e-01
# Number of obs: 96, groups:  subject, 12

Ora possiamo vedere cosa c'è di patologico nell'esempio originale. Il modello più adatto è quello che implica che molti dei componenti di varianza casuali sono negativi. Ma lmer()(e la maggior parte degli altri programmi per modelli misti) limita le stime delle componenti della varianza come non negative. Questo è generalmente considerato un vincolo sensato, dal momento che le varianze non possono mai essere veramente negative. Tuttavia, una conseguenza di questo vincolo è che i modelli misti non sono in grado di rappresentare con precisione set di dati che presentano correlazioni intraclasse negative, ovvero set di dati in cui le osservazioni dallo stesso cluster sono inferiori(piuttosto che più) simili in media alle osservazioni tratte casualmente dal set di dati, e di conseguenza dove la varianza all'interno del cluster supera sostanzialmente la varianza tra i cluster. Tali set di dati sono set di dati perfettamente ragionevoli che occasionalmente ci si imbatte nel mondo reale (o si simulano accidentalmente!), Ma non possono essere sensibilmente descritti da un modello di componenti di varianza, poiché implicano componenti di varianza negativa. Possono tuttavia essere "assennatamente" descritti da tali modelli, se il software lo consentirà. aov()lo permette. lmer()non.


+1. Riesci I am not sure why these two methods give different results, as again I think they are "in principle" equivalent, but maybe it is for some numerical/computational reasonsforse a capirlo meglio ora (due anni dopo)? Ho provato a capire qual è la differenza, ma non capisco neanche ...
Amoeba dice Reinstate Monica,

@amoeba Il mio pensiero attuale è ancora più o meno lo stesso di allora: AFAIK, i due modelli sono statisticamente equivalenti (nel senso che fanno le stesse previsioni sui dati e implicano gli stessi errori standard), anche se gli effetti casuali sono parametrizzati in modo diverso. Penso che le differenze osservate - che sembrano verificarsi solo a volte - siano dovute solo a problemi computazionali. In particolare, sospetto che potresti armeggiare con le impostazioni dell'ottimizzatore (come variare i punti di partenza o utilizzare criteri di convergenza più rigorosi) fino a quando i due modelli non restituiscono esattamente la stessa risposta.
Jake Westfall,

Grazie per la tua risposta. Non sono abbastanza convinto: ho provato a giocherellare con le impostazioni dell'ottimizzatore e non ho potuto cambiare nulla nei risultati; la mia impressione è che entrambi i modelli siano ben convergenti. Potrei fare questa domanda separata in qualche momento.
ameba dice Reinstate Monica il

Continuo a indagare su questo problema e ho compreso quanto segue: non appena i fattori di misure ripetute hanno più di due livelli, questi due metodi diventano completamente diversi! Se Aha livelli allora stima solo parametro varianza, considerando preventivi parametri di varianza e correlazioni tra di loro. La mia comprensione è che ANOVA classica stima solo un parametro di varianza e quindi dovrebbe essere equivalente al primo metodo, non al secondo. Giusto? Ma per entrambi i metodi stimano un parametro e non sono ancora sicuro del perché non siano d'accordo. k - 1 k ( k - 1 ) / 2 k = 2K(1|A:sub)(0+A|sub)K-1K(K-1)/2K=2
ameba dice di reintegrare Monica il

Tornando a questo problema ... Ho notato che per il caso a due fattori in cui due lmerchiamate producono un anova()output identico , le varianze di effetti casuali sono comunque abbastanza diverse: vedi VarCorr(mod1)e VarCorr(mod2). Non capisco bene perché questo accada; Fai? Per mod3e mod4, si può vedere che quattro varianze su sette per mod3sono effettivamente uguali a zero (poiché mod4tutte e sette sono diverse da zero); questa "singolarità" mod3è probabilmente il motivo per cui le tabelle anova differiscono. A parte questo, come useresti il ​​tuo "modo preferito" se ae bavessi più di due livelli?
ameba dice Ripristina Monica il

1

Sono a, b, cfisso o effetti casuali? Se sono corretti, la sintassi sarà semplicemente

summary(aov(y~a*b*c+Error(subject), d))
Error: subject
          Df Sum Sq Mean Sq F value Pr(>F)
Residuals 11  13.47   1.225               

Error: Within
          Df Sum Sq Mean Sq F value  Pr(>F)   
a          1   1.41   1.408   1.730 0.19235   
b          1   3.12   3.118   3.829 0.05399 . 
c          1   6.38   6.381   7.836 0.00647 **
a:b        1   1.57   1.571   1.929 0.16889   
a:c        1   1.09   1.091   1.339 0.25072   
b:c        1   1.41   1.413   1.735 0.19168   
a:b:c      1   0.10   0.101   0.124 0.72518   
Residuals 77  62.70   0.814  

library(lmerTest)
anova(lmer(y ~ a*b*c+(1|subject), data=d))
Analysis of Variance Table of type 3  with  Satterthwaite 
approximation for degrees of freedom
      Sum Sq Mean Sq NumDF  DenDF F.value   Pr(>F)   
a     1.4085  1.4085     1 76.991  1.7297 0.192349   
b     3.1180  3.1180     1 76.991  3.8291 0.053995 . 
c     6.3809  6.3809     1 76.991  7.8363 0.006469 **
a:b   1.5706  1.5706     1 76.991  1.9289 0.168888   
a:c   1.0907  1.0907     1 76.991  1.3394 0.250716   
b:c   1.4128  1.4128     1 76.991  1.7350 0.191680   
a:b:c 0.1014  0.1014     1 76.991  0.1245 0.725183  

Sono effetti fissi. Tuttavia, il modello ANOVA che si adatta non è il modello che sembra essere il classico modello ANOVA di misure ripetute, vedere ad esempio qui . Vedi gli strati di errore nel tuo e nel mio caso.
Henrik,

1
In realtà il modo in cui lo fanno non è corretto. Se hai un disegno fattoriale ripetuto di misure ripetute (o disegno fattoriale a blocchi randomizzato), dovresti ottenere solo 1 termine di errore, a parte subject, per tutti gli effetti (cioè, Within). Vedi Experimental Design: Procedures for Behavioral Sciences (2013) di Kirk, capitolo 10 (p. 588) o il mio post qui
Masato Nakazawa,

Evitiamo questa domanda per il momento e supponiamo che il modello che ho montato sarebbe il modello corretto. Come ti adatteresti usando lmer? Prenderò comunque la mia copia di Kirk (solo seconda edizione) e vedrò cosa dice.
Henrik,

Sono curioso di sapere cosa ne pensi del capitolo di Kirk. Penso che il numero del capitolo nel 2 ° ed. è diverso. Nel frattempo proverò a montare diversi lmermodelli. Il modo migliore per verificare l'adattamento del modello è controllare i loro dfs usando lmerTestperché l'approssimazione KR dovrebbe darti exactdfs e quindi valori p.
Masato Nakazawa,

1
Ho la 2a edizione di Kirk, dove credo che la discussione pertinente sia alle pagine 443-449, che discute un esempio a due (non a tre). I quadrati medi attesi, assumendo o meno l'aggiunta di A e B, sono riportati a pag. 447. Supponendo che A e B siano fissi e i soggetti / blocchi siano casuali, possiamo vedere dai quadrati medi previsti elencati da Kirk nel "modello non additivo" che i test di A, B e AB comportano ciascuno termini di errore diversi, vale a dire, le interazioni rilevanti con blocco / soggetto. Lo stesso principio si estende al presente esempio a tre vie.
Jake Westfall,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.