我想模拟10个ARIMA
时间序列数据,这些数据将具有以下顺序(1,0,1), (1,1,1) and (2,2,2)
。这样,如果我使用auto.arima
软件包的forecast
函数测试每个系列,它将得到我指定的内容。
我尝试了这些
set.seed(123)
n <- 10
# white noise:
wn <- ts(rnorm(n))
# initialise the first two values:
arma11 <- arma22 <- wn[1:2]
# loop through and create the 3:1000th values:
for(i in 3:n){
arma11[i] <- arma11[i - 1] * 0.8 + wn[i - 1] * 0.3 + wn[i]
arma22[i] <- arma22[i - 1] * 0.862537 + arma22[i - 2] * (-0.3) + 0.8 * wn[i-1] -
0.3 * wn[i-2] + wn[i]
}
# turn them into time series, and for the last two, "integrate" them via cumulative sum
arma11 <- ts(arma11)
arima111 <- ts(cumsum(arma11))
arima222 <- ts(cumsum(cumsum(arma22)))
测试ARIMA订单
auto.arima(arma11, ic=c("bic"), approximation = F, allowdrift =F)
auto.arima(arima111, ic=c("bic"), approximation = F, allowdrift =F)
auto.arima(arima222, ic=c("bic"), approximation = F, allowdrift =F)
arma11或arima111或arima222都没有给我指定的命令,有人可以帮助我吗?
答案 0 :(得分:1)
在编程方面,您可以使用arima.sim()
。
sim <- arima.sim(n=100, list(order = c(1, 0, 1), ar=0.7, ma=-0.3), sd=sqrt(0.5))
auto.arima(sim, allowmean=FALSE, allowdrift=FALSE, trace=TRUE)
您应该意识到,估计ARIMA模型并不是一个干净的过程。对我最重要的第一件事是n=10
可能太小而无法可靠地估计。使用trace=TRUE
,您可以看到候选模型之间的距离有多近。除非您精确指定参数,否则auto.arima()
会经历很多步骤。