【问题标题】:Predict with a VECM with exogen variables使用带有外生变量的 VECM 进行预测
【发布时间】:2015-02-23 03:18:39
【问题描述】:

在估计了具有固定外生变量的 VECM 模型后,我想使用 predict 函数和 newdata 参数计算预测。我正在使用 Dynts 库,该库提供了使用外生变量计算 VECM 模型的可能性,但我不知道如何将 predict 函数与 newdata 一起用于集成变量和外生变量。 以下代码不起作用。任何的想法 ?

library(tsDyn)
Fact1<-rnorm(100,0,10)
x<-rnorm(100,0,10)
y<-rnorm(100,0,15)
i<-1:100
Yniv2<-sapply(i,function(k) sum(x[1:k]))
Facti1<-Yniv2+y
Yniv2<-Yniv2[1:99]
plot(Yniv2,type="l")#variable macro que l'on cherche à prévoir à l'instant t
lines(Facti1,col="red")#variable macro cointégrée avec Y dont on dispose l'obs en t
lines(Fact1,col="green")#variable stationnaire qui explique également Y 

exog_met1v1<-Fact1[2:99] 
exog_i1<-cbind(Yniv2[1:98],Facti1[1:98])
mdl<-VECM(exog_i1, 1, r=1, include = "const", estim = "ML", LRinclude = "const", exogen = exog_met1v1)
newexogi1 <-cbind(Yniv2[1:99],Facti1[1:99])
new <- Fact1[2:100]
newdata<-cbind(newexogi1,new)
Prev_H_1<-data.frame(predict(mdl, newdata))[,1] #pbbb

如果我想要全局拟合,第一个错误

Please provide newdata with nrow=lag+1 (note lag=p in VECM representation corresponds to p+1 in VAR rep)

第二个错误,如果我只提供最后的观察结果

newexogi1 <-cbind(Yniv2[98:99],Facti1[98:99])
new <- Fact1[99:100]
newdata<-cbind(newexogi1,new)
Prev_H_1<-data.frame(predict(mdl, newdata))[,1] #pbbb

Erreur dans TVAR.gen(B = B, nthresh = 0, type = "simul", n = n, lag =    lag,  : 

矩阵 B 指定错误:预期有 5 个元素( (lagK+ n inc) (nthresh+1) )但有 6 个

【问题讨论】:

  • 请花时间定义代码中的所有变量并提供一些示例输入以解决您的问题reproducible,否则很难帮助您..
  • 是的,这是一个错误。我会尽快解决的。

标签: r predict


【解决方案1】:

我做了一些修改,(可能会在未来发生变化!),但是你去吧:

## install development version:
library(devtools)
install_github("MatthieuStigler/tsDyn", ref="Dev94", subdir="tsDyn")  

## use these arguments:
predict(mdl, newdata=newexogi1, exoPred=new, n.ahead=2)

【讨论】:

  • 感谢您的快速回答,但它仍然无法正常工作:(。我尝试了上面解释的相同示例,这里是返回的错误:&gt; newexogi1 &lt;-cbind(Yniv2[99],Facti1[99]) &gt; new &lt;- Fact1[100] &gt; predict(mdl, newdata=newexogi1, exoPred=new, n.ahead=1) Erreur dans predict.VECM(mdl, newdata = newexogi1, exoPred = new, n.ahead = 2) : Please provide newdata with nrow=lag
  • 另外,我真的不明白为什么输入的长度应该与“滞后”的长度相同,它会阻止函数返回整个估计周期内模型的调整,这通常是评论的内容(至少在宏观经济学中)。如果您继续进行进一步修改,请与我联系,并感谢您的工作
  • 嗯。关键实际上是该函数将 VECM 转换为 VAR (lag+1),然后根据级别而不是差异进行预测!这解释了为什么您应该提供 2 行(级别)而不是 1 行(差异)。另一方面,我不确定是否理解您关于“防止在估计期间对模型进行调整?”的第二点。您想从多个时期生成 n-ahead 预测吗?
  • 好的,我知道了,内生的 newdata 比外生的 newdata 长。好像可以了,非常感谢!
  • 确实!外生新数据的大小应为 n.ahead,而内生数据的大小应为滞后(如果 vecm,则为 +1)!我会更好地记录这一点!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多