Как бороться с NA в регрессии панельных данных?

Я пытаюсь предсказать подходящие значения по данным, содержащим NAs, и на основе модели, созданной 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...

Если вместо запуска plm я запускаю lm (как в строке ниже), я получаю ожидаемый результат.

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

person Rodrigo    schedule 20.01.2013    source источник


Ответы (1)


Я думаю, это то, что 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
person Ben Bolker    schedule 20.01.2013