R语言实现向量自回归和误差修正模型——附实战代码
大家好,我是带我去滑雪!
向量自回归(VAR)模型和误差修正模型(ECM)是时间序列分析中常用的两种模型,它们用于研究多个变量之间的动态关系。VAR 模型适用于研究多个相关变量之间的相互影响和动态关系,特别是在没有明确的因果关系方向时。ECM 是基于向量自回归模型的一种扩展,旨在处理协整关系。协整关系表示变量之间存在长期均衡关系。在实践中,研究人员通常使用单位根检验(如ADF检验)来检查时间序列是否平稳,然后使用协整检验来确定是否存在协整关系。如果存在协整关系,就可以考虑使用 VAR 模型和 ECM 模型来分析变量之间的关系。这些模型在经济学、金融学和其他领域中广泛应用,以揭示变量之间的动态性质和长期均衡关系。
一、向量自回归模型
(1)平稳VAR多变量原理
平稳向量自回归(VAR)模型是一种多变量时间序列分析方法,用于研究变量之间的动态关系。在VAR模型中,所有的变量被同时建模,每一个变量都被其它所有变量的滞后值所影响。这种模型假设所有的变量都是平稳的,也就是说,它们的均值和方差在时间上是稳定的。总的来说,VAR模型的核心思想是将多个变量之间的关系纳入一个系统方程中,通过时间序列的历史数据来估计这些关系,从而实现对未来变量值的预测和分析。VAR模型的基本原理可以总结如下:
-
平稳性假设: VAR模型假设所涉及的所有变量都是平稳的。平稳性是指变量的统计特性,如均值和方差,在时间上保持不变。如果变量不是平稳的,通常需要进行差分操作,直到得到平稳的数据。
-
滞后阶数选择: 在构建VAR模型时,需要选择滞后阶数(lag order),表示当前时刻的变量值受多少时期之前的变量值影响。选择适当的滞后阶数通常需要借助信息准则(如AIC或BIC)来进行。
-
模型参数估计: 一旦选择了滞后阶数,就可以用最小二乘法(OLS)或极大似然法来估计VAR模型的参数。这些参数代表了各个变量之间的线性关系。
-
脉冲响应函数和方差分解: 通过VAR模型,可以得到系统中各个变量对于其它变量脉冲(冲击)的响应模式。脉冲响应函数显示了一个变量在受到一个单位冲击时的反应情况。方差分解则能够量化各个变量在系统变动中所占的比重。
-
预测和融合: 一旦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
$InstantH0: 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
更多优质内容持续发布中,请移步主页查看。
点赞+关注,下次不迷路!
相关文章:
R语言实现向量自回归和误差修正模型——附实战代码
大家好,我是带我去滑雪! 向量自回归(VAR)模型和误差修正模型(ECM)是时间序列分析中常用的两种模型,它们用于研究多个变量之间的动态关系。VAR 模型适用于研究多个相关变量之间的相互影响和动态关…...
原理:用UE5制作一个2D游戏
选中资产图片右键--Sprite Actions--Apply Paper2D Texture Settings 制作场景 把它丢到场景里,并把坐标归零 创建图块集tileset 打开新建的tile set,根据最小图块设置最小尺寸单元 选择需要的图块单元,add box 对新建的tile set右键创建til…...
【ARM 嵌入式 编译系列 11.3 -- GCC attribute packed noreturn constructor 介绍】
文章目录 GCC 的 __attribute__ 是一个编译器扩展特性,允许开发者在源代码中设置函数属性(function attributes)、变量属性(variable attributes)和类型属性(type attributes)。这些属性可以影响函数、变量或类型的行为。 以下是一些常见的 __attribute__ 属性: __at…...
主从Reactor高并发服务器
文章目录 Reactor模型的典型分类单Reactor单线程单Reactor多线程多Reactor多线程本项目中实现的主从Reactor One Thread One Loop各模型的优点与缺点 项目分解Reactor服务器模块BufferSocketChannelEpollerTimerWheelEventLoopAnyConnectionAcceptorLoopThreadLoopThreadPoolTc…...
文心一言Plugin实战来了,测试开发旅游攻略助手
刚刚过去的8月,百度WAVE SUMMIT 深度学习开发者大会上,重磅发布文心一言的五个原生插件:百度搜索、览卷文档(基于文档的交互)、E 言易图(数据洞察图表生成)、说图解画(基于图片的交互…...
微服务13-Seata的四种分布式事务模式
文章目录 XA模式实现XA模式 AT模式AT模式的脏写问题(对同数据并发写的问题)其他事务不获取全局锁的一个情况(AT模式写隔离的实现)实现AT模式 TCC模式TCC实现我们怎么样去判断是否空回滚和业务悬挂?业务分析 Saga模式总…...
C结构体内定义结构体,不能直接赋值。
现像: 如下代码: 头文件: typedef struct aBlinkGpioPinOutAbst_{void (*initAsOutput)(void);void (*high)(void);void (*low)(void); }aBlinkGpioPinOutAbst;typedef struct aBlinkGpioAbst_{ #if GPIO_CONFIG_PA0 GPIO_CONFIG_AS_OUTPU…...
PHP遇见错误了看不懂?这些错误提示你必须搞懂
🎬 鸽芷咕:个人主页 🔥 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 一、错误分类二、系统错误:2.1 编译错误2.2 致命错误2.3 警告错误2.4 通知错误 三、用户错误3.1 错…...
微信小程序备案流程操作详解
1、2023年9月1号小程序开始必须备案了,各位小程序商城只需要按流程自主去微信小程序后台操作即可; 2、对未上架的微信小程序,从2023年9月1号开始需先备案才能上架; 3、对存量已上架的小程序,需在2024年3月31号前完成备案即可。逾期未完成备案,平台将按照备案相关规定于…...
【100天精通Python】Day70:Python可视化_绘制不同类型的雷达图,示例+代码
目录 1. 基本雷达图 2. 多组数据的雷达图 3 交互式雷达地图 4 动态雷达图 0 雷达图概述 雷达图(Radar Chart),也被称为蜘蛛图(Spider Chart)或星型图,是一种用于可视化多维数据的图表类型。雷达图通常由…...
KY258 日期累加
KY258 日期累加 int main() {int n 0; //样例个数cin >> n;//for循环处理n个样例for (int i 0; i < n; i){int y, m, d, num;int days[12] { 31,28,31,30,31,30,31,31,30,31,30,31 };//输入年月日 要加的天数cin >> y >> m >> d >>…...
基于CodeFormer实现图片模糊变清晰,去除马赛克等效果
前言 CodeFormer是一种基于AI技术深度学习的人脸复原模型,由南洋理工大学和商汤科技联合研究中心联合开发。该模型通过结合了VQGAN和Transformer等技术,可以通过提供模糊或马赛克图像来生成清晰的原始图像。可以实现老照片修复、照片马赛克修复、黑白照…...
Docker【部署 05】docker使用tensorflow-gpu安装及调用GPU踩坑记录
tensorflow-gpu安装及调用GPU踩坑记录 1.安装tensorflow-gpu2.Docker使用GPU2.1 Could not find cuda drivers2.2 was unable to find libcuda.so DSO2.3 Could not find TensorRT&&Cannot dlopen some GPU libraries2.4 Could not create cudnn handle: CUDNN_STATUS_…...
前后端分离中,前端请求和后端接收请求格式总结
get请求可以携带的参数 1)前端:传统键值对(http:xx?a1&b1) <--> 后端:RequestParam("a") int a , RequestParam("b") int b 2)前端:(http:xx/a/b) <--> 后端:Reque…...
pytorch的基本运算,是不是共享了内存,有没有维度变化
可以把PyTorch简单看成是Python的深度学习第三方库,在PyTorch中定义了适用于深度学习的基本数据结构——张量,以及张量的各类计算。其实也就相当于NumPy中定义的Array和对应的科学计算方法,正是这些基本数据类型和对应的方法函数,…...
Visual Studio 2022新建项目时没有ASP.NET项目
一、Visual Studio 2022新建项目时没有ASP.NET项目 1、打开VS开发工具,选择工具菜单,点击“获取工具和功能” 2、选择“ASP.NET和Web开发”和把其他项目模板(早期版本)勾选上安装即可...
nuiapp项目实战:导航栏动态切换效果实践案例树
测试软件的百忙之中去进行软件开发的工作,开展开发软件的工作事情,也真是繁忙至极点的了。 不到一刻钟的课程内容,个人用了三次去写串联的知识点,然后这是第三次,还是第四次了才完全写出来一个功能的效果。 一刻钟的功…...
【机器学习】集成学习(以随机森林为例)
文章目录 集成学习随机森林随机森林回归填补缺失值实例:随机森林在乳腺癌数据上的调参附录参数 集成学习 集成学习(ensemble learning)是时下非常流行的机器学习算法,它本身不是一个单独的机器学习算法,而是通过在数据…...
主机jvisualvm连接到tomcat服务器查看jvm状态
使用JMX方式连接到tomcat,连接后能够查看前边的部分内容,但是不能查看Visual GC,显示不受此JVM支持, 对了,要显示Visual GC,首先要安装visualvm工具,具体安装方式就是根据自己的jdk版本下载…...
uniapp 自定义tabbar页面不刷新
最近在做自定义tabbar时,每次切换页面都要刷新,页面渲染很慢,需要实现切换页面不刷新问题。 结局思路,原生的tabbar切换页面时就不选新,用switchTab来跳转 1.pages.json中配置tabbar,如下,设置高度为0&am…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

