我用R的MARSS包编写了一个模型。
该模型背后的主要思想是预测可观察的载体至少10个季度,但我似乎无法使用MARSSsimulate函数(我认为这是因为包含了外源载体,命名为季节,在估计过程中)。我非常感谢你的帮助。
提前致谢!
可以下载数据集here
我使用了以下代码
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)
答案 0 :(得分:1)
我无法从链接网站下载数据文件,因为它显示“权限被拒绝”。
无论如何,你是正确的,因为包含season
协变量会排除MARSSsimulate()
的使用,但你确实有另一个选择,附带一个很大的警告。
你正在为DFA模型拟合3个潜在趋势,这些趋势本身只是无偏见的随机游走。因此,您可以通过从具有平均向量
的多元法线绘制创新来轻松地模拟随机游走 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 User's Guide中的DFA示例。
但请注意,使用DFA模型进行预测的可能性不大,因为潜在趋势是随机游走,这通常会使预测模型非常糟糕。