使用 auto.Arima() 和 xreg 进行 ARIMA 预测

ARIMA forecasting with auto.Arima() and xreg

我正在研究预测商店销售的项目以学习 forecasting.Till 现在我已经成功地使用简单的 auto.Arima() 函数 forecasting.But 使这些预测更准确我可以利用 covariates.I 定义协变量,如节假日、促销,这些协变量在 post 的帮助下使用 xreg 运算符影响商店的销售: 如何在 R 中的 auto.arima() 中设置 xreg 参数?

但我的代码在行失败:

ARIMAfit <- auto.arima(销售数据,xreg=协变量)

并给出错误提示:

model.frame.default 中的错误(公式 = x ~ xreg,drop.unused.levels = TRUE):变量长度不同(为 'xreg' 找到)此外:警告消息:在 !is.na(x) & !is.na(rowSums(xreg)) :较长的对象长度不是较短对象长度的倍数

下面是 link 我的数据集:https://drive.google.com/file/d/0B-KJYBgmb044blZGSWhHNEoxaHM/view?usp=sharing

这是我的代码:

data = read.csv("xdata.csv")[1:96,]
View(data)

saledata <- ts(data[1:96,4],start=1)
View(saledata)

saledata[saledata == 0] <- 1
View(saledata)

covariates = cbind(DayOfWeek=model.matrix(~as.factor(data$DayOfWeek)),
                 Customers=data$Customers,
             Open=data$Open,
                 Promo=data$Promo,
             SchoolHoliday=data$SchoolHoliday)
View(head(covariates))


# Remove intercept
covariates <- covariates[,-1]
View(covariates)

require(forecast)
ARIMAfit <- auto.arima(saledata, xreg=covariates)//HERE IS ERROR LINE
summary(ARIMAfit)

还告诉我如何预测接下来的 48 天 days.I 知道如何使用简单的 auto.Arima() 和 n.ahead 进行预测,但不知道如何在使用 xreg 时进行预测.

几点。第一,您可以将整个矩阵转换为 ts 对象,然后稍后隔离变量。其次,如果您在 arima 模型中使用协变量,那么您需要在预测样本外时提供它们。这可能意味着在为您感兴趣的变量生成预测之前预测每个协变量。在下面的示例中,为了简单起见,我将数据分成两个样本。

dta = read.csv("xdata.csv")[1:96,]
dta <- ts(dta, start = 1)

# to illustrate out of sample forecasting with covariates lets split the data
train <- window(dta, end = 90)
test <- window(dta, start = 91)

# fit model
covariates <- c("DayOfWeek", "Customers", "Open", "Promo", "SchoolHoliday")
fit <- auto.arima(train[,"Sales"], xreg = train[, covariates])

# forecast
fcast <- forecast(fit, xreg = test[, covariates])