协整检验是为了检验非平稳序列的因果关系,协整检验是解决伪回归为问题的重要方法。首先回归伪回归例子:

伪回归Spurious regression伪回归方程的拟合优度、显著性水平等指标都很好,但是其残差序列是一个非平稳序列,拟合一个伪回归:

#调用相关R包

library(lmtest)

library(tseries)

#模拟序列

set.seed(123456)

e1 =rnorm(500)

e2 =rnorm(500)

trd =1:500

y1 =0.8*trd +cumsum(e1)

y2 =0.6*trd +cumsum(e2)

sr.reg =lm(y1 ~y2)

#提取回归残差

error =residuals(sr.reg)

#作残差散点图

plot(error, main ="Plot of error")

#对残差进行单位根检验

adf.test(error)

## Dickey-Fuller = -2.548, Lag order = 7, p-value = 0.3463

## alternative hypothesis: stationary

#伪回归结果,相关参数都显著

summary(sr.reg)

## Residuals:

## Min 1Q Median 3Q Max

## -30.654 -11.526 0.359 11.142 31.006

## Coefficients:

## Estimate Std. Error t value Pr(>|t|)

## (Intercept) -29.32697 1.36716 -21.4 <2e-16 ***

## y2 1.44079 0.00752 191.6 <2e-16 ***

## Residual standard error: 13.7 on 498 degrees of freedom

## Multiple R-squared: 0.987, Adjusted R-squared: 0.987

## F-statistic: 3.67e+04 on 1 and 498 DF, p-value: <2e-16

dwtest(sr.reg)

## DW = 0.0172, p-value < 2.2e-16

恩格尔-格兰杰检验Engle-Granger第一步:建立两变量(y1,y2)的回归方程,第二部:对该回归方程的残差(resid)进行单位根检验其中,原假设两变量不存在协整关系,备择假设是两变量存在协整关系。利用最小二乘法对回归方程进行估计,从回归方程中提取残差进行检验。

set.seed(123456)

e1 =rnorm(100)

e2 =rnorm(100)

y1 =cumsum(e1)

y2 =0.6*y1 +e2

# (伪)回归模型

lr.reg =lm(y2 ~y1)

error =residuals(lr.reg)

adf.test(error)

## Dickey-Fuller = -3.988, Lag order = 4, p-value = 0.01262

## alternative hypothesis: stationary

error.lagged =error[-c(99, 100)]

#建立误差修正模型ECM.REG

dy1 =diff(y1)

dy2 =diff(y2)

diff.dat =data.frame(embed(cbind(dy1, dy2), 2))#emed表示嵌入时间序列dy1,dy2到diff.dat

colnames(diff.dat)=c("dy1", "dy2", "dy1.1", "dy2.1")

ecm.reg =lm(dy2 ~error.lagged +dy1.1 +dy2.1, data =diff.dat)

summary(ecm.reg)

## Residuals:

## Min 1Q Median 3Q Max

## -2.959 -0.544 0.137 0.711 2.307

## Coefficients:

## Estimate Std. Error t value Pr(>|t|)

## (Intercept) 0.0034 0.1036 0.03 0.97

## error.lagged -0.9688 0.1585 -6.11 2.2e-08 ***

## dy1.1 0.8086 0.1120 7.22 1.4e-10 ***

## dy2.1 -1.0589 0.1084 -9.77 5.6e-16 ***

## Residual standard error: 1.03 on 94 degrees of freedom

## Multiple R-squared: 0.546, Adjusted R-squared: 0.532

## F-statistic: 37.7 on 3 and 94 DF, p-value: 4.24e-16

par(mfrow =c(2, 2))

plot(ecm.reg)

Johansen-Juselius(JJ)协整检验法,该方法是一种用向量自回归(VAR)模型进行检验的方法,适用于对多重一阶单整I(1)序列进行协整检验。JJ检验有两种:特征值轨迹检验和最大特征值检验。我们可以调用urca包中的ca.jo命令完成这两种检验。其语法:

ca.jo(x, type = c("eigen", "trace"), ecdet = c("none", "const", "trend"), K = 2,spec=c("longrun", "transitory"), season = NULL, dumvar = NULL)

其中:x为矩阵形式数据框;type用来设置检验方法;ecdet用于设置模型形式:none表示不带截距项,const表示带常数截距项,trend表示带趋势项。K表示自回归序列的滞后阶数;spec表示向量误差修正模型反映的序列间的长期或短期关系;season表示季节效应;dumvar表示哑变量设置。

set.seed(12345)

e1 =rnorm(250, 0, 0.5)

e2 =rnorm(250, 0, 0.5)

e3 =rnorm(250, 0, 0.5)

#模拟没有移动平均的向量自回归序列;

u1.ar1 =arima.sim(model =list(ar =0.75), innov =e1, n =250)

u2.ar1 =arima.sim(model =list(ar =0.3), innov =e2, n =250)

y3 =cumsum(e3)

y1 =0.8*y3 +u1.ar1

y2 =-0.3*y3 +u2.ar1

#合并y1,y2,y3构成进行JJ检验的数据库;

y.mat =data.frame(y1, y2, y3)

#调用urca包中cajo命令对向量自回归序列进行JJ协整检验

vecm =ca.jo(y.mat)

jo.results =summary(vecm)

#cajorls命令可以得到限制协整阶数的向量误差修正模型的最小二乘法回归结果

vecm.r2 =cajorls(vecm, r =2);vecm.r2

## Call:lm(formula = substitute(form1), data = data.mat)

## Coefficients:

## y1.d y2.d y3.d

## ect1 -0.33129 0.06461 0.01268

## ect2 0.09447 -0.70938 -0.00916

## constant 0.16837 -0.02702 0.02526

## y1.dl1 -0.22768 0.02701 0.06816

## y2.dl1 0.14445 -0.71561 0.04049

## y3.dl1 0.12347 -0.29083 -0.07525

## $beta

## ect1 ect2

## y1.l2 1.000e+00 0.0000

## y2.l2 -3.402e-18 1.0000

## y3.l2 -7.329e-01 0.2952

所有代码摘自《Analysis of Integrated and Cointegrated Time Series with R》

出处:http://blog.163.com/yugao1986@126/blog/static/69228508201341235046978

R语言迹检验协整关系式_使用R语言进行协整关系检验相关推荐

  1. r语言kendall协和系数_数据挖掘|R相关性分析及检验

    相关系数可以用来描述定量变量之间的关系.结果的正负号分别表明正相关或负相关,数值的大小则表示相关关系的强弱程度. R可以计算多种相关系数,今天主要介绍常见的三种:Pearson相关系数.Spearma ...

  2. r语言kendall协和系数_使用R语言函数cor.test()做相关性计算和检验

    假设我们现在有两组数据,如下所示 x y 55.24 1.2 59.03 1.19 47.27 1.38 52.94 0.94 55 1.81 54 1.75 55.69 1.42 48.85 3.0 ...

  3. r语言 转录本结构及丰度_【R语言】数据结构Ⅱ—列表,数据框,因子

    四.列表 列表(list),可以包含不同类型的对象,甚至可以包括其他列表.列表的灵活性使得它非常有用. 例如,用R 拟合一个线性回归模型,其返回结果就是一个列表,其中包含了线性回归的详细结果,如线性回 ...

  4. c语言定义不定长数组初始化_大学C语言期末考试练习题(带详解答案)(1)

    链接:https://pan.baidu.com/s/1d2Bb1vNTyBNpFGneIAicVw 提取码:y7uw 单项选择题 C语言的基本单位是 函数 1.(A  )是构成C语言程序的基本单位. ...

  5. 关于c语言的基本知识,第二章_关于C语言的基本知识.ppt

    第二章_关于C语言的基本知识.ppt 函数 函数说明 例2.3 分析下面的运行结果. main() { printf("\"123\"\\\"456\" ...

  6. c语言编写订货系统,学位论文_基于c语言的仓库订货系统的仿真.doc

    学位论文_基于c语言的仓库订货系统的仿真 本科毕业论文(设计.创作) 题目: 基于C语言的仓库订货系统的仿真 学生姓名: 学号: 所在系院: 信息与通信技术系 专业: 电子信息工程 入学时间: 201 ...

  7. c语言数字灵活多变的访问形式_学习C语言你必须知道的事儿!

    是新朋友吗?记得先点蓝字关注我哦- 今日课程菜单 Java全栈开发 | Web前端+H5 大数据开发 | 大数据分析  人工智能+Python | 人工智能+物联网 有听过这样一段话: 在编程界,C语 ...

  8. go 怎么等待所有的协程完成_优雅地等待子协程执行完毕

    goroutine模拟了线程级别的返场的能力,但它的执行需要主协程给机会.一般的作法用sleep,chan阻塞,看起来让人不爽,本文介绍sync.WaitGroup 类型结合 defer 的特性,给出 ...

  9. c语言中平均值用什么表示_学C语言有什么用?

    这个也是我刚学C语言的疑问,当时总是写一些比较大小,排序之类的函数,很是枯燥,也学的不怎么样.学东西是要有用它的地方才有动力继续学习, C语言的应用很广的,比如 我以前学习的单片机,现在学习的嵌入式, ...

最新文章

  1. 微信里如何判断页面被分享成功
  2. Leetcode 350 两个数的交集2
  3. Oracle技术之Data Pump介绍
  4. 你在做大数据?你有目标么?
  5. 共享文件夹Access-Based Enumeration特性一览
  6. MySQL探秘(六):InnoDB一致性非锁定读(隔离性)
  7. 关于没有commit的死锁问题
  8. P2611-[ZJOI2012]小蓝的好友【Treap,扫描线】
  9. KingPaper初探ThinkPHP3.1.2之目录部署(二)
  10. VI全屏文本编辑器的命令总结
  11. Python开发过程中错误解决记录【持续更新记录,欢迎交流】
  12. android基础--PreferenceActivity
  13. blazeds_Spring BlazeDS集成:它是什么,它会发生什么变化?
  14. DMP 数据管理平台极简教程 ( Data Management Platform )
  15. arp协议分析python编程实现arp欺骗抓图片
  16. switch default多次触发
  17. 《深入理解计算机系统》Lab3 Bomblab
  18. 高通--PMIC修改(三)
  19. 淘宝详情页分发推荐算法总结:用户即时兴趣强化
  20. 再见了 HDFS!这个资源调度框架已成气候!

热门文章

  1. H5 CSS 引入方式 外联样式表
  2. 索引数组与关联数组的定义及区别
  3. 2021-7-14-超融合基础知识
  4. android手机号码恢复,手把手教你如何恢复安卓手机通讯录里面丢失的数据
  5. PXI标准– PXI规范更新总结
  6. 阿里云-轻量应用服务器 jdk tomcat 的配置
  7. SaaS 软件开发为企业数字化转型赋能
  8. -XX:+UseParallelGC 和 -XX:+UseParNewGC 的区别
  9. 原理c语言for循环延时1s,for循环实现C语言精确延时
  10. vue的项目搭建demo