我正在尝试使用下面的代码预测在餐厅订购食物的时间(" 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")
答案 0 :(得分:1)
您需要在估算模型本身时定义xreg
,这些也需要提前预测。所以这看起来像是:
Arima.fit <- auto.arima(Train, xreg = SampleData$TimeTT)
forecast(Arima.fit, h = 508, xreg = NewData$TimeTT)
以下是使用Rob Hyndman的Arima
和xreg
的示例(此处为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)))
希望这有帮助。