2013-01-20 14 views
7

Ich versuche, angepasste Werte über Daten zu prognostizieren, die NA s enthalten und auf einem Modell basieren, das von plm generiert wird. Hier ist ein Beispielcode:Wie geht man mit NA in einer Panel-Daten-Regression um?

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 

Als ich die letzte Zeile laufen bekomme ich eine Fehlermeldung, dass der Ersatz hat vier Reihen, während die Daten 5 Zeilen.

Ich habe keine Ahnung, wie 5 ... einen Vektor der Länge

zu bekommen vorhersagen zurückkehren Wenn stattdessen ein plm läuft ich ein lm laufen (wie in der Zeile darunter) bekomme ich das erwartete Ergebnis.

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

Antwort

8

Ich denke, das ist etwas, das predict.plmsollte für Sie behandeln - scheint ein Versehen seitens -Paket Autoren - aber Sie ?napredict können es für sich selbst implementieren:

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