ARIMA(p,d,q)模型
一、ARIMA模型建模的基本步骤
- 首先导入数据,构造时间序列;
- 绘制时间序列数据的时序图、 A C F ACF ACF 图以及 P A C F PACF PACF 图,观察时间序列是否平稳,如果是趋势非平稳则做趋势差分或者对数变换消除趋势,如果是季节非平稳则做季节差分消除趋势;
- 如果序列方差不稳定,可用 Box-Cox 变换再做差分;
- 对平稳后的序列定阶,即确定 ARIMA(p,d,q) 模型中的 p,d,q ;
- 建立 ARIMA 模型,估计出模型的系数;
- 检验模型的残差是否是白噪声,若不是则重新建立 ARIMA 模型;
- 对模型进行优化;
- 如果有多个模型可以选择,可通过 AIC,BIC 进行比较,选择比较小的模型;
- 用模型进行预测。
二、ARIMA模型建模操作过程
以R语言为例:美国GNP增长率
library(forecast) # 时间序列常用的包
library(TSA)
da = read.table("D:/Database/data1/q-gnp4710.txt",header=T) # 读取数据
G = da$VALUE
gnp.value = ts(G,start=c(1947,1),frequency = 12) # 转化为时间序列数据
plot(gnp.value) # 观察序列是否平稳
# tsdisplay(gnp.value) 或者使用这个函数,可以同时观察序列的时序图、ACF图、pacf图。
diff(log(gnp.value)) %>% plot()
将数据对数然后做差分
gnp = log(gnp.value) %>% diff()
tsdisplay(gnp,lag.max = 12)
构建 ARIMA(3,1,0)模型
# 建立模型命名为 m2.1 可以随便命名比如 m1
m2.1 = Arima(gnp.value,lambda = 0,order = c(3,1,0),include.drift = T)
m2.1
Box.test(resid(m2.1),lag = 6,type = "Ljung",fitdf = 3) # 检验残差
用模型预测后面 8 期的数据
fm1 = forecast(m1,h=8) # 预测
plot(fm1)