【问题标题】:Multivariate time series model using MARSS package (or maybe dlm)使用 MARSS 包(或者可能是 dlm)的多元时间序列模型
【发布时间】:2014-07-04 15:41:28
【问题描述】:

我有两个时间过程。我想看看是否可以使用一个时间过程 (X_{t,2}) 来更好地预测另一个过程 (X_{t,1})。我有多个来源提供关于 X_{t,2} 的时间数据(例如 3 个测量 X_{t,2} 的时间序列)。所有时间序列都需要季节性成分。

我发现 MARSS 的符号很自然地适合这种类型的模型,代码如下所示:

Z=factor(c("R","S","S","S")) # observation matrix
B=matrix(list(1,0,"beta",1),2,2) #evolution matrix
A="zero" #demeaned
R=matrix(list(0),4,4); diag(R)=c("r","s","s","s")
Q="diagonal and unequal"
U="zero"
period = 12
per.1st = 1 # Now create factors for seasons
c.in = diag(period)
for(i in 2:(ceiling(TT/period))) {c.in = cbind(c.in,diag(period))}
c.in = c.in[,(1:TT)+(per.1st-1)]
rownames(c.in) = month.abb
C = "unconstrained" #2 x 12 matrix
dlmfit = MARSS(data, model=list(Z=Z,B=B,Q=Q,C=C, c=c.in,R=R,A=A,U=U))

我得到一个 beta 估计值,暗示第二个时间过程在预测第一个过程时很有用,但令我沮丧的是,当我使用 MARSSsimulate 进行预测时,MARSS 给了我一个错误,因为其中一个矩阵(与季节性有关)是时间 -变化无常。

任何人,知道解决这个 MARSS 包问题的方法吗?如果没有,关于使用 dlm 包拟合类似模型的任何提示?

【问题讨论】:

    标签: r


    【解决方案1】:

    我能够以足以与 dlm 包一起使用的形式表示我的状态空间模型。但是我在使用 dlm 时也遇到了一些问题。首先,ML 估计非常不稳定。我通过基于 marss 估计构建 dlm 模型绕过了这个问题。但是,dlmFilter 无法正常工作。我认为问题在于 dlmFilter 并非旨在处理一个时间序列的多个来源的模型,以及额外的季节性组件。 dlmForecast 给了我需要的预测!!!

    总结一下我的多元时间序列模型(多个来源为其中一个时间过程提供数据),MARSS 库为我提供了合理的参数估计值,并允许我获得状态的过滤和平滑值。预测值是不可能的。另一方面,dlm 对我的模型给出了可疑的估计,并且 dlmFilter 不起作用,但我能够使用 dlmForecast 使用我在 MARSS 中拟合并以 dlm 适当形式重新表达的模型来预测值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      • 2016-11-17
      相关资源
      最近更新 更多