我想在 R 中模拟并获得最佳 ARIMA ith 次数

I want to simulate and obtain best ARIMA ith number of time in R

我想用 arima.sim() 模拟 ARIMA(1,0,0) 100 次,并在每次模拟完成时找到具有 auto.arima() 函数的最佳模型。我希望程序每次打印 ARIMA 获取的顺序。

reslt = c()
num <- 60
epselon = rnorm(num, mean=0, sd=1^2)
for(i in 1:10){
reslt[i]<-auto.arima(arima.sim(n = num, model=list(ar=0.8, order = c(1, 0, 0)), n.start=1, innov=c(0,epselon[-1])))
}

以上是我试过没有结果。

我要的是把一系列ARIMA(p, d, q)打印成10次

这样做就可以了:

library(forecast)
nsim <- 10
result <- matrix(NA_integer_, nrow = nsim, ncol = 3)
colnames(result) <- c("p","d","q")
num <- 60
for (i in seq(nsim)) {
  result[i, ] <- arima.sim(n=num, model=list(ar=0.8, order=c(1,0,0)), sd=1) %>%
    auto.arima() %>%
    arimaorder()
}
result
#>       p d q
#>  [1,] 0 1 0
#>  [2,] 0 1 0
#>  [3,] 0 1 0
#>  [4,] 1 0 0
#>  [5,] 1 0 0
#>  [6,] 0 1 0
#>  [7,] 0 1 0
#>  [8,] 1 0 0
#>  [9,] 1 0 0
#> [10,] 1 0 0

reprex package (v0.3.0)

于 2020-06-24 创建

几点评论:

  • 您的代码每次都会生成相同的系列,因为 epselon 是在循环外生成的。由于您只是使用随机正态创新,因此让 arima.sim() 像上面的代码一样处理它会更简单。
  • 如果您想保留 auto.arima() 返回的整个模型对象,而不是像我的代码中那样只保留订单,您可以这样修改它:
library(forecast)
nsim <- 10
result <- list()
num <- 60
for (i in seq(nsim)) {
  result[[i]] <- arima.sim(n=num, model=list(ar=0.8, order=c(1,0,0)), sd=1) %>%
    auto.arima()
}
result
#> [[1]]
#> Series: . 
#> ARIMA(0,1,0) 
#> 
#> sigma^2 estimated as 1.145:  log likelihood=-87.72
#> AIC=177.44   AICc=177.51   BIC=179.52
#> 
#> [[2]]
#> Series: . 
#> ARIMA(1,0,2) with zero mean 
#> 
#> Coefficients:
#>          ar1     ma1     ma2
#>       0.5200  0.4086  0.4574
#> s.e.  0.1695  0.1889  0.1446
#> 
#> sigma^2 estimated as 0.877:  log likelihood=-80.38
#> AIC=168.77   AICc=169.5   BIC=177.15
#> 
#> [[3]]
#> Series: . 
#> ARIMA(0,1,0) 
#> 
#> sigma^2 estimated as 0.9284:  log likelihood=-81.53
#> AIC=165.05   AICc=165.12   BIC=167.13
#> 
#> [[4]]
#> Series: . 
#> ARIMA(1,0,0) with zero mean 
#> 
#> Coefficients:
#>         ar1
#>       0.615
#> s.e.  0.099
#> 
#> sigma^2 estimated as 1.123:  log likelihood=-88.35
#> AIC=180.7   AICc=180.91   BIC=184.89
#> 
#> [[5]]
#> Series: . 
#> ARIMA(0,0,3) with zero mean 
#> 
#> Coefficients:
#>          ma1     ma2      ma3
#>       0.5527  0.2726  -0.3297
#> s.e.  0.1301  0.1425   0.1202
#> 
#> sigma^2 estimated as 0.6194:  log likelihood=-69.83
#> AIC=147.66   AICc=148.39   BIC=156.04
#> 
#> [[6]]
#> Series: . 
#> ARIMA(1,0,0) with non-zero mean 
#> 
#> Coefficients:
#>          ar1    mean
#>       0.7108  0.9147
#> s.e.  0.0892  0.4871
#> 
#> sigma^2 estimated as 1.332:  log likelihood=-93.08
#> AIC=192.15   AICc=192.58   BIC=198.43
#> 
#> [[7]]
#> Series: . 
#> ARIMA(1,0,1) with non-zero mean 
#> 
#> Coefficients:
#>          ar1     ma1     mean
#>       0.6116  0.3781  -1.0024
#> s.e.  0.1264  0.1559   0.4671
#> 
#> sigma^2 estimated as 1.161:  log likelihood=-88.6
#> AIC=185.2   AICc=185.92   BIC=193.57
#> 
#> [[8]]
#> Series: . 
#> ARIMA(1,0,0) with zero mean 
#> 
#> Coefficients:
#>          ar1
#>       0.6412
#> s.e.  0.0969
#> 
#> sigma^2 estimated as 0.8666:  log likelihood=-80.6
#> AIC=165.2   AICc=165.41   BIC=169.39
#> 
#> [[9]]
#> Series: . 
#> ARIMA(0,1,0) 
#> 
#> sigma^2 estimated as 1.314:  log likelihood=-91.78
#> AIC=185.57   AICc=185.64   BIC=187.64
#> 
#> [[10]]
#> Series: . 
#> ARIMA(1,0,0) with non-zero mean 
#> 
#> Coefficients:
#>          ar1    mean
#>       0.6714  1.3449
#> s.e.  0.0985  0.4428
#> 
#> sigma^2 estimated as 1.397:  log likelihood=-94.44
#> AIC=194.89   AICc=195.32   BIC=201.17

reprex package (v0.3.0)

于 2020-06-24 创建