1

我用 R 的 MARSS 包编写了一个模型。

该模型背后的主要思想是预测至少 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)
4

1 回答 1

1

我无法从链接站点下载数据文件,因为它显示“权限被拒绝”。

无论如何,您是正确的,因为包含season协变量将排除使用MARSSsimulate(),但是您确实有另一个选项带有一个很大的警告。

您正在拟合具有 3 个潜在趋势的 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,

这将需要旋转。有关矩阵数学,请参阅MARSS 用户指南中的 DFA 示例。

但是请注意,使用 DFA 模型进行预测的可能性不大,因为潜在趋势是随机游走,这通常会生成非常糟糕的预测模型。

于 2017-05-31T23:33:01.513 回答