在Arima中使用三个动态回归量构造xreg参数

时间:2014-08-15 15:01:08

标签: r dynamic time-series regression

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

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

此代码读入csv文件

  

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

     

ts1< - ts(ads1,start = c(2012,1),frequency = 49)

     

ts1< - ts(ads1 [,4:5],start = c(2012,1),frequency = 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参数。

感谢您的时间和关注。

史蒂夫

1 个答案:

答案 0 :(得分:1)

这将满足您的要求:

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))

请注意,您不希望为每个类型的周提供单独的促销变量(主要是对促销*周交互进行建模)。所以我把它折叠成一个虚拟变量,表明每周是否涉及促销。

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

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

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