我正在做一个项目来预测商店的销售额来学习forecasting.Till现在我已经成功地为forecasting.But使用了简单的auto.Arima()函数来使这些预测更准确我可以利用协变量我已经定义了像假日,促销这样的协变量,它们影响商店的销售使用xreg运算符在这篇文章的帮助下:如何在R的auto.arima()中设置xreg参数?
但我的代码在以下代码行失败:
ARIMAfit <- auto.arima(saledata,xreg=covariates)
并给出错误提示:
公式中出错(model.frame.default=x~ xreg,drop.unused.levels = TRUE):变量长度不同(为‘xreg’找到)此外:警告消息: in !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。
发布于 2015-12-13 19:36:40
有几点。首先,您可以将整个矩阵转换为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])https://stackoverflow.com/questions/34249477
复制相似问题