我试图通过以下命令使用R中的预测包从季节性arima模型生成模拟:
simulate(model_temp)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么会这样(以及如何避免这个问题)?
我应该进一步补充一点,我知道我应用的模型和产生model_temp的模型不是生成该系列的模型,但是,我仍然希望从该模型(或任何其他模型)生成模拟).
最后,是否可以通过仅指定ar,d,ma,sar,sd,sma和sigma参数从而无需首先创建正确ARIMA类型的对象,从季节性ARIMA模型生成模拟?
感谢您的任何帮助,
乔纳森
当您缺少值时,就会发生这种情况,如下例所示。
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
Run Code Online (Sandbox Code Playgroud)
默认参数模拟以数据为条件的将来值,如果缺少某些值,则失败。如果需要不相关的样本,可以添加future=FALSE。
simulate(fit, future=FALSE) # Does not fail
Run Code Online (Sandbox Code Playgroud)
要从任意模型进行仿真,可以尝试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)
Run Code Online (Sandbox Code Playgroud)