时间序列分析实战(七):多个变量的ARIMA模型拟合

简介: 时间序列分析实战(七):多个变量的ARIMA模型拟合

1 目的

  为研究国民生产总值与货币供应量及利率的关系。现收集到1954年1月至1987年10月M1货币量对数序列log(M1),美国月度国民生产总值对数序列l log(GNP),以及短期利率和长期利率序列,部分数据见表1。该篇文章主要对四个序列分别研究其单整性及按照实际情况拟合A R I M A ARIMAARIMA模型,后续将研究研究这些变量的格兰杰因果关系及协整关系。

表1 部分数据展示

2 原序列可视化

  运行程序:

rm(list=ls()) #清空变量
library("openxlsx") #加载包
library("knitr") #加载包
library("xlsx") #加载包
library("tseries") 
#加载包
data<-read.xlsx("F:\\时间序列分析\\数据.xlsx",'Sheet1',
                encoding ="UTF-8")#读取数据
M1<-ts(data$log.M1.,start = c(1954,1),frequency = 4)     #log(M1)
GNP<-ts(data$log.GNP.,start = c(1954,1),frequency = 4)   #log(GNP)
SF<-ts(data$短期利率,start = c(1954,1),frequency = 4)    #短期利率
LF<-ts(data$长期利率,start =c(1954,1),frequency = 4)     #长期利率
par(mfrow=c(2,2))                                        #创建2×2画布
plot(M1,sub='图1 log(M1)时序图',ylab="log(M1)")
plot(GNP,sub='图2 log(GNP)时序图',ylab="log(GNP)")
plot(SF,sub='图3 短期利率时序图')
plot(LF,sub='图4 长期利率时序图')

  运行结果:

通过各变量的时序图(图1-图4)可以发现,各时序数据具有明显趋势效应。

3 各序列单整性检验

3.1 log(M1)单整性检验

1.平稳性检验

  运行程序:

library(aTSA)
adf.test(M1)             #log(M1)序列平稳性检验

  运行结果:

## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag   ADF p.value
## [1,]   0 2.290   0.990
## [2,]   1 1.062   0.921
## [3,]   2 0.899   0.900
## [4,]   3 0.738   0.854
## [5,]   4 0.742   0.855
## Type 2: with drift no trend 
##      lag    ADF p.value
## [1,]   0  1.084   0.990
## [2,]   1 -0.658   0.816
## [3,]   2 -0.971   0.707
## [4,]   3 -1.395   0.558
## [5,]   4 -1.425   0.547
## Type 3: with drift and trend 
##      lag    ADF p.value
## [1,]   0  0.324   0.990
## [2,]   1 -1.291   0.871
## [3,]   2 -1.610   0.737
## [4,]   3 -2.057   0.548
## [5,]   4 -2.082   0.538
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01

2.一阶差分后平稳性检验

  运行程序:

adf.test(diff(M1))       #一阶差分log(M1)序列平稳性检验

  运行结果:

## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag   ADF p.value
## [1,]   0 -5.96    0.01
## [2,]   1 -4.76    0.01
## [3,]   2 -3.88    0.01
## [4,]   3 -3.65    0.01
## [5,]   4 -3.44    0.01
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -6.05    0.01
## [2,]   1 -4.84    0.01
## [3,]   2 -3.94    0.01
## [4,]   3 -3.72    0.01
## [5,]   4 -3.52    0.01
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -6.14  0.0100
## [2,]   1 -4.94  0.0100
## [3,]   2 -4.05  0.0100
## [4,]   3 -3.84  0.0192
## [5,]   4 -3.63  0.0328
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01

3. log(GNP)单整性检验

1.平稳性检验

  运行程序:

adf.test(GNP)            #log(GNP)序列平稳性检验

  运行结果:

## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag  ADF p.value
## [1,]   0 8.62    0.99
## [2,]   1 5.13    0.99
## [3,]   2 4.11    0.99
## [4,]   3 4.21    0.99
## [5,]   4 4.05    0.99
## Type 2: with drift no trend 
##      lag    ADF p.value
## [1,]   0 -0.695   0.803
## [2,]   1 -0.793   0.769
## [3,]   2 -0.656   0.817
## [4,]   3 -0.564   0.849
## [5,]   4 -0.423   0.899
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -1.53   0.772
## [2,]   1 -2.16   0.503
## [3,]   2 -2.40   0.405
## [4,]   3 -2.15   0.511
## [5,]   4 -2.05   0.552
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01

2.一阶差分后平稳性检验

  运行程序:

adf.test(diff(GNP))      #一阶差分log(GNP)序列平稳性检验

  运行结果:

## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag   ADF p.value
## [1,]   0 -6.13    0.01
## [2,]   1 -4.12    0.01
## [3,]   2 -3.82    0.01
## [4,]   3 -3.36    0.01
## [5,]   4 -3.00    0.01
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -8.47    0.01
## [2,]   1 -6.03    0.01
## [3,]   2 -5.88    0.01
## [4,]   3 -5.41    0.01
## [5,]   4 -5.17    0.01
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -8.46    0.01
## [2,]   1 -6.02    0.01
## [3,]   2 -5.86    0.01
## [4,]   3 -5.38    0.01
## [5,]   4 -5.14    0.01
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01

3.3 短期利率序列单整性检验

1.平稳性检验

  运行程序:

adf.test(SF)             #短期利率序列平稳性检验

  运行结果:

## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag    ADF p.value
## [1,]   0 -0.512   0.496
## [2,]   1 -0.687   0.433
## [3,]   2 -0.373   0.536
## [4,]   3 -0.579   0.471
## [5,]   4 -0.528   0.490
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -1.96   0.346
## [2,]   1 -2.27   0.225
## [3,]   2 -1.86   0.384
## [4,]   3 -2.13   0.278
## [5,]   4 -2.03   0.316
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -2.24   0.474
## [2,]   1 -2.85   0.220
## [3,]   2 -1.91   0.610
## [4,]   3 -2.66   0.298
## [5,]   4 -2.55   0.343
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01

2.一阶差分后平稳性检验

  运行程序:

adf.test(diff(SF))       #一阶差分短期利率序列平稳性检验

  运行结果:

## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag    ADF p.value
## [1,]   0  -9.79    0.01
## [2,]   1 -10.03    0.01
## [3,]   2  -6.07    0.01
## [4,]   3  -5.61    0.01
## [5,]   4  -4.15    0.01
## Type 2: with drift no trend 
##      lag    ADF p.value
## [1,]   0  -9.77    0.01
## [2,]   1 -10.02    0.01
## [3,]   2  -6.07    0.01
## [4,]   3  -5.61    0.01
## [5,]   4  -4.15    0.01
## Type 3: with drift and trend 
##      lag    ADF p.value
## [1,]   0  -9.78    0.01
## [2,]   1 -10.06    0.01
## [3,]   2  -6.10    0.01
## [4,]   3  -5.64    0.01
## [5,]   4  -4.18    0.01
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01

3.4 长期利率序列单整性检验

1.平稳性检验

  运行程序:

adf.test(LF)             #长期利率序列平稳性检验

  运行结果:

## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag   ADF p.value
## [1,]   0 0.783   0.867
## [2,]   1 0.451   0.772
## [3,]   2 0.454   0.773
## [4,]   3 0.297   0.728
## [5,]   4 0.324   0.736
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -1.08   0.667
## [2,]   1 -1.29   0.594
## [3,]   2 -1.30   0.591
## [4,]   3 -1.40   0.557
## [5,]   4 -1.32   0.584
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -1.72   0.691
## [2,]   1 -2.32   0.438
## [3,]   2 -2.34   0.431
## [4,]   3 -3.01   0.156
## [5,]   4 -3.00   0.161
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01

2.一阶差分后平稳性检验

  运行程序:

adf.test(diff(LF))       #长阶差分短期利率序列平稳性检验

  运行结果:

## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag   ADF p.value
## [1,]   0 -8.98    0.01
## [2,]   1 -7.02    0.01
## [3,]   2 -4.96    0.01
## [4,]   3 -4.68    0.01
## [5,]   4 -5.10    0.01
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -9.05    0.01
## [2,]   1 -7.11    0.01
## [3,]   2 -5.05    0.01
## [4,]   3 -4.77    0.01
## [5,]   4 -5.22    0.01
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -9.02    0.01
## [2,]   1 -7.09    0.01
## [3,]   2 -5.03    0.01
## [4,]   3 -4.74    0.01
## [5,]   4 -5.20    0.01
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01

  根据各变量的单位根检验,发现,这四个变量原始时序数据都存在单位根,一阶差分后平稳,表明这四个序列均为一阶单整序列。

4 各序列ARIMA模型拟合

4.1 log(M1)的ARIMA模型拟合

4.1.1 模型定阶

  运行程序:

par(mfrow=c(1,2))                                         #创建1×2画布
M1<-na.omit(M1)                                           #去除空值
acf(diff(M1),sub="图5 log(M)自相关图")                                             #自相关图
pacf(diff(M1),sub="图6 log(M)偏自相关图")                           #偏自相关图

  运行结果:

  结合log(M)序列的ACF、Pacf特征,对其建立ARIMA(1,1,0)模型。

4.1.2 模型拟合

  运行程序:

fit1<-arima(M1,order = c(1,1,0))                          #拟合ARIMA(1,1,0)模型
fit1

  运行结果:

## 
## Call:
## arima(x = M1, order = c(1, 1, 0))
## 
## Coefficients:
##          ar1
##       0.5811
## s.e.  0.0699
## 
## sigma^2 estimated as 0.0001071:  log likelihood = 422.15,  aic = -840.29

4.1.3 残差检验

  运行程序:

ts.diag(fit1)                                             #残差检验

  运行结果:

  根据结果显示,拟合效果较好。且残差序列为白噪声序列。该ARIMA模型为:ln(Mt)=10.5811B1ϵt

4.2 log(GNP)的ARIMA模型拟合

4.2.1 模型定阶

  运行程序:

par(mfrow=c(1,2))                                          #创建1×2画布
acf(diff(GNP),sub="图8 log(GNP)自相关图")                                             #自相关图
pacf(diff(GNP),sub="图9 log(GNP)偏自相关图")                            #偏自相关图

  运行结果:

  结合log(M)序列的ACF、Pacf特征,对其建立ARIMA(1,1,2)模型。

4.2.2 模型拟合

  运行程序:

fit2<-arima(GNP,order = c(1,1,2))                          #拟合ARIMA(1,1,2)模型
fit2

  运行结果:

## 
## Call:
## arima(x = GNP, order = c(1, 1, 2))
## 
## Coefficients:
##          ar1      ma1      ma2
##       0.9999  -0.7650  -0.2249
## s.e.  0.0004   0.0722   0.0706
## 
## sigma^2 estimated as 9.719e-05:  log likelihood = 430.54,  aic = -853.09

4.2.3 残差检验

  运行程序:

ts.diag(fit2)                                              #残差检验

  运行结果:

  根据结果显示,拟合效果较好。且残差序列为白噪声序列。该ARIMA模型为:

ln(GNPt)=10.9999B10.765B0.2249B2ϵt

4.3 短期利率序列的ARIMA模型拟合

4.3.1 模型定阶

  运行程序:

par(mfrow=c(1,2))                                         #创建1×2画布
acf(diff(SF),sub="图11 短期利率自相关图")                                             #自相关图
pacf(diff(SF),sub="图12 短期利率偏自相关图        #偏自相关图

  运行结果:

  结合log(M)序列的ACF、Pacf特征,对其建立ARIMA(7,1,0)模型。

4.4.2 模型拟合

  运行程序:

fit3<-arima(SF,order = c(7,1,0))                          #拟合ARIMA(7,1,0)模型
fit3

  运行结果:

## 
## Call:
## arima(x = SF, order = c(7, 1, 0))
## 
## Coefficients:
##          ar1      ar2     ar3      ar4     ar5      ar6      ar7
##       0.2788  -0.3515  0.2863  -0.0879  0.1233  -0.0918  -0.2366
## s.e.  0.0832   0.0860  0.0903   0.0930  0.0896   0.0847   0.0819
## 
## sigma^2 estimated as 5.599e-05:  log likelihood = 468.76,  aic = -921.53

4.4.4 疏系数模型拟合

运行程序:

fit31<-arima(SF,order = c(7,1,0),transform.pars=F,fixed=c(NA,NA,NA,0,0,0,NA))                #拟合ARIMA(7,1,0)疏系数模型
fit31

  运行结果:

## 
## Call:
## arima(x = SF, order = c(7, 1, 0), transform.pars = F, fixed = c(NA, NA, NA, 
##     0, 0, 0, NA))
## 
## Coefficients:
##          ar1      ar2     ar3  ar4  ar5  ar6      ar7
##       0.2477  -0.3080  0.2223    0    0    0  -0.2907
## s.e.  0.0796   0.0776  0.0792    0    0    0   0.0742
## 
## sigma^2 estimated as 5.699e-05:  log likelihood = 467.61,  aic = -925.22

4.3.4 残差检验

  运行程序:

ts.diag(fit31)                                            #残差检验

  运行结果:

  根据结果显示,拟合效果较好。且残差序列为白噪声序列。该ARIMA模型为:

SFt=10.2477B+0.3080B20.2223B3+0.2907B71ϵt

4.4 长期利率序列的ARIMA模型拟合

4.4.1 模型定阶

  运行程序:

library(forecast)
par(mfrow=c(1,2))                                          #创建1×2画布
acf(diff(LF),sub="图14 长期利率自相关图")                                             #自相关图
pacf(diff(LF),sub="图15 长期利率自相关图")                  #偏自相关图

  运行结果:

  结合log(M)序列的ACF、Pacf特征,对其建立ARIMA(14,1,0)模型。

4.4.2 模型拟合

  运行程序:

fit4<-arima(LF,order=c(14,1,0))                             #拟合ARIMA(14,1,0)模型
fit4

  运行结果:

## 
## Call:
## arima(x = LF, order = c(14, 1, 0))
## 
## Coefficients:
##          ar1      ar2     ar3      ar4      ar5      ar6      ar7     ar8
##       0.2619  -0.0558  0.1885  -0.0039  -0.1647  -0.0194  -0.0940  0.0245
## s.e.  0.0815   0.0836  0.0843   0.0853   0.0848   0.0852   0.0846  0.0871
##          ar9    ar10     ar11    ar12     ar13    ar14
##       0.0934  0.0383  -0.1036  0.1030  -0.1081  0.2992
## s.e.  0.0871  0.0859   0.0859  0.0849   0.0873  0.0854
## 
## sigma^2 estimated as 1.392e-05:  log likelihood = 562.28,  aic = -1094.56

4.4.3 疏系数模型拟合

  运行程序:

fit41<-arima(LF,order = c(14,1,0),transform.pars=F,fixed=c(NA,0,0,0,NA,0,0,0,0,0,0,0,0,NA))                                                                                             #拟合ARIMA(14,1,0)疏系数模型
fit41

  运行结果:

## 
## Call:
## arima(x = LF, order = c(14, 1, 0), transform.pars = F, fixed = c(NA, 0, 0, 0, 
##     NA, 0, 0, 0, 0, 0, 0, 0, 0, NA))
## 
## Coefficients:
##          ar1  ar2  ar3  ar4      ar5  ar6  ar7  ar8  ar9  ar10  ar11  ar12
##       0.2392    0    0    0  -0.1675    0    0    0    0     0     0     0
## s.e.  0.0785    0    0    0   0.0794    0    0    0    0     0     0     0
##       ar13    ar14
##          0  0.2566
## s.e.     0  0.0835
## 
## sigma^2 estimated as 1.516e-05:  log likelihood = 556.84,  aic = -1105.69

4.4.4 残差检验

  运行程序:

ts.diag(fit41)                                              #残差检验

  运行结果:

  根据结果显示,拟合效果较好。且残差序列为白噪声序列。该ARIMA模型为:

LFt=10.2392B+0.1672B50.2566B141ϵt

相关文章
|
6月前
|
机器学习/深度学习 测试技术
ChronosX: 可使用外生变量的时间序列预测基础模型
时间序列预测中,基础模型虽在单变量任务中表现出色,但引入协变量支持仍面临挑战。Chronos研究团队提出ChronosX架构,通过适配器层有效整合历史与未来协变量信息,适用于任何单变量模型。实验表明,ChronosX显著提升预测性能,尤其在复杂数据集上优势明显。消融研究进一步验证了协变量模块的重要性。尽管需要轻量训练,但其灵活性和通用性为时间序列建模提供了新思路,未来或可通过类似LLM提示机制实现更高效的协变量处理。
346 16
ChronosX: 可使用外生变量的时间序列预测基础模型
|
7月前
|
人工智能 Kubernetes API
Dify+DeepSeek实战教程!企业级 AI 文档库本地化部署,数据安全与智能检索我都要
接下来这篇文章,就打算用最接地气的方式,手把手带你从 0 到 1 搭建一套专属的本地知识库系统。无论你是想优化企业内部文档检索(不用担心敏感数据上传云端的风险),还是像我一样想为用户打造更智能的文档服务,都能跟着步骤一步步实现。咱们不卖关子,直接上干货
1256 14
Dify+DeepSeek实战教程!企业级 AI 文档库本地化部署,数据安全与智能检索我都要
时间序列分析实战(五):ARIMA加法(疏系数)模型建模
时间序列分析实战(五):ARIMA加法(疏系数)模型建模
时间序列分析实战(二):时序的ARMA模型拟合与预测
时间序列分析实战(二):时序的ARMA模型拟合与预测
|
11月前
|
存储 分布式计算 资源调度
如何8步完成hadoop单机安装
本文介绍了在Ubuntu 20.04上安装和配置Hadoop 3.3.6的详细步骤。首先更新系统并安装Java环境,接着下载、解压Hadoop并配置环境变量。然后编辑核心配置文件`core-site.xml`和`hdfs-site.xml`,格式化HDFS文件系统,并启动Hadoop服务。最后通过`jps`命令和浏览器访问Web界面验证安装是否成功。Hadoop是一个开源框架,用于分布式存储和处理大规模数据集,其核心组件包括HDFS、MapReduce和YARN。
506 6
|
Linux 开发工具
如何在 Linux 中编辑配置文件?
如何在 Linux 中编辑配置文件?
665 2
如何在 Linux 中编辑配置文件?
|
自然语言处理
COLM 2:从正确中学习?大模型的自我纠正新视角
【10月更文挑战第11天】本文介绍了一种名为“从正确中学习”(LeCo)的新型自我纠正推理框架,旨在解决大型语言模型(LLMs)在自然语言处理任务中的局限性。LeCo通过提供更多的正确推理步骤,帮助模型缩小解空间,提高推理效率。该框架无需人类反馈、外部工具或手工提示,通过计算每一步的置信度分数来指导模型。实验结果显示,LeCo在多步骤推理任务上表现出色,显著提升了推理性能。然而,该方法也存在计算成本高、适用范围有限及可解释性差等局限。
178 1
|
编解码 数据安全/隐私保护
无影云电脑产品使用黑神话悟空之游戏画面卡顿的推荐设置
这段内容介绍了无影云电脑在运行《黑神话:悟空》时遇到画面卡顿等问题的推荐设置与解决方案,包括调整分辨率和显示模式等方法,并提供了多个具体问题的详细解答及参考链接,帮助用户优化游戏体验。
|
监控 搜索推荐 数据可视化
数据指标体系搭建方法及经验
在当今数据驱动的商业环境中,构建一个有效的数据指标体系成为了企业成功的关键。数据指标体系是一套精心设计的测量工具,用于评估和指导企业的业务活动。通过这个体系,企业能够转化庞大、复杂的数据为有价值的洞察,从而指导决策,优化运营,增强竞争力。
数据指标体系搭建方法及经验
时间序列分析实战(四):Holt-Winters建模及预测
时间序列分析实战(四):Holt-Winters建模及预测