我的问题涉及预测中的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是否允许您使用新的外部回归器运行未来的模拟?换句话说,你必须在
之间做出选择如果是这种情况,是否可以开发在simulate()
对象上运行predict.Arima
的变通方法?我有一个非零度差异,所以我能够展望未来是很重要的。感谢您提供的任何见解。
答案 0 :(得分: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
构建的Arima对象提供给simulate.Arima
时会产生问题。 simulate.Arima
背后的代码似乎正确处理$x
差异,但它失败了$xreg
。因此,当您输入由arima
构建的Arima对象时,函数代码会尝试引用object$xreg
,但该对象没有附加此类名称,因此它只返回NULL
。因此,当函数尝试使用object$xreg
执行某些操作时,它会处理NULL,而不是由外部回归量组成的数据帧。该功能在以下行分解:
object$xreg <- cbind(intercept = rep(1, n), object$xreg)
我还注意到,在auto.arima
的帮助页面上,在“值”部分下,简单地说“与arima相同”。虽然auto.arima
确实输出了Arima对象,但附加到该对象的名称略有不同。
简而言之,使用auto.arima
构建的外部回归量的Arima对象在simulate
中完全正常,因为它具有$xreg
组件。它仅针对由arima
构建的Arima对象进行细分。
有没有人知道从xreg
构建的没有附加arima
名称的对象获取xreg
参数信息的方法?