6

我正在尝试通过以下命令使用 R 中的预测包从季节性 arima 模型生成模拟:

simulate(model_temp)

其中model_temp是将arima()函数应用于我观察到的时间序列的结果,顺便说一下,我将模型指定为 ARIMA(2,1,2)(0,1,2)[12] 模型。

但是,当我尝试这样做时,我收到以下错误:

Error in diffinv.vector(x, lag, differences, xi) :
  NA/NaN/Inf in foreign function call (arg 1) 

谁能解释一下为什么会这样(以及如何避免这个问题)?

我应该进一步补充一点,我知道我应用并导致拟合model_temp的模型不是生成系列的模型,但是,我仍然想从该模型(或任何其他模型)生成模拟)。

最后,是否可以通过仅指定 ar、d、ma、sar、sd、sma 和 sigma 参数而不首先创建正确 ARIMA 类型的对象来从季节性 ARIMA 模型生成模拟?

感谢您的任何帮助,

乔纳森

4

1 回答 1

5

当您缺少值时会发生这种情况,如下例所示。

library(forecast)
x <- WWWusage
x[10] <- NA
fit <- Arima(x,c(3,1,0), seasonal=list(order=c(0,1,1),period=12))
simulate(fit) # Fails

默认参数模拟以数据为条件的未来值,如果缺少某些值则失败。如果你想要一个不相关的样本,你可以添加future=FALSE.

simulate(fit, future=FALSE) # Does not fail

要从任意模型进行模拟,您可以尝试构建一个最小Arima对象,只包含所需的数据。

m <- list(
  arma=c(3,0,0,1,12,1,1),
  model=list(
    phi=c(1.17, -0.71, 0.39),
    theta=c(0,0,0,0,0,0,0,0,0,0,0,-.79)
  ),
  sigma2=11,
  x=NA
)
simulate.Arima(m, nsim=30, future=FALSE)
于 2012-03-05T03:39:26.483 回答