时间序列分析实战(六):ARIMA乘法(疏系数)模型建模及预测

简介: 时间序列分析实战(六):ARIMA乘法(疏系数)模型建模及预测

1 目的

  该篇文章主要展示针对时序进行ARIMA乘法模型建模,并根据实际情况进行改进。案例数据同 时间序列分析实战(三):时序因素分解法:某欧洲小镇1963年1月至1976年12月每月旅馆入住的房间数构成时间序列x t x_txt,我们在 时间序列分析实战(五):ARIMA加法(疏系数)模型建模利用此数据构建了ARIMA加法模型。现考虑演示根据该数据建立ARIMA乘法模型。

2 原序列差分处理

  从 时间序列分析实战(三):时序因素分解法一文中可知,该序列具有趋势和季节效应,进行1阶差分提取趋势效应,12步差分提取季节效应。

  运行程序:

#对原数据进行1阶12步差分
y=diff(diff(data1,12))
plot(y,sub='图1 入住房间数差分后序列时序图')

  运行结果:

图1 入住房间数差分后序列时序图

3 差分后序列平稳性检验

  运行程序:

#差分后序列平稳性检验
library(aTSA)
adf.test(y)

  运行结果:

## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag    ADF p.value
## [1,]   0 -19.56    0.01
## [2,]   1 -11.01    0.01
## [3,]   2 -10.63    0.01
## [4,]   3  -9.08    0.01
## [5,]   4 -10.57    0.01
## Type 2: with drift no trend 
##      lag    ADF p.value
## [1,]   0 -19.50    0.01
## [2,]   1 -10.98    0.01
## [3,]   2 -10.60    0.01
## [4,]   3  -9.05    0.01
## [5,]   4 -10.53    0.01
## Type 3: with drift and trend 
##      lag    ADF p.value
## [1,]   0 -19.44    0.01
## [2,]   1 -10.94    0.01
## [3,]   2 -10.56    0.01
## [4,]   3  -9.01    0.01
## [5,]   4 -10.49    0.01
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01

4 差分后序列白噪声检验

  运行程序:

#差分后序列纯随机性检验
for(k in 1:2) print(Box.test(y,lag=6*k,type="Ljung-Box"))

  运行结果:

## 
##  Box-Ljung test
## 
## data:  y
## X-squared = 56.87, df = 6, p-value = 1.941e-10
## 
## 
##  Box-Ljung test
## 
## data:  y
## X-squared = 76.751, df = 12, p-value = 1.713e-11

  通过1阶12步差分后序列时序图(图1)显示差分后的序列没有明显趋势和周期特征了,ADF检验结果显示差分后序列平稳,纯随机性检验结果显示差分后序列为非白噪声序列,适合建模。

5 ARIMA乘法模型建立

  运行程序:

par(mfrow=c(2,1))
acf(y,lag=36)
title(sub="图2 入住房间数差分后序列自相关图(ACF)")
pacf(y,lag=36)
title(sub="图3 入住房间数差分后序列偏自相关图(PACF)")

  运行结果:

图2 入住房间数差分后序列自相关图(ACF))

图3 入住房间数差分后序列偏自相关图(PACF)

  为考虑季节相关特征,这时考察延迟12阶、24阶等以周期长度为单位的自相关系数和偏自相关系数的特征。图2和图3显示,自相关图表现拖尾性质,偏自相关图表现截尾性质,若把偏自相关系数看作1周期截尾,结合前面的差分信息,经过多次尝试后,尝试拟合ARIMA乘法模型:ARIMA(3,1,2)×(1,1,0)12

6 ARIMA乘法模型拟合

  运行程序:

fit4=arima(data1,order = c(3,1,2),seasonal = list(order=c(1,1,0),period=12))
fit4

  运行结果:

## 
## Call:
## arima(x = data1, order = c(3, 1, 2), seasonal = list(order = c(1, 1, 0), period = 12))
## 
## Coefficients:
##          ar1     ar2      ar3      ma1     ma2     sar1
##       0.8229  0.0030  -0.3107  -1.7905  0.7905  -0.4073
## s.e.  0.1155  0.1036   0.0851   0.1110  0.1102   0.0816
## 
## sigma^2 estimated as 213.2:  log likelihood = -640.63,  aic = 1295.25

7 ARIMA乘法模型显著性检验

  运行程序:

#模型显著性检验
ts.diag(fit4)
title(sub="图4 ARIMA(3,1,2)×(1,1,0)_12模型显著性检验")

  运行结果:

图4 ARIMA(3,1,2)×(1,1,0)_12模型显著性检验

  此时模型ϕ 2 \phi _2ϕ2估计值在两倍标准差内,考虑建立ARIMA乘法疏系数模型:ARIMA((1,3),1,2)×(1,1,0)12

8 ARIMA乘法疏系数模型

  运行程序:

#拟合乘法ARIMA模型
fit5=arima(data1,order = c(3,1,2),seasonal = list(order=c(1,1,0),period=12),
           transform.pars = F,fixed=c(NA,0,NA,NA,NA,NA))
fit5

  运行结果:

## 
## Call:
## arima(x = data1, order = c(3, 1, 2), seasonal = list(order = c(1, 1, 0), period = 12), 
##     transform.pars = F, fixed = c(NA, 0, NA, NA, NA, NA))
## 
## Coefficients:
##          ar1  ar2      ar3      ma1    ma2     sar1
##       0.8263    0  -0.3090  -1.7930  0.793  -0.4072
## s.e.  0.0941    0   0.0611   0.1078  0.107   0.0807
## 
## sigma^2 estimated as 213.2:  log likelihood = -640.63,  aic = 1293.25

9 ARIMA乘法疏系数模型显著性检验

  运行程序:

#模型显著性检验
ts.diag(fit5)
title(sub="图5 ARIMA((1,3),1,2)模型显著性检验")

  运行结果:

图5 ARIMA(3,1,2)×(1,1,0)_12模型显著性检验

image.png

10 ARIMA乘法疏稀疏模型预测

  运行程序:

library(forecast)
fore2=forecast::forecast(fit5,h=36)
fore2$mean

  运行结果:

##            Jan       Feb       Mar       Apr       May       Jun       Jul
## 1977  827.6433  768.2262  771.2960  860.6892  838.8292  963.9901 1128.1026
## 1978  853.5056  785.6367  792.7410  886.3393  869.2913  985.3445 1154.0686
## 1979  875.9526  811.5455  817.0429  908.9636  889.9786 1009.7484 1176.5900
##            Aug       Sep       Oct       Nov       Dec
## 1977 1159.3063  892.6915  897.5451  778.5312  884.5493
## 1978 1178.2927  915.9224  915.4218  804.8587  914.4704
## 1979 1203.6458  939.5356  941.2077  827.1998  935.3489

  运行程序:

plot(fore2,lty=2,sub='图5 入住房间数序列疏系数的ARIMA乘法模型预测效果图')
lines(fore2$fitted,col=4)

  运行结果:

图6 入住房间数序列疏系数的ARIMA乘法模型预测效果图

  根据结果显示,疏稀疏的ARIMA乘法模型有较好拟合效果。


相关文章
|
算法 搜索推荐 计算机视觉
图片相似度计算及检索调研
图片相似度计算和相似图片搜索,是图片识别领域两个常见的应用场景。例如搜索相似商品,和相似的图片,在百度、淘宝中都有应用。在某些业务中,也存在对图片相似度的计算和判断。因此,在这里简单介绍一下相关算法。
1382 0
时间序列分析实战(五):ARIMA加法(疏系数)模型建模
时间序列分析实战(五):ARIMA加法(疏系数)模型建模
|
12月前
|
机器学习/深度学习 数据采集 算法
时间序列结构变化分析:Python实现时间序列变化点检测
在时间序列分析和预测中,准确检测结构变化至关重要。新出现的分布模式往往会导致历史数据失去代表性,进而影响基于这些数据训练的模型的有效性。
1214 1
时间序列分析实战(二):时序的ARMA模型拟合与预测
时间序列分析实战(二):时序的ARMA模型拟合与预测
|
机器学习/深度学习 程序员 数据处理
时间序列分析技巧(一):根据ACF、PACF进行AR、MA、ARMA模型选择
时间序列分析技巧(一):根据ACF、PACF进行AR、MA、ARMA模型选择
|
12月前
|
机器学习/深度学习 数据可视化 算法
经典时间序列分析概述:技术、应用和模型
时间序列数据按时间顺序收集,具有时间维度的重要性,需专门技术和模型进行分析预测。其应用广泛,涵盖经济预测、风险管理、天气预报、气候建模、流行病学、患者监测、需求预测、客户行为分析及预测性维护等领域。时间序列特征包括趋势、季节性和周期性模式。自相关和偏自相关用于衡量数据点间关系,白噪声表示无自相关的时间序列。平稳性指统计特性随时间保持一致,对建模至关重要。常见模型包括ARMA、ARIMA、SARIMA、ARCH和GARCH,用于捕捉复杂动态并预测未来模式。选择合适模型和确定顺序对准确预测至关重要。掌握这些基础知识不仅增强对复杂模型的理解,还能确保预测方法的稳健性和可靠性。
1093 1
经典时间序列分析概述:技术、应用和模型
|
数据可视化 语音技术
时间序列分析实战(三):时序因素分解法
时间序列分析实战(三):时序因素分解法
时间序列分析实战(四):Holt-Winters建模及预测
时间序列分析实战(四):Holt-Winters建模及预测
|
数据可视化 vr&ar Python
时间序列分析技巧(二):ARIMA模型建模步骤总结
时间序列分析技巧(二):ARIMA模型建模步骤总结
|
机器学习/深度学习 数据可视化 算法
利用 XGBoost 进行时间序列预测
利用 XGBoost 进行时间序列预测
934 0