时间序列分析实战(二):时序的ARMA模型拟合与预测

简介: 时间序列分析实战(二):时序的ARMA模型拟合与预测

1 目的

  有1971年9月至1993年6月澳大利亚季度常住人口变动情况构成的时间序列x t x_txt,判断该时序的平稳性和纯随机性,并拟合适当的ARMA模型预测其未来五年情况。

2 平稳性检验

2.1 原始时序图

  运行程序:

data<-scan("F:\\时间序列分析\\数据.txt")#读取数据
data1<-ts(data,start = c(1971,3),frequency =4)          #转化为时序数据
plot(data1)                                              #绘制时序图

  运行结果:

图1 1971年9月-1933年6月澳大利亚季度常住人口时序图

  由图1可以看出,根据时序图显示,该时序数据没有明显的趋势和周期特征,进一步进行ADF检验。

2.2 ADF检验

  运行程序:

library(aTSA)                                            #加载包
adf.test(data1)                                          #ADF检验

  运行结果:

## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag    ADF p.value
## [1,]   0 -2.719   0.010
## [2,]   1 -1.531   0.128
## [3,]   2 -0.928   0.345
## [4,]   3 -0.698   0.428
## Type 2: with drift no trend 
##      lag    ADF p.value
## [1,]   0 -10.12   0.010
## [2,]   1  -6.41   0.010
## [3,]   2  -3.56   0.010
## [4,]   3  -2.32   0.207
## Type 3: with drift and trend 
##      lag    ADF p.value
## [1,]   0 -10.48  0.0100
## [2,]   1  -6.88  0.0100
## [3,]   2  -3.92  0.0172
## [4,]   3  -2.57  0.3362
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01

  根据ADF检验结果显示该序列平稳。接下来检验序列的纯随机性。

3 纯随机检验

  运行程序:

for (k in 1:2){                                          #纯随机检验
  print(Box.test(data1,lag=2*k,type="Ljung-Box"))
}

  运行结果:

## 
##  Box-Ljung test
## 
## data:  data1
## X-squared = 1.211, df = 2, p-value = 0.5458
## 
## 
##  Box-Ljung test
## 
## data:  data1
## X-squared = 16.325, df = 4, p-value = 0.002612

  通过纯随机检验的LB检验结果显示该序列为非白噪声序列,所以1971年9月至1993年6月澳大利亚常住人口变动情况时序数据为平稳非白噪声序列。

4 ARMA模型拟合

4.1 自相关图

  运行程序:

acf(data1)                             #自相关图

  运行结果:

图2 自相关图

4.2 偏自相关图

  运行程序:

pacf(data1)                            #偏自相关图

  运行结果:

图3 偏自相关图

4.3 ARMA模型阶数判定

  根据自相关图和偏自相关图显示结果,自相关图和偏自相关图均显示拖尾特点,故考虑建立ARMA模型,尝试建立ARMA(1,1)-ARMA(4,4),通过AIC准则选择最优模型。

  运行程序:

#拟合ARMA(1,1)-ARMA(4,4)
k<-matrix(rep(0,16),nrow = 4,ncol = 4)                     #创建0矩阵
for(i in 1:4){
  for (j in 1:4) {
    k[i,j]<-arima(data1,order = c(i,0,j),method="ML")$aic
  }
}
which(k==min(k),arr.ind = T)                               #提取aic最小值位置

  运行结果:

##      row col
## [1,]   3   2

  运行程序:

min(k)                                                     #最小aic

  运行结果:

## [1] 768.0453

  根据结果显示,最小AIC模型为ARMA(3,2),其AIC值为768.0453。即选址最优模型ARMA(3,2)。

4.4 模拟拟合

  运行程序:

model<-arima(data1,order = c(3,0,2),method="ML")          #最优模型

4.5 模型预测

  运行程序:

library("forecast")
fore1<-forecast::forecast(model,h=20)                      #模型预测
fore1                           #预测结果及0.05和0.5显著性水平下的置信区间

  运行结果:

##         Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
## 1993 Q3       55.84804 33.51665 78.17942 21.69513 90.00094
## 1993 Q4       54.40362 31.20745 77.59979 18.92814 89.87910
## 1994 Q1       47.24138 23.85678 70.62597 11.47772 83.00503
## 1994 Q2       49.48305 23.78938 75.17673 10.18797 88.77814
## 1994 Q3       52.73426 26.70517 78.76335 12.92620 92.54232
## 1994 Q4       52.00451 25.97331 78.03571 12.19323 91.81580
## 1995 Q1       51.19748 25.07768 77.31729 11.25070 91.14427
## 1995 Q2       51.87825 25.63253 78.12396 11.73889 92.01761
## 1995 Q3       52.35380 26.08425 78.62335 12.17799 92.52960
## 1995 Q4       52.21059 25.93444 78.48674 12.02468 92.39649
## 1996 Q1       52.17543 25.88658 78.46428 11.97010 92.38076
## 1996 Q2       52.34066 26.04270 78.63862 12.12140 92.55992
## 1996 Q3       52.41657 26.11588 78.71727 12.19313 92.64001
## 1996 Q4       52.40455 26.10234 78.70675 12.17880 92.63029
## 1997 Q1       52.42316 26.11950 78.72682 12.19519 92.65113
## 1997 Q2       52.46207 26.15758 78.76655 12.23283 92.69131
## 1997 Q3       52.47818 26.17334 78.78302 12.24840 92.70796
## 1997 Q4       52.48233 26.17727 78.78740 12.25220 92.71246
## 1998 Q1       52.49184 26.18661 78.79707 12.26147 92.72222
## 1998 Q2       52.50167 26.19635 78.80699 12.27116 92.73218

  运行程序:

plot(fore1,lty=2)                                         #绘制预测图
lines(fore1$fitted,col=4)                                 #添加拟合值

  运行结果:

图4 预测图

  通过图4可以看到该序列的拟合图及未来五年的预测图,拟合效果较好。


相关文章
|
NoSQL Linux MongoDB
CentOS 7.6安装 MongoDB 5.0.2
CentOS 7.6安装 MongoDB 5.0.2
2433 0
CentOS 7.6安装 MongoDB 5.0.2
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
构建AI智能体:六十七、超参数如何影响大模型?通俗讲解原理、作用与实战示例
超参数是机器学习模型训练前需要人工设定的参数,它们控制着模型的学习过程而非直接通过学习获得。文章通过生动的类比(如自行车调整、烹饪配方)解释了超参数的概念,并详细介绍了其调优流程、常见类型(学习率、批量大小等)及对模型的影响。通过实际代码示例,展示了不同超参数设置如何影响模型训练效果,强调合理调优对提升模型性能、防止过拟合和优化资源使用的重要性。文章指出,超参数调优是模型成功的关键,初学者可从默认值开始逐步实验,借助网格搜索等工具实现高效调参。
626 105
|
机器学习/深度学习 程序员 数据处理
时间序列分析技巧(一):根据ACF、PACF进行AR、MA、ARMA模型选择
时间序列分析技巧(一):根据ACF、PACF进行AR、MA、ARMA模型选择
|
数据可视化 vr&ar
【Eviews实战】——ARIMA模型建模
【Eviews实战】——ARIMA模型建模
时间序列分析实战(五):ARIMA加法(疏系数)模型建模
时间序列分析实战(五):ARIMA加法(疏系数)模型建模
|
数据可视化 vr&ar
时间序列分析实战(七):多个变量的ARIMA模型拟合
时间序列分析实战(七):多个变量的ARIMA模型拟合
|
机器学习/深度学习 人工智能 运维
智能化运维####
本文深入探讨了智能化运维的前沿趋势与实践,通过融合大数据、人工智能等先进技术,重塑传统IT运维模式。我们分析了智能化运维的核心价值,包括提升效率、减少故障响应时间及增强系统稳定性,并通过具体案例展示了其在现代企业中的应用成效。对于追求高效、智能运维管理的组织而言,本文提供了宝贵的洞见和策略指导。 ####
|
机器学习/深度学习 数据采集 数据挖掘
11种经典时间序列预测方法:理论、Python实现与应用
本文将总结11种经典的时间序列预测方法,并提供它们在Python中的实现示例。
4100 2
11种经典时间序列预测方法:理论、Python实现与应用
|
数据采集 SQL 数据管理
读数据质量管理:数据可靠性与数据质量问题解决之道05数据标准化
【11月更文挑战第9天】《数据质量管理:数据可靠性与数据质量问题解决之道 - 05 数据标准化》介绍了数据标准化在数据质量管理中的重要性。文章从提高数据一致性、提升数据整合效率、增强数据分析准确性三个方面阐述了数据标准化的关键作用,并详细说明了格式、编码、度量单位的标准化内容及实施方法。此外,还介绍了常用的数据清洗工具和编程语言,以及数据标准化的实施流程,包括现状评估、标准制定、数据转换和验证监控。
503 8
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
641 1