我正在应用ARIMA模型来预测R中的时间序列。这是代码
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模型。我怎样才能做到这一点。请建议我。
答案 0 :(得分: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”的方式是使用apply语句:
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