R Прогнозирование с ковариатами пакета MARSS
Я написал модель с пакетом MARSS для R.
Основная идея модели заключается в прогнозировании наблюдаемого вектора как минимум на 10 кварталов, однако я не могу сделать это с помощью функции MARSSsimulate (я полагаю, что это связано с включением в оценку экзогенного вектора, названного сезоном) процесс). Буду очень признателен за вашу помощь.
Заранее спасибо!
Набор данных можно скачать здесь
Я использовал следующий код
info <- read.table("series_kalman2.txt",header=T,dec=".")
dat_est_spa <- t(info[,3:6])
Sigma <- sqrt(apply(dat_est_spa, 1, var, na.rm=TRUE))
y.bar <- apply(dat_est_spa, 1, mean, na.rm=TRUE)
dat.z <- (dat_est_spa - y.bar) * (1/Sigma)
rownames(dat.z) = rownames(dat_est_spa)
N.ts <- dim(dat_est_spa)[1]
season <- rbind(rep(c(1,0,0,0),ceiling(dim(dat_est_spa)[2]/4)),
rep(c(0,1,0,0),ceiling(dim(dat_est_spa)[2]/4)),
rep(c(0,0,1,0),ceiling(dim(dat_est_spa)[2]/4)),
rep(c(0,0,0,1),ceiling(dim(dat_est_spa)[2]/4)))
rownames(season) <- c("Q1","Q2","Q3","Q4")
season <- season[,-((dim(dat_est_spa)[2]+1):dim(season)[2])]
### Model
cntl.list = list(minit=200, maxit=60000, allow.degen=FALSE)
mod_est_spa <- list(A="zero", R="diagonal and equal", m=3)
estim_est_spa <- MARSS(dat.z, model=mod_est_spa, control=cntl.list,
form="dfa", covariates=season)
### Forecast
MARSSsimulate(estim_est_spa, tSteps = 10)
1 ответ
Я не могу загрузить файл данных со связанного сайта, так как в нем указано "отказано в разрешении".
Во всяком случае, вы правы в том, что включение season
ковариата будет исключать использование MARSSsimulate()
, но у вас есть еще один вариант, который идет с большой оговоркой.
Вы устанавливаете модель DFA с тремя скрытыми тенденциями, которые сами по себе являются просто непредвзятыми случайными прогулками. Таким образом, вы можете легко смоделировать случайные блуждания, нарисовав инновации из многомерной нормали со средним вектором
mu = matrix(0, m, 1)
и дисперсионно-ковариационная матрица
Sigma = coef(estim_est_spa, "matrix")$Q
,
Вы можете получить оценочные состояния для последнего шага времени T, который будет отправной точкой для ваших прогнозируемых состояний,
X_T = estim_est_spa$states[,dim(dat_est_spa)[2]]
,
Нагрузки
Z = coef(estim_est_spa, "matrix")$Q
,
который должен был бы быть повернут. См. Пример DFA в руководстве пользователя MARSS для математической математики.
Тем не менее, обратите внимание, что прогнозирование с использованием модели DFA вряд ли будет очень многообещающим, поскольку скрытые тренды представляют собой случайные обходы, которые обычно дают очень плохие модели прогнозирования.