预测带有额外回归变量的 ARIMA 模型
forecasting ARIMA model with extra regressors
假设我有如下一些时间序列,我想预测 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
请注意,这些数字只是随机数,auto.arima 建议我们使用一个 arima(0,1,0)
并且预测向前一步是 52。
但是,如果想使用 c2
和 c3
来改进(例如,就 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
如果我理解正确的话,您正在尝试使用 auto.arima()
中的 xreg
将动态回归模型拟合到您的数据。您可以使用如下方式自动确定模型拟合:
tsdata <- ts(mydata)
fit <- auto.arima(tsdata[,1], xreg = as.matrix(mydata[,2:3]))
要生成提前 1 步预测,您需要向预测中的 xreg
参数提供 C2
和 C3
未来值的 matrix
功能。你可以这样做的一种方法是这样的:
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)
假设我有如下一些时间序列,我想预测 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
请注意,这些数字只是随机数,auto.arima 建议我们使用一个 arima(0,1,0)
并且预测向前一步是 52。
但是,如果想使用 c2
和 c3
来改进(例如,就 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
如果我理解正确的话,您正在尝试使用 auto.arima()
中的 xreg
将动态回归模型拟合到您的数据。您可以使用如下方式自动确定模型拟合:
tsdata <- ts(mydata)
fit <- auto.arima(tsdata[,1], xreg = as.matrix(mydata[,2:3]))
要生成提前 1 步预测,您需要向预测中的 xreg
参数提供 C2
和 C3
未来值的 matrix
功能。你可以这样做的一种方法是这样的:
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)