使用额外的回归量预测ARIMA模型

Deu*_*rum 2 r time-series forecasting

假设我有一些时间序列如下,我想预测c1一步一步,这样做很简单直接在R:

testurl = "https://docs.google.com/spreadsheets/d/1jtpQaSxNY1V3b-Xfa5OJKDCLE6pNlzTbwhSHByei4EA/pub?gid=0&single=true&output=csv"
test = getURL(testurl)
mydata = read.csv(textConnection(test), header = TRUE)
data <- ts(mydata['c1'])
fit <- auto.arima(data)
fcast <- forecast(fit)
fcast
Run Code Online (Sandbox Code Playgroud)

请注意,这些数字只是随机数,auto.arima建议我们使用a arima(0,1,0)和预测一步,一个头是52.

但是,如果想要使用c2c3改进(例如aic和bic)样本预测,该怎么办?那个人怎么会继续呢?

c1   c2     c3
40   0,012  1
41   0,015  1
42   0,025  1
40  ?0,015  1
44   0,000  0
50   0,015  0
52   0,015  1
51   0,020  1
50   0,025  1
52   0,030  0
53   0,045  1
52   0,030  1
52   0,025  0
52   0,000  0
51   0,010  0
50  ?0,02   1
48  ?0,025  1
49  ?0,030  1
51  ?0,040  1
52  ?0,350  0
Run Code Online (Sandbox Code Playgroud)

Ric*_*rko 5

如果我理解正确你想以适应动态回归模型来将您的数据xregauto.arima().您可以使用以下内容自动确定模型拟合:

tsdata <- ts(mydata)
fit <- auto.arima(tsdata[,1], xreg = as.matrix(mydata[,2:3]))
Run Code Online (Sandbox Code Playgroud)

要生成1领先一步预测你将需要提供matrix的未来价值C2,并C3xreg在预测函数的参数.你可以做到这一点的一种方法是这样的:

fc.c2 <- forecast(tsdata[,2], h = 1)
fc.c3 <- forecast(tsdata[,3], h = 1)


newxreg <- as.matrix(cbind(fc.c2$mean, fc.c3$mean))

fc.c1 <- forecast(fit, xreg = newxreg)
Run Code Online (Sandbox Code Playgroud)