How to deal with NA in panel data regression?

I am trying to predict set values โ€‹โ€‹over data containing NA s, and based on the model generated by plm . Here is a sample code:

 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 

When I run the last line, I get an error message indicating that the replacement has 4 lines, while the data has 5 lines.

I have no idea how to get the prediction to return a vector of length 5 ...

If instead of running plm start lm (as in the line below), I get the expected result.

 model <- lm(y ~ x, data=test.data, na.action=na.exclude) 
+7
source share
1 answer

I think this is what predict.plm should handle for you - it seems to be an oversight of some of the authors of the package, but you can use ?napredict to implement it for yourself:

  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 
+8
source

All Articles