我正在尝试使用另一个时间序列(X)作为预测变量来即时广播时间序列数据(Y)。 X和Y是协整的。 Y是2012年1月至2016年10月的月度数据,X是2012年1月至2017年2月的数据。

因此,我运行了该视频中显示的VECM:https://www.youtube.com/watch?v=x9DcUA9puY0

然后,为了获得预测值,我根据以下主题中的信息通过vec2var命令将其转换为VAR:

但是我无法用已知的X来预测Y,如何使用predict函数和线性回归模型来实现它。另外,我无法获得建模的Y(Y帽子)值。

这是我的代码:

# Cointegrated_series is a ZOO object, which contains two time series X and Y

library("zoo")
library("xts")
library("urca")
library("vars")

# Obtain lag length
Lagl <- VARselect(Cointegrated_series)$selection[[1]]

#Conduct Eigen test
cointest <- ca.jo(Cointegrated_series,K=Lagl,type = "eigen", ecdet = "const",
                    spec = "transitory")
#Fit VECM
vecm <- cajorls(cointest)

#Transform VECM to VAR
var <- vec2var(cointest)


比起我尝试以不同的方式使用predict函数:predict(var)predict(var, newdata = 50)predict(var, newdata = 1000)-结果是相同的。

尝试在tsDyn方法中使用newdata包和predict参数,如此处所述:https://stats.stackexchange.com/questions/223888/how-to-forecast-from-vecm-in-r

不工作我的新数据是ZOO对象,其中X系列的值从2016年11月到2017年2月,Y系列的值是NA。因此,该方法返回预测中的NA:

    # Cointegrated_series is a ZOO object, which contains
#two time series X and Y from Jan 2012 to Oct 2016. Both X and Y are values.
    # newDat is a ZOO object, which contains two time series
#X and Y from Nov 2016 to Feb 2017. X are values, Y are NAs.

    library(tsDyn)

    vecm <-VECM(Cointegrated_series, lag=2)

    predict(vecm,newdata = newDat, n.ahead=5)


结果是:

                                                    Y             X
59                                                  NA            NA
60                                                  NA            NA
61                                                  NA            NA
62                                                  NA            NA
63                                                  NA            NA


例如,这是我在调用predict whithout newdata参数后得到的结果:

predict(vecm, n.ahead=5)

                                              Y             X
59                                            65.05233      64.78006
60                                            70.54545      73.87368
61                                            75.65266      72.06513
62                                            74.76065      62.97242
63                                            70.03992      55.81045


因此,我的主要问题是:


如何在R中使用VEC模型将Y与已知X即时转换?
如何获得建模的Y(Y帽子)值?


除此之外,我也找不到这些问题的答案:


如何在R中为VECM调用Akaike标准(AIC)?
vars和urca软件包是否提供VECM的F和t统计信息?


UPD 10.04.2017
我稍微编辑了问题。注意,我的问题适用于“边缘参差不齐”的问题,将其称为“预测”是不正确的-它是“ nowcasting”。

UPD 11.04.2017

感谢您的回答!

这是完整的代码:

library("lubridate")
library("zoo")
library("xts")
library("urca")
library("vars")
library("forecast")



Dat <- dget(file = "https://getfile.dokpub.com/yandex/get/https://yadi.sk/d/VJpQ75Rz3GsDKN")
NewDat <- dget(file = "https://getfile.dokpub.com/yandex/get/https://yadi.sk/d/T7qxxPUq3GsDLc")



Lagl <- VARselect(Dat)$selection[[1]]

#vars package

cointest_e <- ca.jo(Dat,K=Lagl,type = "eigen", ecdet = "const",
                    spec = "transitory")


vecm <- cajorls(cointest_e)

var <- vec2var(cointest_e)

Predict1 <- predict(var)

Predict2 <- predict(var, newdata = NewDat)

Predict1$fcst$Y
Predict2$fcst$Y

Predict1$fcst$Y == Predict2$fcst$Y
Predict1$fcst$X == Predict2$fcst$X

#As we see, Predict1 and Predict2 are similar, so the information in NewDat
#didn't came into account.

library("tsDyn")

vecm2 <-VECM(Dat, lag=3)

predict(vecm2)
predict(vecm2, newdata=NewDat)


如果dget将返回错误,请在此处下载我的数据:

https://stats.stackexchange.com/questions/261849/prediction-from-vecm-in-r-using-external-forecasts-of-regressors?rq=1-对于Dat

https://yadi.sk/d/VJpQ75Rz3GsDKN-对于NewDat

关于临近广播

说临近广播,是指当前数据对当前不可用数据的当月或上月预测。以下是一些参考资料:

Gianonne,Reichlin,小型:临近广播:宏观经济数据的实时信息内容(2008年)

即时播报和实时数据流(2013)

马塞利诺(Marcellino),舒马赫(Schumacher):采用边缘数据进行临近预报和预报的因子MIDAS:德国GDP的模型比较(2010)

最佳答案

我觉得您的问题更多是关于如何对协整变量进行即时广播,然后让我们稍后再看如何在R中实现它。

通常,根据格兰杰的表示定理,协整变量可以以多种形式表示:


长期关系:y和x的同时值
VECM表示:y和x的(差异)由(差异的)滞后解释,以及前一时期的纠错项。


所以我不确定您将如何在VECM表示中进行即时广播,因为它仅包含过去的值?我可以看到两种可能性:


根据长期关系进行临近预报。因此,您只需运行标准OLS,并从那里进行预测。
在结构化VECM上进行即时广播,在其中您添加已知变量(X)的同时值。在R中,您将使用此包urca,但需要检查predict函数是否将允许您添加已知的X值。


关于长期关系方法,有趣的是,您可以基于VECM(无已知X)和具有已知X的LT获得X和Y的预测。这为您提供了一种了解准确性的方法模型(比较已知的X和预测的X),可以用来为Y创建预测平均方案吗?

08-07 17:08