将季度虚拟变量添加到 ARIMA 模型

Add quarterly dummy to ARIMA model

我的数据是一个时间序列。

y <- ts(datafile[,"y"], start=1960, frequency=4, end=2010)

我想在我的 ARIMA 预测模型中包含季度虚拟变量。那可能吗?如果是这样,它的命令是什么?我似乎找不到一个允许我将 ARIMA 模型与季度虚拟变量合并的模型。

所以我的 ARIMA 模型是:

fit_y <- arima(y, order=c(2,1,2), method="ML")

我知道如何将季节性 AR 拟合到模型中:

fit_y <- arima(y, order=c(2,1,2), seasonal=list(order=c(0,1,1), period=4), method="ML")

有没有办法包含季度虚拟变量?我创建了虚拟变量 - 手动 - 通过 excel 并将它们命名为 Q1、Q2、Q3、Q4,具有以下规范,以便 R 将它们读取为时间序列变量:

Q1 <- ts(datafile[,"Q1"], start=1960, frequency=4, end=2010)
Q2 <- ts(datafile[,"Q2"], start=1960, frequency=4, end=2010)
Q3 <- ts(datafile[,"Q3"], start=1960, frequency=4, end=2010)
Q4 <- ts(datafile[,"Q4"], start=1960, frequency=4, end=2010)

您是否尝试过在 arima 中使用 xreg 参数? xreg,外部回归器,将允许您在 arima 中包含虚拟变量。我通常为我的 xreg 创建一个矩阵,其中将包括我所有的虚拟变量。下面是我如何为日常虚拟变量做的一个例子。

dfTs$wday <- wday(dfTs$date)
xreg <- cbind(wday=model.matrix(~as.factor(dfTs$wday)))
xreg <- xreg[,-1] # drop intercept
colnames(xreg) <- c("Mon", "Tue", "Wed", "Thur", "Fri", "Sat")
fit <- arima(dfTs, order = c(2,1,2),
               seasonal = list(order = c(0,1,1), period = 4),
               method = "ML", xreg = xreg)

您可以通过 arima 的选项 xreg 添加虚拟变量到 arima 模型。

y <- ts(datafile[,"y"], start=1960, frequency=4)
Q1 <- ts(rep(c(1,0,0,0),44), start=1960, frequency=4)
Q2 <- ts(rep(c(0,1,0,0),44), start=1960, frequency=4)
Q3 <- ts(rep(c(0,0,1,0),44), start=1960, frequency=4)
xreg <- cbind(Q1,Q2,Q3)

fit_y <- arima(y, order=c(2,1,2), method = "ML", xreg = xreg)

请注意 (i) 我没有添加 Q4,以避免虚拟陷阱(例如参见 [​​=12=] ),以及 (ii) 您可以轻松地生成这些 Q1、Q2 和 Q3 R.