मिश्रित प्रभाव मॉडल के लिए मॉडल मैट्रिसेस


10

में 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

इनमें से प्रत्येक मेट्रिसेस को ट्रांसपोज़ करना और खत्री-राव गुणन करना:

[111111]*[111111-11-11-11]=[11-1111-1111-11]

लेकिन इसका प्रस्ताव है:जेडमैं

(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नींद की कमी के पहले दिन के लिए, आदि।

जेमैं जेड मैं = ( जे टी मैं * एक्स टी मैं ) जेड मैं = ( जे टी मैंएक्स टी मैं ) एक्समैं जेडमैं=(जेमैंटी*एक्समैंटी) जेडमैं=(जेमैंटीएक्समैंटी)

यहाँ एक संभावना है,

[111111111111111111111111111111]*[11111111110123456789]=

[1111111111....................0123456789.............................1111111111...................0123456789..............................1111111111...................0123456789]

lmerएक्समैं


1
जेड

आपके संकेत के लिए धन्यवाद। मैं इस फ़ंक्शन के रैखिक बीजगणित कंकाल में सभी उप-इंद्रियों की भावना बनाने पर काम करता रहूंगा। यदि यह जगह पर क्लिक करता है, तो मैं आगे जाऊंगा और अपने स्वयं के प्रश्न का उत्तर दूंगा, लेकिन हालांकि मुझे पता है कि गहरी-डाउन सरल है, गणित मचान नामकरण और किसी भी उदाहरण के लिए आवेदन के बीच पत्राचार भ्रामक है।
एंटनी परेलाडा

1
आपके लिए एक और अच्छा संसाधन उनका lme4pureR कार्यान्वयन हो सकता है , जो उपरोक्त विगनेट के साथ आता है और पूरी तरह से आर। में लिखा जाता है। हो सकता है mkZt()( यहाँ इसके लिए खोज ) एक अच्छी शुरुआत है?
एलेक्सफ्रेन्स

जवाबों:


5
  1. जेमैं309330371nrow(sleepstudy[sleepstudy$Subject==309,]) [1] 10

f <- gl(3,10) Ji<-t(as(f,Class="sparseMatrix"))

यहां छवि विवरण दर्ज करें

  1. एक्समैंgetME

    library(lme4) sleepstudy <- sleepstudy[sleepstudy$Subject %in% c(309, 330, 371), ] rownames(sleepstudy) <- NULL fm1<-lmer(Reaction~Days+(Days|Subject), sleepstudy)

Xi <- getME(fm1,"mmList")

यहां छवि विवरण दर्ज करें

चूंकि हमें ट्रांसपोज़ की आवश्यकता होगी, और ऑब्जेक्ट Xiएक मैट्रिक्स नहीं है, इसे इस t(Xi)प्रकार बनाया जा सकता है:

t_Xi <- rbind(c(rep(1,30)),c(rep(0:9,3)))

  1. जेडमैंजेडमैं=(जेमैंटी*एक्समैंटी)

Zi<-t(KhatriRao(t_Ji,t_Xi)):

यहां छवि विवरण दर्ज करें

यह मूल पेपर में समीकरण (6) से मेल खाती है :

जेडमैं=(जेमैंटी*एक्समैंटी)टी=[जेमैं1टीएक्समैं1टीजेमैं2टीएक्समैं2टीजेमैंnटीएक्समैंnटी]

जेमैंटीएक्समैंटी

जेमैंटी=[110000001100000011]एक्समैंटी=[111111010101]

तथा

जेमैंटी*एक्समैंटी=[(100)(10)(100)(11)(010)(10)(010)(11)(001)(10)(001)(11)]

=[जेमैं1टीएक्समैं1टीजेमैं2टीएक्समैं2टीजेमैं3टीएक्समैं3टीजेमैं4टीएक्समैं4टीजेमैं5टीएक्समैं5टीजेमैं6टीएक्समैं6टी]

=[110000010000001100000100000011000001]जेडमैं=[100000110000120000001000001100001200000010000011000012]

b <- getME(fm1,"b")

[1,] -44.1573839
[2,]  -2.4118590
[3,]  32.8633489
[4,]  -0.3998801
[5,]  11.2940350
[6,]   2.8117392

यदि हम इन मानों को कॉल के निश्चित-प्रभावों से जोड़ते हैं, तो हमें fm1<-lmer(Reaction~Days+(Days|Subject), sleepstudy)इंटरसेप्ट्स मिलते हैं:

205.3016 for 309; 282.3223 for 330; and 260.7530 for 371

और ढलान:

2.407141 for 309; 4.419120 for 330; and 7.630739 for 371

मूल्यों के अनुरूप:

library(lattice)
xyplot(Reaction ~ Days | Subject, groups = Subject, data = sleepstudy, 
       pch=19, lwd=2, type=c('p','r'))

यहां छवि विवरण दर्ज करें

  1. जेडas.matrix(Zi)%*%b
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.