Sintesi
Si dice spesso che se tutti i possibili livelli di fattore sono inclusi in un modello misto, questo fattore dovrebbe essere trattato come un effetto fisso. Questo non è necessariamente vero PER DUE MOTIVI DISTINCT:
(1) Se il numero di livelli è elevato, può avere senso trattare il fattore [incrociato] come casuale.
Sono d'accordo con @Tim e @RobertLong qui: se un fattore ha un gran numero di livelli che sono tutti inclusi nel modello (come ad esempio tutti i paesi del mondo; o tutte le scuole in un paese; o forse l'intera popolazione di i soggetti vengono esaminati, ecc.), quindi non c'è nulla di sbagliato nel trattarlo come casuale --- questo potrebbe essere più parsimonioso, potrebbe fornire un certo restringimento, ecc.
lmer(size ~ age + subjectID) # fixed effect
lmer(size ~ age + (1|subjectID)) # random effect
(2) Se il fattore è annidato all'interno di un altro effetto casuale, allora deve essere trattato come casuale, indipendentemente dal suo numero di livelli.
C'è stata un'enorme confusione in questa discussione (vedi commenti) perché altre risposte riguardano il caso n. 1 sopra, ma l'esempio che hai dato è un esempio di situazione diversa , vale a dire questo caso n. 2. Qui ci sono solo due livelli (cioè per niente "un gran numero"!) E esauriscono tutte le possibilità, ma sono nidificati all'interno di un altro effetto casuale , producendo un effetto casuale nidificato.
lmer(size ~ age + (1|subject) + (1|subject:side) # side HAS to be random
Discussione dettagliata del tuo esempio
I lati e le materie del tuo esperimento immaginario sono correlati come classi e scuole nell'esempio di modello gerarchico standard. Forse ogni scuola (n. 1, n. 2, n. 3, ecc.) Ha classe A e classe B, e queste due classi dovrebbero essere più o meno le stesse. Non modellerai le classi A e B come effetto fisso con due livelli; Questo potrebbe essere un errore. Ma non modellerai le classi A e B come un effetto casuale "separato" (cioè incrociato) con due livelli; anche questo sarebbe un errore. Invece, modellerai le classi come un effetto casuale nidificato all'interno delle scuole.
Vedere qui: Effetti casuali incrociati vs nidificati: in che modo differiscono e come vengono specificati correttamente in lme4?
i = 1 … nj = 1 , 2
Tagliai j k= μ + α ⋅ Altezzai j k+ β⋅ Pesoi j k+ γ⋅ Etài j k+ ϵio+ ϵio j+ ϵi j k
εio∼ N( 0 , σ2s u b j e c t s) ,Intercettazione casuale per ogni soggetto
εio j∼ N( 0 , σ2soggetto-side) ,Int casuale per lato annidato nel soggetto
εi j k∼ N( 0 , σ2rumore) ,Termine di errore
Come ti sei scritto, "non c'è motivo di credere che i piedi destri saranno in media più grandi dei piedi sinistri". Quindi non dovrebbe esserci alcun effetto "globale" (né fisso né casuale incrociato) del piede destro o sinistro; invece, si può pensare che ogni soggetto abbia "un" piede e "un altro" piede, e questa variabilità che dovremmo includere nel modello. Questi piedi "uno" e "altro" sono nidificati all'interno dei soggetti, quindi nidificati effetti casuali.
Maggiori dettagli in risposta ai commenti. [Set 26]
Il mio modello sopra include Side come effetto casuale nidificato all'interno di Soggetti. Ecco un modello alternativo, suggerito da @Robert, in cui Side è un effetto fisso:
Tagliai j k= μ + α ⋅ Altezzai j k+ β⋅ Pesoi j k+ γ⋅ Etài j k+ δ⋅ latoj+ ϵio+ ϵi j k
io j
Non può.
Lo stesso vale per l'ipotetico modello di @ gung con Side come effetto casuale incrociato:
Tagliai j k= μ + α ⋅ Altezzai j k+ β⋅ Pesoi j k+ γ⋅ Etài j k+ ϵio+ ϵj+ ϵi j k
Non riesce a tenere conto anche delle dipendenze.
Dimostrazione tramite simulazione [2 ottobre]
Ecco una dimostrazione diretta in R.
Genero un set di dati giocattolo con cinque soggetti misurati su entrambi i piedi per cinque anni consecutivi. L'effetto dell'età è lineare. Ogni soggetto ha un'intercettazione casuale. E ogni soggetto ha uno dei piedi (sinistro o destro) più grande di un altro.
set.seed(17)
demo = data.frame(expand.grid(age = 1:5,
side=c("Left", "Right"),
subject=c("Subject A", "Subject B", "Subject C", "Subject D", "Subject E")))
demo$size = 10 + demo$age + rnorm(nrow(demo))/3
for (s in unique(demo$subject)){
# adding a random intercept for each subject
demo[demo$subject==s,]$size = demo[demo$subject==s,]$size + rnorm(1)*10
# making the two feet of each subject different
for (l in unique(demo$side)){
demo[demo$subject==s & demo$side==l,]$size = demo[demo$subject==s & demo$side==l,]$size + rnorm(1)*7
}
}
plot(1:50, demo$size)
Mi scuso per le mie orribili abilità di R. Ecco come appaiono i dati (ogni cinque punti consecutivi è un piede di una persona misurato nel corso degli anni; ogni dieci punti consecutivi sono due piedi della stessa persona):
Ora possiamo adattare un sacco di modelli:
require(lme4)
summary(lmer(size ~ age + side + (1|subject), demo))
summary(lmer(size ~ age + (1|side) + (1|subject), demo))
summary(lmer(size ~ age + (1|subject/side), demo))
Tutti i modelli includono un effetto fisso di age
e un effetto casuale di subject
, ma trattano side
diversamente.
side
age
t = 1,8
side
age
t = 1.4
side
age
t = 37
Ciò dimostra chiaramente che side
dovrebbe essere trattato come un effetto casuale nidificato.
Infine, nei commenti @Robert ha suggerito di includere l'effetto globale di side
come variabile di controllo. Possiamo farlo, mantenendo l'effetto casuale nidificato:
summary(lmer(size ~ age + side + (1|subject/side), demo))
summary(lmer(size ~ age + (1|side) + (1|subject/side), demo))
side
t = 0,5side