如何使用R模拟指定订单的10个ARIMA时间序列数据

时间:2019-10-20 11:20:10

标签: r time-series arima

我想模拟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都没有给我指定的命令,有人可以帮助我吗?

1 个答案:

答案 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()会经历很多步骤。