所以使用模型var和R的包'vars',这样:
model_var <- VAR(my_data, lag.max=10)
roots(model_var)
pred <- predict(model_var, n.ahead=15)
如果my_data静止不存在问题。 但是,如果my_data不是静止的,我在my_data中区分所有时间序列,这是正确的吗? 现在,我使用差分数据,并使用此数据进行预测。 因为我返回到预测的原始数据,我应该如何使用运算符diffinv()?
谢谢!
卢卡
答案 0 :(得分:2)
您的数据应该是班级&#34; ts&#34;。如果您的数据是一个名为data
的矩阵类(数据)
[1]&#34; mts&#34; &#34; TS&#34;
ddata&lt; - diff(data)
现在您可以将数据返回到
级别diffinv(ddata,xi = t(data [1,]))
所以你的预测值出现在差异中,然后你将它们归还给它们,例如
diffinv(pred $ fcst $ VARIABLENAME [1,],xi = t(data [nrow(data),&#34; VARIABLENAME&#34;])
使用您的数据的最后一次观察作为初始值,您可以将预测返回到级别。其中nrow(data)是最后一行,&#34; VARIABLENAME&#34;是您感兴趣的变量的列。它是否有意义?
答案 1 :(得分:0)
@ user21240。由于我没有足够的分数来评论你的答案。我在这里写一篇文章。
从技术上讲,你说的是正确的。即diff()
和diffinv()
在任何系列中都与此完全相同。但这是将预测返回到水平的正确方法,尤其是在VAR的背景下。
使用符号表示法进行一些澄清可能会非常有用,因为即使我遇到同样的问题。