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

Posted

技术标签:

【中文标题】使用额外回归量预测 ARIMA 模型【英文标题】:forecasting ARIMA model with extra regressors 【发布时间】:2016-06-02 05:12:26 【问题描述】:

假设我有一些时间序列如下,我想预测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。

但是,如果想使用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

【问题讨论】:

您可以使用参数xreg 添加额外的列。但是您需要为预测提供示例回归量 auto.arima(data, xreg=as.matrix(mydata[-1])) 感谢您的评论,示例回归量将是 c2 领先一步的值?如果是这样,c2 也必须被预测或预测?假设这可能是统计部分中更好的主题.. 是的。如果您为c2 提供了一个值,为c3 提供了一个值。您可以将该矩阵添加到预测中。请记住,您不是在预测所有三列,而是根据时间和c2c3 预测c1。 time 变量是固有提供的,其他变量必须由您提供。 谢谢,我可能在这里缺乏一些理论,c2c3 的值应该由我提供,但不是选择c2 的最佳方式和c3 实际上分别预测它们并选择该值? 你可以这样做。获得ts(c2) 的估计值,c3 的估计值相同。我以前用过。 【参考方案1】:

如果我理解正确,您正在尝试使用 xreg in auto.arima() 为您的数据拟合动态回归模型。您可以使用以下方式自动确定模型拟合:

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

要生成提前 1 步预测,您需要为预测函数中的 xreg 参数提供 matrix 的未来值 C2C3。您可以这样做的一种方法是:

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)

【讨论】:

以上是关于使用额外回归量预测 ARIMA 模型的主要内容,如果未能解决你的问题,请参考以下文章

R语言用多项式回归和ARIMA模型预测电力负荷时间序列数据

时间序列模式——ARIMA模型

如何使用外部回归器在 BigQuery 中训练 Arima_PLUS 模型?

R语言实战应用精讲50篇(二十)-R语言时间序列预测模型:ARIMA vs KNN

R语言实战应用精讲50篇(二十)-R语言时间序列预测模型:ARIMA vs KNN

时间序列ARIMA模型详解:python实现店铺一周销售量预测