我已经使用 R 中的 dlmFilter [来自 dlm 包] 将动态线性模型拟合到一些数据。从所述过滤器中,我使用 dlmForecast 函数预测了提前 7 步。预测的结果非常好,但我想添加一个 95% 的置信区间,并且 [经过大量测试] 很难做到这一点。
我在下面模拟了一些类似的代码:
library(dlm)
data <- c(20.68502, 17.28549, 12.18363, 13.53479, 15.38779, 16.14770, 20.17536, 43.39321, 42.91027, 49.41402, 59.22262, 55.42043)
mod.build <- function(par) {
dlmModPoly(1, dV = exp(par[1]), dW = exp(par[2]))
}
# Returns most likely estimate of relevant values for parameters
mle <- dlmMLE(a2, rep(0,2), mod.build); #nileMLE$conv
if(mle$convergence==0) print("converged") else print("did not converge")
mod1 <- dlmModPoly(dV = v, dW = c(0, w))
mod1Filt <- dlmFilter(a1, mod1)
fut1 <- dlmForecast(mod1Filt, n = 7)
预测结果似乎非常好[尽管由于观察次数较少,该模型在某种程度上过度拟合了数据]。但是,我想添加一个 95% 的置信区间,并且一直在努力弄清楚如何做到这一点。
任何意见,将不胜感激?
干杯