我试图用 R 中的 ARIMA 模型估算时间序列中的缺失值。我尝试了这段代码,但没有成功。

x <- AirPassengers
x[90:100] <- NA
fit <- auto.arima(x)
fitted(fit)[90:100]  ## this is giving me NAs
plot(x)
lines(fitted(fit), col="red")

拟合模型不估算缺失值。关于如何做到这一点的任何想法?

最佳答案

fitted 提供样本内一步预测。做你想做的“正确”方法是通过卡尔曼平滑器。使用缺失部分的前向和后向预测的平均值获得对大多数用途来说足够好的粗略近似值。像这样:

x <- AirPassengers
x[90:100] <- NA
fit <- auto.arima(x)
fit1 <- forecast(Arima(AirPassengers[1:89],model=fit),h=10)
fit2 <- forecast(Arima(rev(AirPassengers[101:144]), model=fit), h=10)

plot(x)
lines(ts(0.5*c(fit1$mean+rev(fit2$mean)),
  start=time(AirPassengers)[90],freq=12), col="red")

关于r - 使用 ARIMA 模型估算缺失值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30584423/

10-11 04:22