【问题标题】:Add quarterly dummy to ARIMA model向 ARIMA 模型添加季度虚拟变量
【发布时间】:2018-03-16 13:31:10
【问题描述】:

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

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)

【问题讨论】:

    标签: r dummy-variable arima


    【解决方案1】:

    您可以通过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,以避免虚拟陷阱(参见例如 question about dummy trap),并且 (ii) 您可以在 R 中轻松生成这些 Q1、Q2 和 Q3。

    【讨论】:

    • 感谢您的意见。这就是我一直在寻找的。 [编辑:大声笑,不知道按 Enter 会导致提交评论] 无论如何,愚蠢的问题,我承认,但你能解释一下我如何在 R 中生成这些季度假人吗?我已经求助于从 excel 手动生成它们,因为我无法理解我在网上阅读的内容。谢谢!
    • 嗯,你可以通过 Q1
    • 谢谢你。快速——而且相当愚蠢——的问题。 44 代表什么?
    • 另外,既然你还没有回复,让我借此机会补充一个(愚蠢的)问题。有没有办法用 p 值和星星生成 ARIMA 模型的输出(就像普通 lm(y~x) 类型的输出一样?当我 summary() a lm(y~x) 时,它显示了系数估计值、SE 和 t-val 和 p 值,但是当我总结 ARIMA 输出时,它只显示系数估计值和 SE。
    • 好吧,没关系。我弄清楚了44是什么。这是我对假人需要的年数/重复次数。
    【解决方案2】:

    您是否尝试过在 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)
    

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 2019-05-24
      • 2016-10-31
      相关资源
      最近更新 更多