时间序列分析实战(十):ARIMAX时序的协整动态模型

本文介绍了如何通过收集国民生产总值、货币供应量和利率的时间序列数据,构建协整动态回归模型来研究它们之间的关系。作者进行了残差白噪声检验、自相关和偏自相关分析,并使用ARIMA模型进行拟合,最终确认模型的残差符合白噪声特性,证明了模型的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972

   个人介绍: 研一|统计学|干货分享
         擅长Python、Matlab、R等主流编程软件
         累计十余项国家级比赛奖项,参与研究经费10w、40w级横向

1 目的

  为研究国民生产总值与货币供应量及利率的关系。现收集到1954年1月至1987年10月M1货币量对数序列 l o g ( M 1 ) log(M1) log(M1),美国月度国民生产总值对数序列 l o g ( G N P ) log(GNP) log(GNP),以及短期利率和长期利率序列,该篇文章主要演示:以GNP为响应序列,根据因果检验结果选择适当的自变量,构建协整动态模型。其数据处理方式、单整性检验及单序列的 A R I M A ARIMA ARIMA模型构建见 时间序列分析实战(七):多个变量的ARIMA模型拟合。格兰因果检验见 时间序列分析实战(八):时序的格兰杰因果检验。协整关系检验见 时间序列分析实战(九):时序的协整关系检验 部分数据情况见表1所示。

表1 部分数据展示

2 回归模型的残差白噪声检验

  回归模型的建立见 时间序列分析实战(九):时序的协整关系检验

  运行程序:

Box.test(fit5$residuals,lag=6,type="Ljung-Box")

  运行结果:

## 
##  Box-Ljung test
## 
## data:  fit5$residuals
## X-squared = 506.29, df = 6, p-value < 2.2e-16## 
## Call:
## arima(x = data1$log.GNP., xreg = data.frame(data1$短期利率, data1$长期利率))
## 
## Coefficients:
##       intercept  data1.短期利率  data1.长期利率
##          7.1941         -1.4629         10.3497
## s.e.     0.0310          0.9951          1.0552
## 
## sigma^2 estimated as 0.02076:  log likelihood = 69.99,  aic = -131.98

  经过白噪声检验发现,残差序列为白噪声序列,需要进一步提取残差序列中蕴含的相关信息。

3 残差自相关、偏自相关情况

  运行程序:

library(aTSA)
par(mfrow=c(1,2))
acf(fit5$residuals,sub="自相关图")
pacf(fit5$residuals,sub="偏自相关图")

  运行结果:

  根据残差序列自相关及偏自相关图的性质,可以判断残差序列自相关系数拖尾,偏自相关系数3阶截尾。

4 协整动态回归模型拟合

  对残差序列拟合AR(4)模型。

  运行程序:

fit6<-arima(data1$log.GNP.,order=c(4,0,0),xreg
            =data.frame(data1$短期利率,data1$长期利率),include.mean=T)#拟合动态回归模型
fit6

  运行结果:

## 
## Call:
## arima(x = data1$log.GNP., order = c(4, 0, 0), xreg = data.frame(data1$短期利率, 
##     data1$长期利率), include.mean = T)
## 
## Coefficients:
##          ar1      ar2      ar3      ar4  intercept  data1.短期利率
##       1.3419  -0.0371  -0.2407  -0.0647     7.7602          0.2511
## s.e.  0.0881   0.1450   0.1460   0.0901     0.4655          0.1177
##       data1.长期利率
##               0.2958
## s.e.          0.2599
## 
## sigma^2 estimated as 9.301e-05:  log likelihood = 430.79,  aic = -845.58

  得到模型:

l n ( G N P t ) = 7.7602 + 0.2511 S F t + 0.2958 L F t + 1 1 − 1.3419 B + 0.0371 B 2 + 0.2407 B 3 + 0.0647 B 4 ϵ t ln(GNP_t)=7.7602+0.2511SF_t+0.2958LF_t+\frac{1}{1-1.3419B+0.0371B^2+0.2407B^3+0.0647B^4} \epsilon_t ln(GNPt)=7.7602+0.2511SFt+0.2958LFt+11.3419B+0.0371B2+0.2407B3+0.0647B41ϵt

5 残差检验

  运行程序:

ts.diag(fit6)

  运行结果:

  根据拟合模型的残差残差序列可知,该序列为白噪声序列,说明拟合的协整动态模型显著成立。

### C语言中取余运算的使用方法 在C语言中,`%` 是一种二元运算符,称为 **取余运算符** 或者 **取模运算符**。其主要功能是对两个数执行除法操作并返回余数[^1]。 #### 基本语法 假设 `a` 和 `b` 都是型变量,则表达式 `a % b` 的含义是以 `b` 为除数对 `a` 执行取余操作,并返回余数值。需要注意的是,该运算仅适用于数类型的数据[^3]。 #### 特殊情况处理 当涉及到负数时,C语言中的 `%` 运算遵循特定规则: - 如果被除数或者除数之一为负数,那么结果的符号取决于实现方式,在大多数编译器(如 Visual Studio)中,结果会保留被除数的符号[^2]。 - 示例代码如下: ```c #include <stdio.h> int main() { int a = -10; int b = 3; printf("商: %d\n", a / b); // 输出 -3 printf("余数: %d\n", a % b); // 输出 -1 return 0; } ``` 上述例子展示了 `-10 % 3` 的计算过程,其中商向下取得到 `-3`,而余数则保持与被除数相同的符号。 #### 应用场景举例 以下是几个常见的应用场景及其对应的示例代码: ##### 判断奇偶性 通过判断某个数是否能被 `2` 除可以轻松区分奇数还是偶数[^4]: ```c if (number % 2 == 0) { printf("Even number.\n"); } else { printf("Odd number.\n"); } ``` ##### 循环计数限制范围 利用取余运算可以让循环内的计数器始终处于指定范围内: ```c for(int i=0;i<10;i++) { int remainder = i % 5; printf("%d ", remainder); } // 输出:0 1 2 3 4 0 1 2 3 4 ``` ##### 当较小数对较大数求余时 在这种情况下,结果总是等于较小的那个数本身: ```c printf("%d\n", 10 % 88); // 输出 10 printf("%d\n", 11 % 89); // 输出 11 ``` ### 总结 综上所述,C语言中的取余运算具有广泛的应用价值,无论是用于简单的数学验证还是复杂的算法设计都不可或缺。掌握好这一基本概念对于进一步深入学习编程至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傩戏焕彩

谢谢老板帮助充电!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值