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

标签 r forecasting

我正在从事预测商店销售的项目以学习预测。到目前为止,我已经成功地使用了简单的 auto.Arima() 函数进行预测。但是为了使这些预测更准确,我可以使用协变量。我已经定义了协变量,例如假期,在这篇文章的帮助下,使用 xreg 运算符影响商店销售的促销:
如何在 R 中的 auto.arima() 中设置 xreg 参数?

但我的代码在行失败:

ARIMAfit <- auto.arima(saledata, xreg=covariates)

并给出错误说:

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

以下是我的数据集的链接: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 天。我知道如何使用简单的 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])

关于r - 使用 auto.Arima() 和 xreg 进行 ARIMA 预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34249477/

相关文章:

r - 通过 R 中的 geom_text 将小于符号 "<"添加到 ggplot

html - 是否可以修复长 html huxtable 的头部?

从 R 中的数据中删除 BST 和 GMT,然后查看时间

r - 很难使用 ggplot2 在图像上排列点

r - STL 中的错误,系列少于两个句点(错误?)

r - 在 R 中创建预测误差最小值的 ARIMA 模型

r - 在 R 中使用 arima 循环

r - 使用 shinyBS 为每个 pickerInput 选项添加不同的工具提示

r - 如何在 R 或 Matlab 中将这个不规则间隔的时间序列转换(插值)为规则间隔的时间序列?

r - 当我加载 ggfortify 时,自动绘图函数的行为有所不同