2012-06-07 34 views
7

में अनुसंधान में, जब lm() का उपयोग कर, अगर मैं lm() करने के लिए कॉल के अंदर na.action = na.pass निर्धारित करते हैं, तो सारांश तालिका में कोई गुणांक कि अनुमान नहीं किया जा सकता है के लिए एक एनए (क्योंकि है इस मामले में गायब कोशिकाओं के)।अलग एनए कार्यों आर

यदि, हालांकि, मैं summary(myModel)$coefficients या coef(summary(myModel)) का उपयोग करके सारांश वस्तु से केवल गुणांक निकालता हूं, तो एनए को छोड़ दिया जाता है।

मैं चाहता हूं कि एनए को शामिल किया जाए जब मैं गुणांक को उसी तरह से निकालूं जब वे सारांश मुद्रित करते हैं। क्या इसे करने का कोई तरीका है?

options(na.action = na.pass) सेट करना मदद नहीं प्रतीत होता है।

> set.seed(534) 
> myGroup1 <- factor(c("a","a","a","a","b","b")) 
> myGroup2 <- factor(c("first","second","first","second","first","first")) 
> myDepVar <- rnorm(6, 0, 1) 
> myModel <- lm(myDepVar ~ myGroup1 + myGroup2 + myGroup1:myGroup2) 
> summary(myModel) 

Call: 
lm(formula = myDepVar ~ myGroup1 + myGroup2 + myGroup1:myGroup2) 

Residuals: 
     1  2  3  4  5  6 
-0.05813 0.55323 0.05813 -0.55323 -0.12192 0.12192 

Coefficients: (1 not defined because of singularities) 
        Estimate Std. Error t value Pr(>|t|) 
(Intercept)   -0.15150 0.23249 -0.652 0.561 
myGroup11   0.03927 0.23249 0.169 0.877 
myGroup21   -0.37273 0.23249 -1.603 0.207 
myGroup11:myGroup21  NA   NA  NA  NA 

Residual standard error: 0.465 on 3 degrees of freedom 
Multiple R-squared: 0.5605,  Adjusted R-squared: 0.2675 
F-statistic: 1.913 on 2 and 3 DF, p-value: 0.2914 

> coef(summary(myModel)) 
       Estimate Std. Error t value Pr(>|t|) 
(Intercept) -0.15149826 0.2324894 -0.6516352 0.5611052 
myGroup11 0.03926774 0.2324894 0.1689012 0.8766203 
myGroup21 -0.37273117 0.2324894 -1.6032180 0.2072173 

> summary(myModel)$coefficients 
       Estimate Std. Error t value Pr(>|t|) 
(Intercept) -0.15149826 0.2324894 -0.6516352 0.5611052 
myGroup11 0.03926774 0.2324894 0.1689012 0.8766203 
myGroup21 -0.37273117 0.2324894 -1.6032180 0.2072173 

उत्तर

1

आप क्यों नहीं बस फिट मॉडल से गुणांक निकालने नहीं है::

> coef(myModel) 
      (Intercept)    myGroup1b 
      -0.48496169    -0.07853547 
      myGroup2second myGroup1b:myGroup2second 
       0.74546233      NA 

सबसे आसान विकल्प लगता है कि

यहाँ एक उदाहरण है।

na.action इसके साथ कुछ लेना देना नहीं है। ध्यान दें कि आपके उदाहरण में na.action = na.pass पास नहीं हुआ था।

na.actionडेटा, एक मॉडल फिट करने के लिए पारित किया आम तौर पर एक फार्मूले के साथ संयोजन के रूप में में NA निपटने के लिए एक वैश्विक विकल्प है; यह na.action() फ़ंक्शन का नाम भी है। आर data तर्क और सूत्र में व्यक्त मॉडल के प्रतीकात्मक प्रतिनिधित्व से तथाकथित मॉडल फ्रेम बनाता है। इस बिंदु पर, NA का पता लगाया जाएगा और na.action के लिए डिफ़ॉल्ट विकल्प NA को किसी भी चर के लिए NA के साथ नमूने छोड़कर डेटा से को निकालने के लिए उपयोग करना है। विकल्प हैं, सबसे उपयोगी na.exclude(), जो फिटिंग के दौरान NA हटा देंगे लेकिन फिट मूल्यों, अवशेषों आदि में सही स्थानों में NA वापस जोड़ें। ?na.omit और ?na.action और अधिक के लिए ?options और अधिक के लिए पढ़ें।

+2

समझा कि na.action सेटिंग्स इस समस्या से संबंधित नहीं हैं के लिए धन्यवाद। फिट मॉडल से गुणांक निकालने से अंतिम उपाय के रूप में काम किया जा सकता है, लेकिन मैं सारांश तालिका में आत्मविश्वास अंतराल के लिए कुछ कॉलम बांधना चाहता था। मैं सिर्फ अनुमान नहीं चाहता; मैं मानक त्रुटियों, पी-मूल्यों, आदि को अंत में संलग्न आत्मविश्वास अंतराल के साथ चाहता हूं। मैं सिर्फ टेबल को खरोंच से बना सकता था, लेकिन मैंने सोचा कि कुछ सरल सेटिंग हो सकती है जिसे 'कोफ (सारांश (myModel))' और 'confint (myModel) 'प्राप्त करने के लिए बदलने की आवश्यकता होती है, उसी क्रम में पंक्तियों की समान संख्या को आउटपुट करने के लिए । – Jdub

+0

@Jdub, क्या आप इसे समझ गए? मेरी भी यही समस्या है। –

+0

वही यहाँ! एक ही समस्या है – vagabond

0

सारांश.एलएम के दस्तावेज का कहना है कि 'एलियड गुणांक वापसी वस्तु में छोड़े जाते हैं लेकिन प्रिंट विधि' द्वारा बहाल किए जाते हैं। ऐसा लगता है कि इस छोड़ने के लिए कोई पैरामीटर नहीं है। @Gavin Simpson द्वारा सुझाए गए अनुसार कोफ (सारांश (myModel)) का उपयोग करने के अलावा चारों ओर एक और काम है। आप एक मैट्रिक्स

nr <- num_regressors - nrow(summary(myModel)$coefficients) ##num_regressors shall be defined previously 
nc <- 4 
rnames <- names(which(summary(myModel)$aliased)) 
cnames <- colnames(summary(myModel)$coefficients) 
mat_na <- matrix(data = NA,nrow = nr,ncol = nc, 
      dimnames = list(rnames,cnames)) 

बनाने और उसके बाद दो matrice rbind कर सकते हैं:

mat_coef <- rbind(summary(myModel)$coefficients,mat_na)