Modello misto lineare multivariato in lme4
Domanda
Mi chiedo come adattare il modello misto lineare multivariato con lme4
.Ho montato modelli misti lineari univariati con il seguente codice:
library(lme4)
lmer.m1 <- lmer(Y1~A*B+(1|Block)+(1|Block:A), data=Data)
summary(lmer.m1)
anova(lmer.m1)
lmer.m2 <- lmer(Y2~A*B+(1|Block)+(1|Block:A), data=Data)
summary(lmer.m2)
anova(lmer.m2)
Mi piacerebbe sapere come adattare il modello misto lineare multivariato con lme4
.I dati sono di seguito:
Block A B Y1 Y2
1 1 1 135.8 121.6
1 1 2 149.4 142.5
1 1 3 155.4 145.0
1 2 1 105.9 106.6
1 2 2 112.9 119.2
1 2 3 121.6 126.7
2 1 1 121.9 133.5
2 1 2 136.5 146.1
2 1 3 145.8 154.0
2 2 1 102.1 116.0
2 2 2 112.0 121.3
2 2 3 114.6 137.3
3 1 1 133.4 132.4
3 1 2 139.1 141.8
3 1 3 157.3 156.1
3 2 1 101.2 89.0
3 2 2 109.8 104.6
3 2 3 111.0 107.7
4 1 1 124.9 133.4
4 1 2 140.3 147.7
4 1 3 147.1 157.7
4 2 1 110.5 99.1
4 2 2 117.7 100.9
4 2 3 129.5 116.2
Grazie in anticipo per il tuo tempo e la tua collaborazione.
Soluzione
Questo a volte può essere simulato in modo soddisfacente in nlme / lme4 semplicemente riformattando i dati come
require(reshape)
Data = melt(data, id.vars=1:3, variable_name='Y')
Data$Y = factor(gsub('Y(.+)', '\\1', Data$Y))
> Data
Block A B Y value
1 1 1 1 1 135.8
2 1 1 2 1 149.4
3 1 1 3 1 155.4
4 1 2 1 1 105.9
5 1 2 2 1 112.9
6 1 2 3 1 121.6
...
e quindi includendo la nuova variabile Y
nel modello misto lineare.
Tuttavia, per i veri modelli MGLMM (Multivariate Generalized Linear Mixed Model), probabilmente avrai bisogno del pacchetto sabreR
o simile.C'è anche un intero libro per accompagnare il pacchetto, Modelli misti lineari generalizzati multivariati che utilizzano R .Se hai un proxy per un istituto abbonato, potresti persino essere in grado di scaricarlo gratuitamente da http://www.crcnetbase.com/ isbn / 9781439813270 .Ti rimando lì per qualsiasi ulteriore consiglio, poiché questo è un argomento carnoso e io sono un principiante.
Altri suggerimenti
lmer e il suo fratello maggiore lme sono intrinsecamente "un parametro a sinistra di ~".Dai un'occhiata ai pacchetti auto;non offre un supporto standard per misurazioni ripetute, ma troverai alcuni commenti sull'argomento cercando nell'elenco R:
La risposta di @ John sopra dovrebbe essere ampiamente corretta.Aggiungere una variabile fittizia (ad esempio, la variabile fattore Y
) al modello.Qui hai 3 pedici i= 1...N
per le osservazioni, j=1,...,4
per i blocchi e h=1,2
per la variabile dipendente.Ma devi anche forzare il termine di errore di livello 1 a 0 (o quasi a zero), cosa che non sono sicuro che lme4
faccia.Ben Bolker potrebbe fornire ulteriori informazioni.Questo è descritto più dettagliatamente in Goldstein (2011) Chap 6 e Chap 7 per i modelli multivariati latenti.
IE
Y_hij=beta_ {01} z_ {1ij} + \ beta_ {02} z_ {2ij} + \ beta X + u_ {1j} z_ {1ij} + u_ {2j} z_ {2ij}
Quindi:
require(reshape2)
Data = melt(data, id.vars=1:3, variable_name='Y')
Data$Y = factor(gsub('Y(.+)', '\\1', Data$Y))
m1 <- lmer(value ~ Y + A*B + (1|Block) + (1|Block*A), data= Data)
# not sure how to set the level 1 variance to 0, @BenBolker
# also unclear to me if you're requesting Y*A*B instead of Y + A*B