1

我的问题涉及simulate.Arima()预测中的功能。我有一个具有季节性、非零差分度和外部回归量(假期的虚拟变量)的 ARIMA 函数。这是一个可重现的示例:

y <- ts(c(3,5,10,13,4,15,13,17,20,24,26,27))
dummy <- data.frame(dummy=c(0,0,0,0,1,0,0,0,0,0,0,0))
arima.1 <- arima(y, order=c(1,1,0), xreg=dummy)

future.dummy <- data.frame(dummy=c(0,0,1,0,0,0,0,0,0,0,0,0))
n <- nrow(future.dummy)

sim.1 <- simulate(arima.1, nsim=n, xreg=future.dummy)

当我执行此操作时,我收到一条错误消息。我注意到当我设置参数future=FALSE时它工作得很好。

我的问题:simulate.Arima 是否不允许您使用新的外部回归器运行未来的模拟?换句话说,您是否必须在

  1. 在没有外部回归变量的情况下预测未来或
  2. 用不同的外部回归器模拟非未来数据?

如果是这种情况,开发simulate()predict.Arima对象上运行 a 的解决方法是否可行?我有一个非零度的差异,所以我能够展望未来是很重要的。感谢您提供的任何见解。

4

1 回答 1

1

我想我找到了问题所在,所以我想我会继续回答我自己的问题。(来自预测包)的确切输出arima和输出的内容略有不同。auto.arima对每种类型的对象进行简单names调用即可揭示差异。

names(arima.1)
[1] "coef"      "sigma2"    "var.coef"  "mask"      "loglik"    "aic"      
[7] "arma"      "residuals" "call"      "series"    "code"      "n.cond"   
[13] "model"

names(auto.arima.1)
[1] "coef"      "sigma2"    "var.coef"  "mask"      "loglik"    "aic"      
[7] "arma"      "residuals" "call"      "series"    "code"      "n.cond"   
[13] "model"     "bic"       "aicc"      "xreg"      "x"

请注意,auto.arima它有一些额外的名称,最值得注意的是原始数据 ( $x) 和外部回归量 ( $xreg)。因此,当您将内置的 Arima 对象提供arimasimulate.Arima. 后面的代码simulate.Arima似乎可以正确处理$x差异,但它以$xreg. 因此,当您输入由 构建的 Arima 对象时arima,函数代码会尝试引用object$xreg,但该对象没有附加这样的名称,因此它只是返回NULL。因此,当函数尝试对 执行某些操作时object$xreg,它处理的是 NULL,而不是由外部回归量组成的数据框。该功能在以下行分解:

object$xreg <- cbind(intercept = rep(1, n), object$xreg)

我还注意到,在 的帮助页面上auto.arima,在 Value 部分下,它简单地说“与 arima 相同”。虽然确实auto.arima输出了一个 Arima 对象,但附加到该对象的名称略有不同。

所以简而言之,一个带有外部回归器的 Arima 对象auto.arima可以很好地工作,simulate因为它有$xreg组件。它只对由arima.

有谁知道从没有附加名称xreg的对象中获取参数信息的方法?arimaxreg

于 2012-11-07T20:18:51.827 回答