基于货币供应量(M2)同比增长率序列的时间序列建模案例

文章通过对我国M2同比增长率序列进行单位根检验,确定其平稳性。接着,利用ARMA模型进行拟合,然后通过残差的诊断检验确认模型的适用性。在发现序列存在波动聚集特性后,进行了GARCH和EGARCH模型的构建,以处理异方差性。最终,文章得到了GARCH(1,1)和EGARCH模型的估计结果。
摘要由CSDN通过智能技术生成

0. 数据导入

数据来源我的github——时间序列课件

rm(list = ls())
data <- read.table("./数据/m2.txt", header = TRUE, fileEncoding = 'utf-8')
m = data[,2]
M2 <- ts(m, start = c(1999, 12), frequency = 12)
plot(M2, type = "l")
我国的货币供应量(M2)同比增长率序列

 通过看时序图可以发现,轨迹不符合趋势平稳或趋势非平稳序列的典型特征,因此无需在单位根检验模型中包含时间趋势项,可以从只包含截距项的模型入手,进行ADF单位根检验。

1. 单位根检验

判断序列的平稳性,采用只包含截距项的模型来对M2同比增长序列进行ADF检验。

(1)初步ADF检验:根据BIC信息判断准则,来确定模型的恰当的滞后期。

library(urca)
urdf <- ur.df(m, type = "drift", lags = 13, selectlags = "BIC")
summary(urdf)

 恰当滞后期为3期。

(2)固定滞后阶数的ADF单位根检验:

urdf1 <- ur.df(m, type = "drift", lags = 3, selectlags = "Fixed")
summary(urdf1)

 DF统计量为-2.8331,小于10%临界值-2.57,因此拒绝序列存在单位根的原假设。

2.ARMA模型识别

查看序列自相关/偏自相关图:

acf(m) # 自相关
pacf(m) # 偏自相关

 

3. ARMA模型估计

构建一个ARMA((1,2,4),(12))模型,也可以记作:ARIMA((1,2,4),0,0)\times (0,0,1)_{12}

mean<-arima(m, order=c(4,0,0),seasonal = list(order=c(0,0,1),period=12),
            fixed=c(NA,NA,0,NA,NA,NA),transform.pars = FALSE)
mean

 得到估计结果:

4. ARMA模型的诊断检验

tsdiag(mean)

 得到残差的诊断检验结构:

结果表明:模型的残差不存在序列相关性。

5. ARCH效应的LM检验

序列时序图中具有明显的波动聚集特性,因此还需进一步检验异方差性。

library(FinTS)
mean_res<-resid(mean)
ArchTest(mean_res, lags=2)

 拒绝模型的残差序列不存在异方差性的原假设。

6. 拟合GARCH模型

library(rugarch)
garchspec=ugarchspec(variance.model = list(model="sGARCH",garchOrder=c(1,1),submodel=NULL,
                     external.regressors=NULL,variance.targeting=FALSE),
                     mean.model = list(armaOrder=c(4,12),include.mean=T,archm=F,archpow=1,arfima=F,external.regressors=NULL,archex=F),
                     distribution.model = "norm",fixed.pars = list(ar3=0,ma1=0,ma2=0,ma3=0,ma4=0,ma5=0,ma6=0,ma7=0,ma8=0,ma9=0,ma10=0,ma11=0))
garchfit = ugarchfit(garchspec,data=m,solver = "solnp")
garchfit

得到GARCH(1,1)模型的估计结果。

该估计结果表明:估计系数具有显著性,并且满足GARCH模型关于参数非负和参数有界的限定条件。

7. 拟合EGARCG模型

egarchspec=ugarchspec(
  variance.model = list(model="eGARCH",garchOrder=c(3,2),submodel=NULL,
  external.regressors=NULL,variance.targeting=FALSE),
  mean.model = list(armaOrder=c(4,12),include.mean=T,
  archm=F,archpow=1,arfima=F,external.regressors=NULL,archex=F),
  distribution.model = "norm",
  fixed.pars = list(ar3=0,ma1=0,ma2=0,ma3=0,ma4=0,ma5=0,ma6=0,ma7=0,ma8=0,ma9=0,ma10=0,ma11=0,
  alpha1=0,alpha2=0))

egarchfit = ugarchfit(egarchspec,data=m,solver = "lbfgs")
egarchfit

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值