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 вряд ли будет очень многообещающим, поскольку скрытые тренды представляют собой случайные обходы, которые обычно дают очень плохие модели прогнозирования.

Другие вопросы по тегам