在Arima中构造一个带有三个动态回归量的xreg参数



感谢您观看我的问题.....

我正在处理以下文件:https://www.dropbox.com/s/i1a6y2ak4qkcix0/xregs1.csv

这段代码读取csv文件

ads1 <- read。table(csvfile, header=TRUE, sep = ",")

壹空间& lt; - ts (ads1开始= c(2012 1),频率= 49)

壹空间& lt; - ts (ads1[4:5],开始= c(2012 1),频率= 49)

ts1对象允许我选择Units或Sales作为Arima函数中的时间序列变量。由于这是一个动态回归模型,我尝试遵循Hyndman教授在之前的帖子中的建议,使用如下格式:

xreg <- cbind(Weekday=model.matrix(~as.factor(modelfitsample$Weekday)),一天= modelfitsample $一天,圣诞节圣诞节= modelfitsample $)

我试图使用WK_PRICE作为连续回归量和两组虚拟变量用于季节性和促销事件,以创建将在xreg参数中使用的矩阵(即,wk_2:wk_49用于每周季节性和wk_p_2:wk_p_49用于促销事件)。

我正在努力按照上面的例子正确设置xreg参数。

感谢您的时间和关注。

史蒂夫

这将满足您的要求:

ads1 <- ts(ads1, start=c(2012,1),frequency=49)
qty <- ads1[,4]
sls <- ads1[,5]
price <- ads1[,6]
week <- ads1[,7:54]
promo <- ts(rowSums(ads1[,55:ncol(ads1)]), start=c(2012,1), frequency=49)
library(forecast)
fit <- auto.arima(qty, xreg=cbind(price,promo,week))

注意,您不希望每种类型的周都有一个单独的promo变量(本质上是模拟promo*week交互)。因此,我将其压缩为一个虚拟变量,表明是否每周都有晋升。

我不建议用虚拟变量对每周季节性进行建模,因为这需要太多的自由度。一个更好的解决方案是使用傅里叶项,像这样:

fw <- fourier(qty, K=3)
fit3 <- auto.arima(qty, xreg=cbind(price,promo,fw))

使用K=3傅里叶项给出最小的AICc值。

最新更新