में lmer
समारोह के भीतर lme4
में R
वहाँ यादृच्छिक प्रभाव, के एक मॉडल मैट्रिक्स के निर्माण के लिए एक फोन है , के रूप में समझाया यहाँ , पृष्ठों 7 - 9।
गणना करने से दो मैट्रिसेस, और खत्रीरओ और / या क्रोनकर उत्पादों की । जे आई एक्स आई
मैट्रिक्स एक कौर है: "समूह कारक कारकों का संकेतक मैट्रिक्स", लेकिन यह डमी कोडिंग के साथ एक विरल मैट्रिक्स लगता है कि किस इकाई (उदाहरण के लिए, दोहराव माप में विषय) उच्चतर पदानुक्रमित स्तर के अनुरूप हैं "पर" किसी भी अवलोकन के लिए। मैट्रिक्स कम श्रेणीबद्ध स्तर में माप का एक चयनकर्ता के रूप में कार्य करने के लिए, ताकि दोनों "चयनकर्ताओं" के संयोजन एक मैट्रिक्स प्राप्त होते हैं, लगता है प्रपत्र निम्न उदाहरण के माध्यम से कागज में सचित्र के:
(f<-gl(3,2))
[1] 1 1 2 2 3 3
Levels: 1 2 3
(Ji<-t(as(f,Class="sparseMatrix")))
6 x 3 sparse Matrix of class "dgCMatrix"
1 2 3
[1,] 1 . .
[2,] 1 . .
[3,] . 1 .
[4,] . 1 .
[5,] . . 1
[6,] . . 1
(Xi<-cbind(1,rep.int(c(-1,1),3L)))
[,1] [,2]
[1,] 1 -1
[2,] 1 1
[3,] 1 -1
[4,] 1 1
[5,] 1 -1
[6,] 1 1
इनमें से प्रत्येक मेट्रिसेस को ट्रांसपोज़ करना और खत्री-राव गुणन करना:
लेकिन इसका प्रस्ताव है:
(Zi<-t(KhatriRao(t(Ji),t(Xi))))
6 x 6 sparse Matrix of class "dgCMatrix"
[1,] 1 -1 . . . .
[2,] 1 1 . . . .
[3,] . . 1 -1 . .
[4,] . . 1 1 . .
[5,] . . . . 1 -1
[6,] . . . . 1 1
ऐसा लगता है कि लेखकों डेटाबेस का उपयोग करने sleepstudy
में lme4
, लेकिन वास्तव में डिजाइन मैट्रिक्स पर विस्तृत नहीं है के रूप में वे इस विशेष अध्ययन करने के लिए लागू होते हैं। इसलिए मैं यह समझने की कोशिश कर रहा हूं कि ऊपर दिए गए पेपर में बने कोड कैसे और अधिक सार्थक sleepstudy
उदाहरण में बदल जाएंगे ।
दृश्य सादगी के लिए मैंने डेटा को केवल तीन विषयों में घटाया है - "309", "330" और "371":
require(lme4)
sleepstudy <- sleepstudy[sleepstudy$Subject %in% c(309, 330, 371), ]
rownames(sleepstudy) <- NULL
प्रत्येक व्यक्ति एक बहुत ही अलग-अलग अवरोधक प्रदर्शित करेगा और ढलान को साधारण ओएलएस प्रतिगमन को व्यक्तिगत रूप से माना जाना चाहिए, जो विषयों के अनुरूप उच्च पदानुक्रम या इकाई स्तर के साथ मिश्रित-प्रभाव मॉडल की आवश्यकता का सुझाव देता है:
par(bg = 'peachpuff')
plot(1,type="n", xlim=c(0, 12), ylim=c(200, 360),
xlab='Days', ylab='Reaction')
for (i in sleepstudy$Subject){
fit<-lm(Reaction ~ Days, sleepstudy[sleepstudy$Subject==i,])
lines(predict(fit), col=i, lwd=3)
text(x=11, y=predict(fit, data.frame(Days=9)), cex=0.6,labels=i)
}
मिश्रित प्रभाव प्रतिगमन कॉल है:
fm1<-lmer(Reaction~Days+(Days|Subject), sleepstudy)
और फ़ंक्शन से निकाले गए मैट्रिक्स से पैदावार निम्नलिखित होती है:
parsedFormula<-lFormula(formula= Reaction~Days+(Days|Subject),data= sleepstudy)
parsedFormula$reTrms
$Ztlist
$Ztlist$`Days | Subject`
6 x 12 sparse Matrix of class "dgCMatrix"
309 1 1 1 1 1 1 1 1 1 1 . . . . . . . . . . . . . . . . . . . .
309 0 1 2 3 4 5 6 7 8 9 . . . . . . . . . . . . . . . . . . . .
330 . . . . . . . . . . 1 1 1 1 1 1 1 1 1 1 . . . . . . . . . .
330 . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9 . . . . . . . . . .
371 . . . . . . . . . . . . . . . . . . . . 1 1 1 1 1 1 1 1 1 1
371 . . . . . . . . . . . . . . . . . . . . 0 1 2 3 4 5 6 7 8 9
यह सही लगता है, लेकिन अगर यह है, तो इसके पीछे रैखिक बीजगणित क्या है? मुझे लगता है कि 1
जैसे व्यक्तियों के चयन की पंक्तियाँ समझ में आती हैं। उदाहरण के लिए, 309
बेसलाइन + नौ टिप्पणियों के लिए विषय चालू है, इसलिए यह चार 1
और आगे निकल जाता है। दूसरा भाग स्पष्ट रूप से वास्तविक माप है: 0
आधारभूत के लिए, 1
नींद की कमी के पहले दिन के लिए, आदि।
जेड मैं = ( जे टी मैं * एक्स टी मैं ) ⊤ जेड मैं = ( जे टी मैं ⊗ एक्स टी मैं ) ⊤
यहाँ एक संभावना है,
lmer
mkZt()
( यहाँ इसके लिए खोज ) एक अच्छी शुरुआत है?