R语言实现向量自回归和误差修正模型——附实战代码

news2024/11/19 22:51:26

      大家好,我是带我去滑雪!

      向量自回归(VAR)模型和误差修正模型(ECM)是时间序列分析中常用的两种模型,它们用于研究多个变量之间的动态关系。VAR 模型适用于研究多个相关变量之间的相互影响和动态关系,特别是在没有明确的因果关系方向时。ECM 是基于向量自回归模型的一种扩展,旨在处理协整关系。协整关系表示变量之间存在长期均衡关系。在实践中,研究人员通常使用单位根检验(如ADF检验)来检查时间序列是否平稳,然后使用协整检验来确定是否存在协整关系。如果存在协整关系,就可以考虑使用 VAR 模型和 ECM 模型来分析变量之间的关系。这些模型在经济学、金融学和其他领域中广泛应用,以揭示变量之间的动态性质和长期均衡关系。

一、向量自回归模型

(1)平稳VAR多变量原理

       平稳向量自回归(VAR)模型是一种多变量时间序列分析方法,用于研究变量之间的动态关系。在VAR模型中,所有的变量被同时建模,每一个变量都被其它所有变量的滞后值所影响。这种模型假设所有的变量都是平稳的,也就是说,它们的均值和方差在时间上是稳定的。总的来说,VAR模型的核心思想是将多个变量之间的关系纳入一个系统方程中,通过时间序列的历史数据来估计这些关系,从而实现对未来变量值的预测和分析。VAR模型的基本原理可以总结如下:

  1. 平稳性假设: VAR模型假设所涉及的所有变量都是平稳的。平稳性是指变量的统计特性,如均值和方差,在时间上保持不变。如果变量不是平稳的,通常需要进行差分操作,直到得到平稳的数据。

  2. 滞后阶数选择: 在构建VAR模型时,需要选择滞后阶数(lag order),表示当前时刻的变量值受多少时期之前的变量值影响。选择适当的滞后阶数通常需要借助信息准则(如AIC或BIC)来进行。

  3. 模型参数估计: 一旦选择了滞后阶数,就可以用最小二乘法(OLS)或极大似然法来估计VAR模型的参数。这些参数代表了各个变量之间的线性关系。

  4. 脉冲响应函数和方差分解: 通过VAR模型,可以得到系统中各个变量对于其它变量脉冲(冲击)的响应模式。脉冲响应函数显示了一个变量在受到一个单位冲击时的反应情况。方差分解则能够量化各个变量在系统变动中所占的比重。

  5. 预测和融合: 一旦VAR模型被估计出来,就可以用来进行未来数值的预测。此外,VAR模型还可以与其他模型或分析方法融合,以提高预测的准确性。

(2)下载并整理数据,为构建VAR模型做准备

       下载数据可以查看前面的博客(http://t.csdnimg.cn/tdjvG),本期使用getSymbls函数从网络上下载IBM从2015年1月1日到2017年1月18日的股票数据,数据包含IBM的开盘价、收盘价、成交量等数据。

install.packages("TTR")
library(quantmod)
IBM.dat = getSymbols("IBM", from="2015-01-01",to="2017-01-18", adjust = T, auto.assign = FALSE)
head(IBM.dat)
tail(IBM.dat)
Return = diff(log(IBM.dat[, 4]))*100
volume = log(IBM.dat[, 5])
plot(Return, xlab = "dates", main = "Time series of IBM returns")
plot(volume, xlab = "dates", main = "Time series of IBM volume")
dat0=cbind(Return, volume)
head(dat0)
dat=na.omit(dat0)

输出结果:

(3)估计VAR(p)

library(vars)
out.var=VAR(dat, p=1, type="const", season=NULL, exogen=NULL, lag.max=NULL)
options(digits=4)
coef(out.var)

输出结果:

$Return
               Estimate Std. Error         t value  Pr(>|t|)
Return.l    1  0.08745    0.04399   1.988    0.04737
volume.l   1 -1.11633    0.66518  -1.678    0.09391
const        5.59278        3.32232   1.683    0.09291

$volume
                   Estimate      Std. Error    t value      Pr(>|t|)
Return.l    1 0.007989   0.0002939    27.186   2.904e-101
volume.l   1 0.992436   0.0044435   223.347  0.000e+00
const         0.037821     0.0221934    1.704      8.896e-02

(4)Granger因果关系检验

causality(out.var, cause="Return", boot=TRUE, boot.runs=5000)

输出结果:

$Granger

    Granger causality H0: Return do not Granger-cause volume

data:  VAR object out.var
F-Test = 739, boot.runs = 5000, p-value <2e-16


$Instant

    H0: No instantaneous causality between: Return and volume

data:  VAR object out.var
Chi-squared = 76, df = 1, p-value <2e-16

       结果显示,拒绝原假设,认为报酬率是交易量的格兰杰原因。

(5)脉冲响应分析

output.irf=irf(out.var, impulse = "Vol", response = c("Ret","Vol"),boot=TRUE, boot.runs=1000)
output.irf
plot(output.irf) 

二、误差修正模型

      完整代码如下:

library(tsDyn)
lags <- vars::VARselect(dat, lag.max=25)$selection 
vecm.eg<-VECM(dat, lag=lags[3],include ="const", estim = "2OLS")
summary(vecm.eg)
summary(vecm.eg)$coefMat 
vecm.eg$model.specific$beta
vecm.jo<-VECM(dat, lag=lags[3], include ="const", estim = "ML")
summary(vecm.jo)
summary(vecm.jo)$coefMat
vecm.jo$model.specific$beta
library(urca)
cointest_eigen <- ca.jo(dat, K=lags[3], type="eigen", ecdet="const",spec="transitory")
summary(cointest_eigen)
cointest_trace <- ca.jo(dat, K=lags[3], type="trace", ecdet="const",spec="transitory")
summary(cointest_trace)

需要数据集的家人们可以去百度网盘(永久有效)获取:

链接:https://pan.baidu.com/s/1E59qYZuGhwlrx6gn4JJZTg?pwd=2138
提取码:2138 


更多优质内容持续发布中,请移步主页查看。

   点赞+关注,下次不迷路!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1075989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

总结CRM客户管理系统实施失败的主要原因

实施CRM系统相对于ERP等大型软件要更加容易&#xff0c;但不是每一家企业都能成功实施CRM系统&#xff0c;实施CRM销售管理系统失败的原因有很多比如准备工作不足、与现有应用无法集成做到数据互通、销售人员不容易操作系统。 准备工作不足 部署方式是本地化还云服务主要取决…

除了console.log(),很多人不知道的其他方法console.table,console.dir,console.time等

console.dir 可以对象化输出 dom <script>setTimeout(() > {let d document.querySelector(.box);console.log(d);console.dir(d);}, 500);</script>输出结果 这个对象展开之后的内容太多了就不截图了 console.table能够以表格形式展现对象/数组 <scrip…

如何在 PyTorch 中冻结模型权重以进行迁移学习:分步教程

一、说明 迁移学习是一种机器学习技术&#xff0c;其中预先训练的模型适用于新的但类似的问题。迁移学习的关键步骤之一是能够冻结预训练模型的层&#xff0c;以便在训练期间仅更新网络的某些部分。当您想要保留预训练模型已经学习的特征时&#xff0c;冻结至关重要。在本教程中…

回馈式负载箱的应用

回馈式负载箱通过用来模拟负载来测量电源的性能和稳定性&#xff0c;由可编程电子负载、控制电路和测量电路组成&#xff0c;回馈式负载箱的应用非常广泛&#xff0c;它用于电源系统的研发和测试。通过连接回馈式负载箱到待测电源上&#xff0c;可以模拟不同的负载情况&#xf…

LuaRadio介绍

介绍 LuaRadio是一个用于构建信号处理流程图的框架 在软件定义的无线电流图中&#xff0c;源和接收块倾向于实现某种I/O&#xff0c;如从SDR加密狗读取样本&#xff0c;或将样本写入IQ文件&#xff0c;而处理块倾向于计算&#xff0c;如滤波器和乘法器。 数据类型说明 LuaRadio…

ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的问题解决

winR打开窗口输入 services.msc 停止mysql 找到data文件&#xff0c;清空其中全部文件。没有data文件&#xff0c;手动创建 ​ 输入 mysqld --remove mysql 移除服务&#xff1b; 注册服务&#xff0c;mysqld -install&#xff1b; 并开始初始化&#xff0c;mysqld --initi…

【FreeRTOS】【STM32】03 FreeRTOSConfig.h头文件简介与修改

基于[野火]《FreeRTOS%20内核实现与应用开发实战—基于STM32》.pdf FreeRTOSConfig.h头文件是FreeRTOS各项功能的打开与关闭 FreeRTOSConfig.h头文件简介 之前也说过了&#xff0c;FreeRTOSConfig.h文件可以添加在工程中任意文件夹&#xff0c;只需要在路径中添加好了就行。…

修炼k8s+flink+hdfs+dlink(四:k8s概念)

一&#xff1a;概念 1. 概述 1.1 kubernetes对象. k8s对象包含俩个嵌套对象字段。 spec&#xff08;规约&#xff09;&#xff1a;期望状态 status&#xff08;状态&#xff09;&#xff1a;当前状态 当创建对象的时候&#xff0c;会按照spec的状态进行创建&#xff0c;如果…

某省医保局:强化医保信息化高质量建设,提升数字医疗保障服务能力

自2018年起&#xff0c;国家医保信息化工作启动&#xff0c;2020年10月完成了国家医保信息平台主体建设&#xff0c;随后国家医保信息化工作重点转向地方落地应用。在国家医保局的指导下&#xff0c;全国各地省市级医保部门制定了医疗保障信息化工作目标。 东北某省作为医保信息…

java日志框架详解-Log4j2

一、概述 Apache Log4j 2 &#xff08;Log4j – Apache Log4j 2&#xff09;是对Log4j的升级&#xff0c;它比其前身Log4j 1.x提供了重大改进&#xff0c;并参考了Logback中优秀的设计&#xff0c;同时修复了Logback架构中的一些问题。被誉为是目前最优秀的Java日志框架&#x…

【智慧燃气】智慧燃气解决方案总体概述--终端层、网络层

关键词&#xff1a;智慧燃气、智慧燃气系统、智慧燃气平台、智慧燃气解决方案、智慧燃气应用、智能燃气 智慧燃气解决方案是基于物联网、大数据、云计算、移动互联网等先进技术&#xff0c;结合燃气行业特征&#xff0c;通过智能设备全面感知企业生产、环境、状态等信息的全方…

合并单元格,并且动态合并单元格,合并相同值的单元格,vue2项目

element-ui 合并行或列 table :span-method&#xff08;行合并&#xff09;_elementui合并列_Take^that的博客-CSDN博客 <script>export default {data(){return {spanArr:[],pos:null,tableData:[},mounted(){this.getSpanArr(this.tableData)},methods:{objectSpanMeth…

基于若依ruoyi-nbcio支持flowable流程增加自定义业务表单(二)

之前讲了自定义业务表单&#xff0c;现在讲如何与流程进行关联 1、后端部分 WfCustomFormMapper.xml <update id"updateCustom" parameterType"Object">update wf_custom_form set deploy_id #{customFormVo.deployId}, flow_name#{customFormVo.…

MovieLens:一个常用的电影推荐系统领域的数据集

MovieLens是一个常用的电影推荐系统领域的数据集&#xff0c;用于研究和开发推荐算法和机器学习模型。该数据集包含了用户对电影的评分、电影的信息以及用户的信息。以下是MovieLens数据集的完整介绍&#xff1a; MovieLens数据集版本&#xff1a; MovieLens数据集有多个版本…

华为认证 | HCIP-Data Center Network V1.0正式发布!

华为认证数通高级工程师HCIP-Data Center Network V1.0&#xff08;中文版&#xff09;自2023年9月28日起&#xff0c;正式在中国区发布。 01 发布概述 基于“平台生态”战略&#xff0c;围绕“云-管-端”协同的新ICT技术架构&#xff0c;华为公司打造了覆盖ICT领域的认证体系&…

Gossip协议是什么

Gossip协议是什么 Gossip protocol 也叫 Epidemic Protocol (流行病协议), 是基于流行病传播方式的节点或者进程之间信息交换的协议, 也被叫做流言算法, 八卦算法、疫情传播算法等等. 说到 Gossip 协议, 就不得不提著名的六度分隔理论. 简单地说, 你和任何一个陌生人之间所间…

如何做文献笔记

读论文的每一部分都要思考&#xff0c;从该部分中可以我获取到什么信息&#xff1f; 从标题中可以获取到的信息 A技术应用在B领域 B领域之前无人用过机器学习方法 B领域之前有人用过机器学习方法一个新的方法数据集合 论文每个地方从标题到章节都可以读到一些单词、句式进行积…

短视频账号矩阵系统源码saas===独立部署

前言&#xff1a; 短视频账号矩阵是指在不同的短视频平台上&#xff0c;一个个人或企业所拥有的账号数量和分布情况。由于不同的短视频平台受众人群和内容类型等因素不同&#xff0c;因此拥有更多账号可以在更广泛的受众中传播内容&#xff0c;提高曝光度和流量。短视频账号矩阵…

医院门诊排队叫号系统

医院门诊排队叫号系统 1、系统概述&#xff1a; 门诊分诊排队叫号系统是在医院各门诊候诊区域所使用的智能化分诊和排队叫号管理系统&#xff0c;系统可有效地解决病人就诊时排队的无序、医生工作量的不平衡、就诊环境嘈杂等问题。系统具有一级、二级分诊排队模式&#xff0c…

SpringBoot 对接 MinIO 实现文件上传下载删除

前言 MinIO 是一个开源的对象存储服务器&#xff0c;它可以存储大容量非结构化的数据&#xff0c;例如图片、音频、视频、日志文件、备份数据和容器/虚拟机镜像等。 Spring Boot 与 MinIO 的整合可以方便地实现文件的上传和下载等功能 在实际应用中&#xff0c;Spring Boot …