2014-05-13 3 views
5

के साथ लगाए गए मॉडल को में lmer() के साथ एक मॉडल लगाया गया है-lme4 पैकेज से कार्य।एक lmer() से गुणांक को कैसे असुरक्षित करें - एक स्केल्ड प्रतिक्रिया

mod <- lmer(scale(Y) 
       ~ X 
       + (X | Z), 
       data = df, 
       REML = FALSE) 

मैं fixef(mod) साथ फिक्स्ड प्रभाव गुणांक को देखो:

> fixef(mod) 
    (Intercept)  X1   X2   X3   X4 
    0.08577525 -0.16450047 -0.15040043 -0.25380073 0.02350007 

यह काफी से निश्चित प्रभाव गुणांक हाथ से साधन की गणना करने के लिए आसान है मैं निर्भर चर बढ़ाए गए हैं। हालांकि, मैं चाहता हूं कि उन्हें अनसुलझा किया जाए और मुझे यकीन है कि यह कैसे करना है। मुझे पता है कि स्केलिंग का मतलब हर Y से मानक को घटाकर और मानक विचलन से विचलित करना है। लेकिन दोनों, औसत और मानक विचलन, मूल डेटा से गणना की गई थी। मूल डेटा के औसत और मानक विचलन का उपयोग कर lmer() -model फिट करने के बाद क्या मैं बस इस प्रक्रिया को उलट सकता हूं?

किसी भी मदद के लिए धन्यवाद!


अद्यतन: जिस तरह से मैं मॉडल प्रस्तुत ऊपर सूचित करते हैं कि आश्रित चर सभी जवाबों से अधिक मतलब लेने और सभी प्रतिक्रियाओं के मानक विचलन से विभाजित करके माप लिया जाता है लगता है। आमतौर पर, यह अलग-अलग किया जाता है। समग्र माध्य और मानक विचलन लेने के बजाय प्रतिक्रियाओं को उस विषय के जवाबों के माध्य और मानक विचलन का उपयोग करके प्रति विषय मानकीकृत किया जाता है। (यह lmer() में अजीब है, मुझे लगता है कि यादृच्छिक अवरोध उस पर ध्यान देना चाहिए ... इस तथ्य का जिक्र नहीं है कि हम एक सामान्य पैमाने पर गणना की गणना के बारे में बात कर रहे हैं ...) समस्या हालांकि वही रहती है: एक बार जब मैं इस तरह के मॉडल को फिट किया गया है, क्या फिट मॉडल के गुणांक को पुन: सहेजने का एक साफ तरीका है?

+0

मुझे यकीन है कि वहाँ एक आसान तरीका है नहीं कर रहा हूँ करने के लिए "गैर-स्केल" उत्तरार्द्ध procedu फिर (यानी प्रत्येक विषय को अलग से स्केलिंग) - यह वास्तव में मेरे लिए एक अलग मॉडल की तरह लगता है ... मुझे पूरी तरह से यकीन नहीं है कि आप क्यों चाहते हैं ... –

+1

मुझे शक है। इससे कोई फर्क नहीं पड़ता कि मैंने मॉडल को कैसे लिखा है, मैं पुन: सहेजने के उचित तरीके से नहीं आया था। मैं इस प्रक्रिया के साथ अजीब होने के लिए काफी सहमत हूं। लेकिन यह कुछ कागजात में पाया जा सकता है। मुझे नहीं लगता कि आप प्रति विषय प्रतिक्रिया को मानकीकृत करने और यादृच्छिक अंतःक्रियाओं को अनुमति देने के लिए क्यों बाध्य होंगे। ऐसा लगता है कि एक ही समस्या को हल करने वाली दो चीजें हैं; शायद उचित व्यक्तिगत मतभेदों को कम करके आंका जा सकता है। लेकिन उत्तर के साथ आने की कोशिश करने के लिए बहुत बहुत धन्यवाद! –

उत्तर

6

अद्यतन: प्रतिक्रिया के साथ-साथ भविष्यवाणियों के स्केलिंग की अनुमति देने के लिए सामान्यीकृत।

यहां एक काफी कच्चे कार्यान्वयन है।

तो हमारे मूल (बगैर माप) प्रतिगमन

Y = b0 + b1*x1 + b2*x2 ... 

है तो फिर हमारे स्केल प्रतिगमन है

(Y0-mu0)/s0 = b0' + (b1'*(1/s1*(x1-mu1))) + b2'*(1/s2*(x2-mu2))+ ... 

यह

Y0 = mu0 + s0((b0'-b1'/s1*mu1-b2'/s2*mu2 + ...) + b1'/s1*x1 + b2'/s2*x2 + ...) 
i>0 के लिए

तो bi = s0*bi'/si और

के बराबर है
b0 = s0*b0'+mu0-sum(bi*mui) 

इस लागू:

ss <- scale(state.x77) 

स्केल्ड गुणांक:

m1 <- lm(Illiteracy~.,as.data.frame(state.x77)) 
b1 <- coef(m1) 

डेटा का एक छोटा संस्करण बनाओ:

rescale.coefs <- function(beta,mu,sigma) { 
    beta2 <- beta ## inherit names etc. 
    beta2[-1] <- sigma[1]*beta[-1]/sigma[-1] 
    beta2[1] <- sigma[1]*beta[1]+mu[1]-sum(beta2[-1]*mu[-1]) 
    beta2 
} 

एक रेखीय मॉडल के लिए इसे आजमाएं

m1S <- update(m1,data=as.data.frame(ss)) 
b1S <- coef(m1S) 

अब rescaling आजमा कर देखें:

icol <- which(colnames(state.x77)=="Illiteracy") 
p.order <- c(icol,(1:ncol(state.x77))[-icol]) 
m <- colMeans(state.x77)[p.order] 
s <- apply(state.x77,2,sd)[p.order] 
all.equal(b1,rescale.coefs(b1S,m,s)) ## TRUE 

मतलब यह है कि दोनों प्रतिक्रिया और भविष्यवक्ताओं मापा जाता है।

  • आप पैमाने पर केवल प्रतिक्रिया और नहीं भविष्यवक्ताओं, तो आप प्रस्तुत करना चाहिए (m के लिए c(mean(response),rep(0,...)) और s (के लिए c(sd(response),rep(1,...)) यानी, m और s मूल्यों जिसके द्वारा चर स्थानांतरित कर दिया और उनके आकलन किया गया) कर रहे हैं।
  • हैं
  • आप केवल भविष्यवक्ताओं और नहीं प्रतिक्रिया पैमाने पर है, तो c(0,mean(predictors))m और c(1,sd(predictors)) के लिए s के लिए सबमिट करें।
+1

आपने स्वतंत्र चर 'icol <- जो (colnames (state.x77) == "निरक्षरता") को स्केल किया है, 'ss <- state.x77',' ss [, - icol] <- scale (ss [, -icol]) '। लेकिन मैंने डिजाइन में निर्भर चर को स्केल किया। तो मैंने 'state.x77' डेटा का उपयोग करके क्या किया है:' m1Sy <- lm (स्केल (निरक्षरता) ~।, As.data.frame (state.x77)) '। अब मुझे मॉडल आउटपुट में जेड-ट्रांसफॉर्म किए गए गुणांक मिलते हैं और मैं इसे मूल पैमाने पर साधनों को साकार करने के लिए उलटा करना चाहता हूं। लेकिन शायद मैं आपके समाधान का गलत व्याख्या कर रहा हूं। –

+0

और यदि कुछ पृष्ठभूमि उपयोगी होती है: कुछ विषयों में मामूली प्रतिक्रियाओं को मापने और 'lmer()' फिट करने की एक मजबूत प्रवृत्ति प्रतीत होती है। इतना ही नहीं कि मुझे संदेह है कि यह उचित है (औपचारिक चर) लेकिन मैं खुद से पूछता हूं कि वे मूल पैमाने पर कैसे वापस आते हैं, उदा। जब मतलब (रेटिंग) और त्रुटि सलाखों की साजिश करते हैं।दृढ़ता से संबंधित: ['lmer()' बनाम 'clmm()' ordinal प्रतिक्रिया के साथ] (http://stats.stackexchange.com/questions/97582/linear-mixed-effect-model-vs-ordered-probit-vs- आदेश दिया गया-लॉग-इन-ऑर्डिनल-रेस) –

+0

ओह, गलत प्रश्न का उत्तर दिया - यह वापस आ जाएगा। –

संबंधित मुद्दे

 संबंधित मुद्दे