基于 AIC 确定最佳 Arima 模型
Determine best Arima model based on AIC
我正在尝试拟合 Arima 模型并查看基于 AIC 的最佳顺序
我有以下声明,我的问题是如何显示模型的顺序,因为它只给我 AIC 值而无法确定哪个模型,,
mid.ts是xts创建的时间序列
数据如下:
mid.ts=
deltao
Jan 1751 -41.23
Jan 1754 -41.10
Jan 1756 -40.25
Jan 1759 -43.61
Jan 1761 -41.54
Jan 1764 -39.79
Jan 1766 -39.63
Jan 1769 -40.74
Jan 1771 -42.63
Jan 1774 -39.47
Jan 1776 -40.30
Jan 1778 -40.30
Jan 1781 -41.56
library(forecast)
for(d in 0:1){
for(p in 0:9){
for(q in 0:9){
fit=Arima(mid.ts,order=c(p,d,q))
print(AIC(fit))
}
}
}
您可以通过以下两种方式进行:
基于打印参数和 AIC。在这里你将不得不目视检查哪个模型是最好的,这很耗时而且不是一个好方法。
library(forecast)
for(d in 0:1){
for(p in 0:9){
for(q in 0:9){
fit=Arima(mid.ts,order=c(p,d,q))
print(paste0("AIC is ", AIC(fit), " for d = ", d, ", p = ", p, " and q = ", q))
}
}
}
将模型参数保存在数据框中,然后使用代码找到最佳参数。我会赞成这种方法,因为它涉及更少的工作。
library(forecast)
modelAIC <- data.frame()
for(d in 0:1){
for(p in 0:9){
for(q in 0:9){
fit=Arima(mid.ts,order=c(p,d,q))
modelAIC <- rbind(modelAIC, c(d,p,q,AIC(fit))) #
}
}
}
names(modelAIC) <- c("d", "p", "q", "AIC")
rowNum <- which(modelAIC$AIC==max(modelAIC$AIC))
modelAIC[rowNum,]#Required model parameters
我正在尝试拟合 Arima 模型并查看基于 AIC 的最佳顺序 我有以下声明,我的问题是如何显示模型的顺序,因为它只给我 AIC 值而无法确定哪个模型,, mid.ts是xts创建的时间序列 数据如下:
mid.ts=
deltao
Jan 1751 -41.23
Jan 1754 -41.10
Jan 1756 -40.25
Jan 1759 -43.61
Jan 1761 -41.54
Jan 1764 -39.79
Jan 1766 -39.63
Jan 1769 -40.74
Jan 1771 -42.63
Jan 1774 -39.47
Jan 1776 -40.30
Jan 1778 -40.30
Jan 1781 -41.56
library(forecast)
for(d in 0:1){
for(p in 0:9){
for(q in 0:9){
fit=Arima(mid.ts,order=c(p,d,q))
print(AIC(fit))
}
}
}
您可以通过以下两种方式进行:
基于打印参数和 AIC。在这里你将不得不目视检查哪个模型是最好的,这很耗时而且不是一个好方法。
library(forecast) for(d in 0:1){ for(p in 0:9){ for(q in 0:9){ fit=Arima(mid.ts,order=c(p,d,q)) print(paste0("AIC is ", AIC(fit), " for d = ", d, ", p = ", p, " and q = ", q)) } } }
将模型参数保存在数据框中,然后使用代码找到最佳参数。我会赞成这种方法,因为它涉及更少的工作。
library(forecast) modelAIC <- data.frame() for(d in 0:1){ for(p in 0:9){ for(q in 0:9){ fit=Arima(mid.ts,order=c(p,d,q)) modelAIC <- rbind(modelAIC, c(d,p,q,AIC(fit))) # } } } names(modelAIC) <- c("d", "p", "q", "AIC") rowNum <- which(modelAIC$AIC==max(modelAIC$AIC)) modelAIC[rowNum,]#Required model parameters