0

Rで時系列を予測するためにARIMAモデルを適用しています。コードは次のとおりです

Higher.R2.18. <- auto.arima(Diiferent_set[,7],test="adf")            
Higher.R2.18.          
plot(forecast(Higher.R2.18.,h=22))         
forecast(Higher.R2.18.,h=22)         
correlation6 <- cor(fitted(Higher.R2.18.),Diiferent_set[,7])         
correlation6 

次に、ループ関数を適用して、100 の時系列の ARIMA モデルを計算します。どうやってやるの。私に提案してください。

4

1 に答える 1

4

あなたの例は複製できませんが、これは一般的に非常に単純な問題です。最初のステップは、時系列ごとに必要なことを行う関数を作成することです。上記の例ですべてをやりたいと思っているので、次のような関数でうまくいくはずです。

runArima <- function(ts){
  Higher.R2.18. <- auto.arima(ts,test="adf")            
  p <- plot(forecast(Higher.R2.18.,h=22))         
  pred <- forecast(Higher.R2.18.,h=22)         
  correlation6 <- cor(fitted(Higher.R2.18.),ts)         
  return(list(arima=Higher.R2.18.,plot=p,forecast=pred,cor=correlation6))
}

次に、その関数を時系列のリストに適用するだけです。それを行うためのより「R」な方法は、適用ステートメントを使用することです。

arima.list <- lapply(<list of timeseries>,runArima)

ただし、必要に応じてループを使用できます。

arima.list <- vector(length(<list of timeseries>),"list")
i <- 1
for(ts in <list of timeseries>){
  arima.list[[i]] <- runArima(ts)
  i <- i + 1
}

いくつかの些細なデータの例を次に示します。

> library(forecast)
> #make trivial list of time series since i don't have one
> ts.list <- lapply(1:5,function(x) WWWusage)
> #run your function across list of time series
> arima.list <- lapply(ts.list,runArima)
> #look at some results
> arima.list[[1]]$arima
Series: ts 
ARIMA(2,2,0)                    

Coefficients:
         ar1      ar2
      0.2579  -0.4407
s.e.  0.0915   0.0906

sigma^2 estimated as 10.13:  log likelihood=-252.73
AIC=511.46   AICc=511.72   BIC=519.22
> arima.list[[1]]$cor
[1] 0.9972077
于 2013-06-28T14:48:48.357 に答える