2013-01-20 50 views
7

मैं NA एस वाले डेटा पर फिट मानों की भविष्यवाणी करने की कोशिश कर रहा हूं, और plm द्वारा उत्पन्न मॉडल पर आधारित है। यहां कुछ नमूना कोड है:पैनल डेटा रिग्रेशन में एनए से कैसे निपटें?

require(plm) 
test.data <- data.frame(id=c(1,1,2,2,3), time=c(1,2,1,2,1), 
    y=c(1,3,5,10,8), x=c(1, NA, 3,4,5)) 
model <- plm(y ~ x, data=test.data, index=c("id", "time"), 
     model="pooling", na.action=na.exclude) 
yhat <- predict(model, test.data, na.action=na.pass) 
test.data$yhat <- yhat 

जब मैं अंतिम पंक्ति को चलाने मैं एक त्रुटि करते हुए कहा कि प्रतिस्थापन 4 पंक्तियां हैं, जबकि डेटा 5 पंक्तियां हैं मिलता है।

मुझे पता नहीं कैसे लंबाई 5 का एक वेक्टर वापसी की भविष्यवाणी प्राप्त करने के लिए अगर मैं एक lm चलाने (नीचे लाइन के रूप में) के बजाय एक plm चलाने का मैं उम्मीद परिणाम प्राप्त है ...

model <- lm(y ~ x, data=test.data, na.action=na.exclude) 

उत्तर

8

मुझे लगता है कि यह कुछ ऐसा है predict.plm आप के लिए संभाल करने चाहिए है - पैकेज लेखकों की ओर से एक निरीक्षण की तरह लगता है - लेकिन आप खुद के लिए इसे लागू करने के ?napredict उपयोग कर सकते हैं:

pp <- predict(model, test.data) 
na.stuff <- attr(model$model,"na.action") 
(yhat <- napredict(na.stuff,pp)) 
## [1] 1.371429  NA 5.485714 7.542857 9.600000