2011-10-25 28 views
5

क्या निम्नलिखित मॉडल के साथ गलत है:lme4 मिश्रित मॉडल त्रुटि

# simulated data yr = 2; vg = 4, fm = 5, gen = 5 
    mbb <- data.frame(trait1 = rnorm(200, 15, 4),yr = c(rep (1:2, each = 100)), 
    vg = c(rep(rep(1:4, each =25), 2)), fm = rep(rep(1:5, each = 5), 8), 
    gen = sample(c(1:5), 200, replace = T)) 
    require(lme4) 
    lmer(trait1 ~ (yr + vg + gen)^3 + (yr + vg + gen|fm:vg), data= mbb)# full model 

मैं निम्न त्रुटि हो रही है: बातचीत मॉडल करने के लिए के रूप में एक यादृच्छिक प्रभाव जोड़ने के लिए है

Error in validObject(.Object) : 
    invalid class "mer" object: Slot Zt must by dims['q'] by dims['n']*dims['s'] 
In addition: Warning messages: 
1: In fm:vg : numerical expression has 200 elements: only the first used 
2: In fm:vg : numerical expression has 200 elements: only the first used 
+0

यह आपके यादृच्छिक प्रभाव के इंटरैक्शन बिट की तरह प्रतीत नहीं होता है। 'Gen | fm: vg' से' gen | fm' बदलें और यह चलता है। इस के अर्थ के बारे में अभी तक सुनिश्चित नहीं है। –

उत्तर

7

समस्या ठीक है कि fm और vg कारक के रूप में नहीं, संख्यात्मक रूप में जमा हो जाती है, और इसलिए lmer की कोशिश करता एक दृश्य ऑपरेटर के रूप में fm:vg व्याख्या करने के लिए (?seq देखें) एक इंटरैक्शन ऑपरेटर की बजाय (?interaction देखें)। आप कर सकते हैं:

  • परिवर्तित fm और vg डेटा फ्रेम (mbb <- transform(mbb,vg=factor(vg),fm=factor(fm))) [यह अपने सेटअप है कि क्या आप vg और fm कारकों या सतत भविष्यवक्ताओं होना चाहता हूँ से स्पष्ट नहीं है के भीतर कारकों की ... उस भेद बहुत होगा महत्वपूर्ण, ज़ाहिर है ... आप उन्हें निरंतर भविष्यफल बताने चाहते हैं, तो यह उनके समूह के प्रयोजनों के लिए कारक के रूप में इलाज के लिए थोड़ा अजीब है कि अगर ...]
  • बातचीत स्पष्ट रूप interaction(fm,vg) के रूप में मक्खी पर लिखने
  • फ्लाई पर कारकों में कनवर्ट करें ((yr+vg+gen|factor(fm):factor(vg)))
  • उपयोग जिम एम के समाधान

    मुझे लगता है कि इन करेंगी, हालांकि मुझे स्वीकार करने के लिए कि मैं उन्हें परीक्षण नहीं किया है।

3

एक संभव समाधान एमबीबी डेटा फ्रेम में एक अतिरिक्त कॉलम के रूप में बातचीत शब्द।

mbb$fmvg <- with(mbb, interaction(fm,vg, sep=":")) 

मॉडल तो हो जाता है

lmer(trait1 ~ (yr + vg + gen)^3 + (yr + vg + gen|fmvg), data= mbb) 
संबंधित मुद्दे