Подгонка доверительного интервала к dlmForecast в R

Я применил динамическую линейную модель к некоторым данным, используя dlmFilter в R [из пакета dlm]. С помощью указанного фильтра я предсказал на 7 шагов вперед, используя функцию dlmForecast. Прогнозируемый результат очень хороший, но я хотел бы добавить 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% доверительный интервал и изо всех сил пытался понять, как это сделать.

Любой совет будет принят во внимание?

Ура

1 ответ

hwidth <- (outer(sapply(fut1$Q, FUN=function(x) sqrt(diag(x))), qnorm(0.025, lower = FALSE)) +as.vector(t(fut1$f)))
Другие вопросы по тегам