使用xreg预测ARIMA

时间:2016-02-25 07:12:56

标签: r forecasting

我正在尝试使用下面的代码预测在餐厅订购食物的时间(" TiTo")。从他们走进门到他们获取食物的时间,人们需要的总时间是TiTo。 TimeTT是客户与服务员交谈的时间。我相信TimeTT是TiTo的预测器,我想在TiTo的预测中使用它作为协变量。我已经阅读了一些有关ARIMA的内容,据我了解,您可以在xreg参数中为模型添加预测变量。我认为xreg参数类似于回归模型的自变量,如lm(TiTo~TimeTT)。这是考虑xreg参数的正确方法吗?以下错误信息的含义是什么?我是否需要将TimeTT转换为时间序列以在xreg参数中使用它?我对预测很陌生,所以非常感谢所有的帮助。

预测尝试:

OV<-zoo(SampleData$TiTo, order.by=SampleData$DateTime)

eData <- ts(OV, frequency = 24)

Train <-eData[1:15000]

Test <- eData[15001:20809]

Arima.fit <- auto.arima(Train)

Acast<-forecast(Arima.fit, h=5808, xreg = SampleData$TimeTT)

错误:

if(ncol(xreg)!= ncol(object $ call $ xreg))中的错误停止(&#34;回归量的数量与拟合的模型不匹配&#34;):   参数长度为零

数据:

dput(Train[1:5])
c(1152L, 1680L, 1680L, 968L, 1680L)

dput(SampleData[1,]$TimeTT)
structure(1156L, .Label = c("0.000000", "0.125000", "0.142857",  
"96.750000", "97.800000", "99.000000", "99.600000", "NULL"), class = "factor")

1 个答案:

答案 0 :(得分:1)

您需要在估算模型本身时定义xreg,这些也需要提前预测。所以这看起来像是:

Arima.fit <- auto.arima(Train, xreg = SampleData$TimeTT)
forecast(Arima.fit, h = 508, xreg = NewData$TimeTT)

以下是使用Rob Hyndman的Arimaxreg的示例(此处为link示例,但要阅读更多有关在ARIMA模型中使用同期协变量的信息,请{{3 }}),这类似于auto.arima

n <- 2000
m <- 200
y <- ts(rnorm(n) + (1:n)%%100/30, f=m)

library(forecast)
fit <- Arima(y, order=c(2,0,1), xreg=fourier(y, K=4))
plot(forecast(fit, h=2*m, xreg=fourierf(y, K=4, h=2*m)))

希望这有帮助。