Используя пакет dlm в RI, сопоставьте линейную модель Dynami c с набором данных временного ряда, состоящим из 20 наблюдений. Затем я использую функцию dlmForecast для прогнозирования будущих значений (которые я могу проверить по подлинным данным за указанный период).
Я использую следующий код для создания интервала прогнозирования:
ciTheory <- (outer(sapply(fut1$Q, FUN=function(x) sqrt(diag(x))), qnorm(c(0.05,0.95))) +
as.vector(t(fut1$f)))
Однако мои данные не соответствуют нормальному распределению, и я задавался вопросом, можно ли адаптировать функцию qnorm
для других распределений. Я пробовал qt
, но не могу применить qgamma
.......
Просто интересно, знает ли кто-нибудь, как go отсортировать это .....
Ниже воспроизводится версия моего кода ...
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)
Ура