时间序列分析(13)| 误差修正模型、协整检验(完结篇)

article/2025/9/26 14:09:46

本篇为「时间序列分析」系列推文的最后一篇。

1 协整的概念

「协整」(cointegrated)描述的是两个及以上时间序列变量之间的关系。

若一个时间序列变量的阶差分是平稳的,则称该变量为阶单整;若多个阶时间序列变量的线性组合的单整阶数小于,则称这些变量具有协整关系,记作;由线性组合的系数组成的向量称作「协整向量」(cointegrating vector)。

  • 对于两个变量来说,若它们的线性组合的单整阶数小于它们自身,则它们的阶数必然相同;

  • 对于多个变量来说,若它们的线性组合的单整阶数小于它们自身,但它们的阶数并不一定完全相等,则称它们具有「多重协整」(multicointegration)关系。举例来说,和是,记它们的一阶单整的线性组合为;若又和是,则、、三个变量的线性组合就可以是平稳的,即线性组合阶数小于它们各自的阶数。

2 误差修正模型

误差修正模型是协整关系的一个应用。以双变量为例,和从长期来看存在均衡关系,那么它们当期值会根据它们前期值之间的差进行修正。可以使用以下表达式进行描述:

402 Payment Required

式中是和的一个线性组合。假设和是平稳序列,则必然也是平稳的,即和存在协整关系。

在上式右侧加上和的滞后项:

则上式是一个VAR模型; 

3 Engle-Granger检验

Engle-Granger协整检验的步骤如下:

「第一步」:确定每个变量的单整阶数。

ADF检验可以用来进行单位根检验。单位根个数即时间序列变量的单整阶数。

「第二步」:估计协整向量。

假设和具有协整关系。因为和的线性组合是平稳序列,即,也即,因此可以使用OLS方法估计协整向量。

为常数,不影响单整阶数;模型残差的单整阶数也就是线性组合后的单整阶数。

采用DF或ADF的形式对残差进行单位根检验:

虽然形式相同,但协整检验的临界值与DF或ADF检验不同,原因在于只是误差的估计值而非实际值。临界值可在以下链接中查看:http://citeseer.ist.psu.edu/viewdoc/download;jsessionid=64E6EE352E1DE391B0A75E071486F7F1?doi=10.1.1.456.4786&rep=rep1&type=pdf。

若的单位根个数少于和,则和具有协整关系。

「第三步」:估计误差修正模型。

若和具有协整关系,则可以建立误差修正模型。

因为和的线性组合等于,而是常数可以合并到模型的截距项中去,因此在模型中可以使用代替线性组合:

上式可以和VAR一样进行估计。

4 案例

这里的案例取自参考书的对应内容。示例数据可在公众号后台发送关键词「示例数据」获取,文件名为134.Coint6.xls

读取示例数据,包括yzw三个变量:

library(readxl)
data = read_xls("134.Coint6.xls")
matplot(data, type = "l")
363f274e099dc8e24747e4126b6ecb5f.png

实际上,三个变量是通过模拟得到的,均为1阶单整。这里假设事先不知道其单整阶数,进行ADF检验。以变量y为例:

library(urca)
model.11 = ur.df(data$y, type = "drift", lags = 8, selectlags = "BIC")
summary(model.11)
## Value of test-statistic is: -0.6457 0.2288 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1  6.70  4.71  3.86dy = diff(data$y)
model.12 = ur.df(dy, type = "drift", lags = 8, selectlags = "BIC")
summary(model.12)
## Value of test-statistic is: -6.4483 20.8026 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1  6.70  4.71  3.86
  • 根据ADF检验可知,y含有单位根,而一阶差分dy是平稳的,因此可以判断y的单整阶数为1;

  • ADF检验请参考本系列的两篇推文:时间序列分析(6)| DF检验;时间序列分析(7)| ADF检验

使用OLS方法估计协整向量:

model.1 = lm(y ~ z + w, data = data)
summary(model.1)
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.04843    0.08422  -0.575    0.567    
## z           -0.92731    0.02434 -38.095   <2e-16 ***
## w            0.97688    0.01827  53.463   <2e-16 ***model.2 = lm(z ~ y + w, data = data)
summary(model.2)
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.05896    0.08788   0.671    0.504    
## y           -1.01082    0.02653 -38.095   <2e-16 ***
## w            1.02549    0.01570  65.324   <2e-16 ***model.3 = lm(w ~ y + z, data = data)
summary(model.3)
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.08524    0.08449  -1.009    0.316    
## y            0.99007    0.01852  53.463   <2e-16 ***
## z            0.95347    0.01460  65.324   <2e-16 ***

对残差进行单位根检验:

e3 = residuals(model.3)
plot(e3, type = "l")
summary(ur.df(e3, lags = 8, selectlags = "BIC"))
## Value of test-statistic is: -5.2984
ee04d8abbc661799e2bce5f37aa5f2b5.png
  • 本例中的5%显著水平下的临界值为-3.828,因此可以拒绝存在单位根的原假设,即可以认为e3是平稳序列。

建立误差修正模型并估计:

library(vars)
d.data = apply(data, 2, diff) # 差分
colnames(d.data) <- c("dy", "dz", "dw")model = VAR(d.data, p = 1, type = "const",exogen = e3[1:99])
## Estimated coefficients for equation dy: 
## ======================================= 
## Call:
## dy = dy.l1 + dz.l1 + dw.l1 + const + exo1 
## 
##        dy.l1        dz.l1        dw.l1        const         exo1 
##  0.178276649  0.312995255 -0.367720385  0.006065021  0.417973964 
## 
## 
## Estimated coefficients for equation dz: 
## ======================================= 
## Call:
## dz = dy.l1 + dz.l1 + dw.l1 + const + exo1 
## 
##       dy.l1       dz.l1       dw.l1       const        exo1 
##  0.14593872  0.26246246 -0.31262789 -0.04221498  0.07409731 
## 
## 
## Estimated coefficients for equation dw: 
## ======================================= 
## Call:
## dw = dy.l1 + dz.l1 + dw.l1 + const + exo1 
## 
##      dy.l1      dz.l1      dw.l1      const       exo1 
##  0.1557652  0.3012198 -0.4195309 -0.0398010 -0.0690757



0f87bf1d9a803b44107bc9e5c32db77a.jpeg


http://chatgpt.dhexx.cn/article/lsGN0ZFW.shtml

相关文章

误差修正模型

误差修正模型通常作为协整模型的补充模型出现。协整模型度量解释的是序列间的长期关系,而误差修正模型解释的是序列之间的短期关系。 1.模型简介 误差修正模型,简称ECM模型,构造原理如下: 假设非平稳响应序列{yt}与非平稳输入序列{xt}之间具有协整关系,即: 则回归残差序…

时间序列研(part10)--误差修正模型

学习笔记&#xff0c;仅供参考&#xff0c;有错必纠 文章目录 时间序列误差修正模型F检验似然比&#xff08;LR&#xff09;检验W检验LM乘数检验LR, W和LM检验自相关的LM检验 时间序列 误差修正模型 在用“一般到特殊”方法建立模型时的&#xff0c;首先应对初始模型&#xff0…

pyspider框架之Tripadvisor酒店数据爬取

需求 网站入口&#xff1a;www.tripadvisor.com 网页下端&#xff0c;遍历点开进入所有城市链接&#xff1a; 点击后进入该城市的所有hotel 代码 #!/usr/bin/env python # -*- encoding: utf-8 -*- # Created on 2018-09-06 11:16:59 # Project: trip_hotelfrom pys…

爬取携程和蚂蜂窝的景点评论数据\携程评论数据爬取\旅游网站数据爬取

本人长期出售超大量微博数据、旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com。同时欢迎加入社交媒体数据交流群:99918768 前言 为了获取多源数据需要到各个网站获取一些景点的评论信息和图片,首先选到了携程和蚂蜂窝这两个网站,将一些…

Python爬虫实战--TripAdvisor爬虫

目标站点分析 目标URL&#xff1a;https://www.tripadvisor.cn/Attractions-g60763-Activities-New_York_City_New_York.html#FILTERED_LIST 明确内容&#xff1a; 在图中&#xff0c;我们明确爬去的内容为&#xff1a;title&#xff0c;comment, cate&#xff08;即绿色框中的…

如何用Python从TripAdvisor抓取数十万条酒店评论

我从TripAdvisor抓取一些酒店评论&#xff0c;然后发现了一种从它们那里刮掉数十万条酒店评论的好方法。 让我们假设&#xff0c;例如&#xff0c;我们要从大加那利岛刮掉酒店评论。如果转到TripAdvisor&#xff0c;我们将看到URL为&#xff1a; https://www.tripadvisor.com…

美通企业日报 | 猫途鹰联手携程打造中国顶级旅行平台;强生战略合作阿里旗下Lazada...

今日看点 TripAdvisor与携程集团联手打造面向中国出境旅行者的顶级旅行平台。全球领先的旅游平台TripAdvisor&#xff08;猫途鹰&#xff09;宣布其中国子公司已与携程集团达成战略合作&#xff0c;以打造中国顶级的旅行计划和预订网站&#xff0c;为渴望探索世界的中国旅行者提…

Python爬取TripAdvisor

直接上代码&#xff1a; #爬取tripadvisor纽约市酒店超值排名#引入requests 获取html文件&#xff0c;才能从html获取信息 import requests #利用BeautifulSoup解析文件&#xff0c;获取想要的到的数据 from bs4 import BeautifulSoup #这段代码只用在获取等待&#xff0c;避免…

猫途鹰公布2023年全球十大最佳旅行体验和十大顶级景点 | 美通社头条

美通社消息&#xff0c;旅游指南平台猫途鹰(Tripadvisor)公布2023年旅行者之选&#xff1a;最佳“必做之事”。 随着夏季旅游的全面展开&#xff0c;这些是猫途鹰评论家们最喜欢的来自世界各地的活动&#xff0c;为希望创造难忘时刻的旅行者提供一份明确的非凡体验清单&#xf…

猫途鹰公布2019年“旅行者之选”全球最佳海滩榜单

全球旅游规划和预订平台猫途鹰(TripAdvisor)公布2019年“旅行者之选”最佳海滩榜单。获奖海滩是基于过去12个月内全球上亿旅行者的评分和点评的数量及质量综合计算得出&#xff0c;巴西费尔南多迪诺罗尼亚群岛&#xff08;Fernando de Noronha&#xff09;的桑乔湾海滩&#xf…

【Python】代码:获取猫途鹰的London酒店信息:基于Scrapy框架和requests库

本文以代码分析的形式记录&#xff1a;利用Scrapy框架和requests库爬取tripadvisor(猫途鹰)多个城市的酒店信息&#xff0c;数据量300w条(1.09G)&#xff0c;运行时间约7h。多个城市与单个城市的操作类似&#xff0c;为避免代码过于冗长&#xff0c;本文仅以爬取London酒店的评…

利用 pyspider 框架抓取猫途鹰酒店信息

利用框架 pyspider 能实现快速抓取网页信息&#xff0c;而且代码简洁&#xff0c;抓取速度也不错。 环境&#xff1a;macOS&#xff1b;Python 版本&#xff1a;Python3。 1.首先&#xff0c;安装 pyspider 框架&#xff0c;使用pip3一键安装&#xff1a; pip3 pyspider 2.终端…

可怕的pyspider猫途鹰

1.启动pyspider 2.新建一个项目 3.代码 4. 注意事项&#xff1a;网址什么的都变了 5.存储到MongoDB&#xff0c; 注意这个地方我错了三次 6.在tableau可视化才发现错误的1,2 之后就能可视化了&#xff0c;本次实验是个半成品。后期会补充。 #!/usr/bin/env python # -*- enco…

爬虫-猫途鹰

from bs4 import BeautifulSoup import requests url https://www.tripadvisor.cn/ wb_data requests.get(url) soup BeautifulSoup(wb_data.text,lxml) for i in soup.select(li):if len(i.select(.ranking))>0:sorti.select(.ranking)[0].text #排名countryi.select(.c…

JS DOM 编程复习笔记--父元素、子元素和兄弟元素(三)

今天我们来复习DOM中的获取父元素、子元素和兄弟元素的API&#xff0c;它们主要有parentNode、firstChild、firstElementChild、lastChild、lastElementChild、childNodes、children、nextElementSibling、nextSibling、previousElementSibling、previousSibling等。 目录 获取…

jquery 在兄弟节点前、或兄弟节点后添加最新元素

使用 jquery 封装好的方法操作 dom&#xff0c;非常方便 1、在兄弟节点前添加最新元素 使用 before() 方法 演示代码如下 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><script src"js/jquery-…

CSS第一章:4.元素关系(兄弟、祖后代关系);关系选择器

总览 1.元素关系 2.关系选择器 一、元素关系 1.元素关系1&#xff1a;父子 父元素&#xff1a;直接包含子元素的元素叫做父元素 子元素&#xff1a;直接被父元素包含的元素叫做子元素 2.元素关系2&#xff1a;祖先后代 祖先元素&#xff1a;直接或间接包含后代元素的元素…

选择兄弟元素中的第几个元素

:nth-child(anb) 这个CSS伪类首先找到所有当前元素的兄弟元素&#xff0c;然后按照位置先后顺序从1开始排序&#xff0c;选择的结果为CSS伪类:nth-child括号中表达式&#xff08;anb&#xff09;匹配到的元素集合&#xff08;n0&#xff0c;1&#xff0c;2&#xff0c;3...&am…

兄弟元素选择器

兄弟元素选择器 语法1&#xff1a;前一个元素 后一个元素作用&#xff1a;选中一个元素后紧挨着的指定的兄弟元素。语法2&#xff1a;前一个元素 ~ 后边一类元素作用&#xff1a;选中后边的所有兄弟元素 举例1&#xff1a; <!DOCTYPE html> <html lang"en&qu…

Thinking -- CSS从根解决选择前一个兄弟元素

Thinking系列&#xff0c;旨在利用10分钟的时间传达一种可落地的编程思想。 开发中遇到这样一个诉求&#xff1a;特定class的元素单独占一行&#xff0c;现需要针对其前一个兄弟元素增加相应标识&#xff0c;以使其占据所在行的剩余所有空间。 换句话&#xff1a;就是如何选中…