R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

news2024/11/19 12:32:18

介绍

最近我们被客户要求撰写关于向量自回归的研究报告,包括一些图形和统计输出。向量自回归(VAR)模型的一般缺点是,估计系数的数量与滞后的数量成比例地增加。因此,随着滞后次数的增加,每个参数可用的信息较少。在贝叶斯VAR文献中,减轻这种所谓的维数诅咒的一种方法是随机搜索变量选择(SSVS),由George等人提出(2008)。SSVS的基本思想是将通常使用的先验方差分配给应包含在模型中的参数,将不相关参数的先验方差接近零。这样,通常就可以估算出相关参数,并且无关变量的后验值接近于零,因此它们对预测和冲激响应没有显着影响。这是通过在模型之前添加层次结构来实现的,其中在采样算法的每个步骤中评估变量的相关性。

 

 视频:线性回归中的贝叶斯推断与R语言预测工人工资数据案例

贝叶斯推断线性回归与R语言预测工人工资数据

,时长09:58


视频:向量自回归VAR数学原理及R软件经济数据脉冲响应分析实例

【视频】向量自回归VAR数学原理及R语言软件经济数据脉冲响应分析实例

,时长12:01

这篇文章介绍了使用SSVS估计贝叶斯向量自回归(BVAR)模型。它使用Lütkepohl(2007)的数据集E1,其中包含有关1960Q1至1982Q4德国固定投资,可支配收入和消费支出的数据。加载数据并生成数据:


# 加载和转换数据
e1 <- diff(log(e1))

# 生成VAR
data <- gen_var(e1, p = 4, deterministic = "const")

# 获取数据矩阵
y <- data$Y[, 1:71]
x <- data$Z[, 1:71]

估算值

根据George等人所述的半自动方法来设置参数的先验方差(2008)。对于所有变量,先验包含概率设置为0.5。误差方差-协方差矩阵的先验信息不足。

# 重置随机数提高可重复性
set.seed(1234567)

t <- ncol(y) # 观察数
k <- nrow(y) # 内生变量数
m <- k * nrow(x) # 估计系数数

# 系数先验
a_mu_prior <- matrix(0, m) # 先验均值的向量

# SSVS先验(半自动方法)
ols <- tcrossprod(y, x) %*% solve(tcrossprod(x)) # OLS估计
sigma_ols <- tcrossprod(y - ols %*% x) / (t - nrow(x)) # OLS误差协方差矩阵
cov_ols <- kronecker(solve(tcrossprod(x)), sigma_ols)
se_ols <- matrix(sqrt(diag(cov_ols))) # OLS标准误
 

# 先验参数
prob_prior <- matrix(0.5, m)

#  方差-协方差矩阵
u_sigma_df_prior <- 0 # 方差-协方差矩阵
u_sigma_scale_prior <- diag(0, k) # 先验协方差矩阵
u_sigma_df_post <- t + u_sigma_df_prior # 后验自由度

初始参数值设置为零,这意味着在Gibbs采样器的第一步中应相对自由地估算所有参数。

可以直接将SSVS添加到VAR模型的标准Gibbs采样器算法中。在此示例中,常数项从SSVS中排除,这可以通过指定来实现include = 1:36。具有SSVS的Gibbs采样器的输出可以用通常的方式进一步分析。因此,可以通过计算参数的绘制方式获得点估计:


##          invest income   cons
## invest.1 -0.102  0.011 -0.002
## income.1  0.044 -0.031  0.168
## cons.1    0.074  0.140 -0.287
## invest.2 -0.013  0.002  0.004
## income.2  0.015  0.004  0.315
## cons.2    0.027 -0.001  0.006
## invest.3  0.033  0.000  0.000
## income.3 -0.008  0.021  0.013
## cons.3   -0.043  0.007  0.019
## invest.4  0.250  0.001 -0.005
## income.4 -0.064 -0.010  0.025
## cons.4   -0.023  0.001  0.000
## const     0.014  0.017  0.014

还可以通过计算变量的均值来获得每个变量的后验概率。从下面的输出中可以看出,在VAR(4)模型中似乎只有几个变量是相关的。常数项的概率为100%,因为它们已从SSVS中排除。


##          invest income cons
## invest.1   0.43   0.23 0.10
## income.1   0.10   0.18 0.67
## cons.1     0.11   0.40 0.77
## invest.2   0.11   0.09 0.14
## income.2   0.08   0.07 0.98
## cons.2     0.07   0.06 0.08
## invest.3   0.19   0.07 0.06
## income.3   0.06   0.13 0.10
## cons.3     0.09   0.07 0.12
## invest.4   0.78   0.09 0.16
## income.4   0.13   0.09 0.18
## cons.4     0.09   0.07 0.06
## const      1.00   1.00 1.00

给定这些值,研究人员可以按照常规方式进行操作,并根据Gibbs采样器的输出获得预测和脉冲响应。这种方法的优势在于它不仅考虑了参数不确定性,而且还考虑了模型不确定性。这可以通过系数的直方图来说明,该直方图描述了收入的第一个滞后项与消费当前值之间的关系。

hist(draws_a[6,], 

通过两个峰描述模型不确定性,并通过右峰在它们周围的分布来描述参数不确定性。

但是,如果研究人员不希望使用模型,变量的相关性可能会从采样算法的一个步骤更改为另一个步骤,那么另一种方法将是仅使用高概率的模型。这可以通过进一步的模拟来完成,在该模拟中,对于不相关的变量使用非常严格的先验,而对于相关参数则使用没有信息的先验。

后方抽取的均值类似于Lütkepohl(2007,5.2.10节)中的OLS估计值:


##          invest income   cons
## invest.1 -0.219  0.001 -0.001
## income.1  0.000  0.000  0.262
## cons.1    0.000  0.238 -0.334
## invest.2  0.000  0.000  0.001
## income.2  0.000  0.000  0.329
## cons.2    0.000  0.000  0.000
## invest.3  0.000  0.000  0.000
## income.3  0.000  0.000  0.000
## cons.3    0.000  0.000  0.000
## invest.4  0.328  0.000 -0.001
## income.4  0.000  0.000  0.000
## cons.4    0.000  0.000  0.000
## const     0.015  0.015  0.014

评价

bvar功能可用于将Gibbs采样器的相关输出收集到标准化对象中,例如predict获得预测或irf进行脉冲响应分析。

 hin(bvar_est, thin = 5)

预测

可以使用函数获得置信区间的预测predict

plot(bvar_pred)

脉冲响应分析


plot(OIR


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

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

相关文章

软件架构设计 :VO,BO,PO,DO,DTO的理解

文章目录前言一、小总结一下二、详细理解&#xff11;、Persistant Object(持久对象)个人理解2、 Business Object(业务对象)个人理解3.DTO&#xff08;Data Transfer Object&#xff09;数据传输对象个人理解5、VO&#xff08;Value Object&#xff09;值对象个人理解VO和DTO的…

web前端期末大作业 html+css+javascript化妆品网页设计实例 企业网站制作

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

c++ - 第16节 - map和set

1.关联式容器 在初阶阶段&#xff0c;我们已经接触过STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、forward_list(C11)等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身。那什么是关联…

【Linux】进程控制(详细解析)

文章目录一.进程创建初识fork函数fork函数返回值写时拷贝fork常规用法fork调用失败的原因二.进程终止进程退出场景进程退出码进程常见退出方法1.return2.exit3._exit三.进程等待进程等待的必要性获取子进程状态status进程等待的方法wait方法waitpid方法基于非阻塞接口的轮询检测…

python操作redis

目录 python操作redis 安装redis模块 基本链接 连接池连接 redis字符串操作 redis hash操作 redis 列表操作 redis 其它操作 redis管道 django中集成redis python操作redis 安装redis模块 pip install redis基本链接 # 第一步&#xff1a;导入Redis类 from redis …

Linux网络原理及编程(7)——第十七节 网络层

目录 IP报头 网段划分 私有IP地址和公网IP地址 补充一下路由器 的有关知识&#xff1a; 路由 各位好&#xff0c;博主新建了个公众号《自学编程村》&#xff0c;拉到底部即可看到&#xff0c;有情趣可以关注看看哈哈&#xff0c;关注后还可以加博主wx呦~~~&#xff08;公众…

【玩转c++】c++ 中 STL 简介

本期主题&#xff1a;介绍cSTL&#xff08;标准模板库&#xff09;博客主页&#xff1a;小峰同学分享小编的在Linux中学习到的知识和遇到的问题小编的能力有限&#xff0c;出现错误希望大家不吝赐身为程序员 &#xff0c;不会有人没有女朋友吧。 &#x1f341;1.什么是STL&…

[趣味][人工智能生成文字]chatGPT使用教程

ChatGPT 首先点击sign up注册&#xff0c;注册需要非中国手机号获取验证码&#xff0c;这里感谢一下alice的支援&#xff0c;没有好朋友的各位看到这里可以先去逛逛淘宝 注册后点击log in登录 然后直接输入想要生成的内容&#xff0c;点击右侧的小箭头 注意&#xff1a;根据Op…

cef浏览器加载过程实测ILoadHandler和IRequestHandler

针对方法GetResourceRequestHandler获取资源请求过程中,会多次发生请求,不知道何时加载完的问题,IRequestHandler没有了OnResourceLoadComplete和OnBeforeResourceLoad方法,如何判断是否加载完。使用browser.isLoading并不能真正的判断。所以想到了 OnFrameLoadEnd OnFram…

【STM32】详解独立看门狗的本质和使用步骤代码

一、看门狗 1、介绍 作为一个检测装置&#xff0c;发生意外情况能够报告并处理突发意外——复位。 复位中断属于不可屏蔽中断&#xff0c;属于优先级最高的中断 2、作用 两个看门狗&#xff08;独立看门狗和窗口看门狗&#xff09;均可用于检测并解决由软件错误导致的故障&…

设计没灵感,一定要逛这5个网站。

本期给大家分享几个设计灵感网站&#xff0c;希望对设计师们有所帮助&#xff0c;话不多说直接上内容。 1、dribbble Dribbble - Discover the World’s Top Designers & Creative Professionals Dribble是一个很大的设计作品共享网站&#xff0c;也涵盖了很丰富的设计作…

HTTP 和 HTTPS 它们之间的区别在哪里?

您可能已经听说过很多有关互联网术语 HTTP 和 HTTPS 的信息。您知道两者之间的区别是什么吗&#xff1f;HTTP 在随着技术的不断更新已经慢慢开始消失在互联网之中。在浏览器的地址栏中&#xff0c;您访问的每个网站的 URL 始终以 HTTP 或 HTTPS 开头&#xff0c;而目前 HTTPS 协…

SSM校园网报修系统计算机毕业论文java毕业设计选题源代码

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 《SSM校园网报修系统》该项目采用技术&#xff1a;jsp springmvcspringmybatis cssjs等相关技术&#xff0c;项目含有源码、文档、配套开发软件、…

02源码分析-ThreadLocal详解-并发编程(Java)

文章目录1 ThreadLocal内部结构2 主要方法源码分析2.1 set()方法2.1.1 getMap()2.1.2 createMap()2.1.3 ThreadLocalMap.set()2.1.4 replaceStaleEntry()2.1.5 expungeStaleEntry()2.1.6 cleanSomeSlots()2.1.7 rehash()2.1.8 expungeStaleEntries()2.1.9 resize()2.2 get()方法…

Minitab使用图形渲染和数据描述

Minitab使用图形渲染和数据描述 Minitab是最流行的质量、分发和分析程序之一&#xff0c;实际上是OMNITAB软件的一个较小版本。六西格玛的软件是开发组织质量开发和改进的合适工具&#xff0c;具有处理、计算、分析、报告和其他数据工具的强大能力。的确如此。在本软件的上下文…

HTML列表与表格详解_高效学习攻略

HTML列表与表格HTML篇_第六章、HTML列表与表格一、列表1.1定义1.2列表的分类1.3列表的对比二、表格2.1表格的定义2.2表格的边框2.3表格的表头单元格2.4表格标题 <caption>2.5表格的高度和宽度2.6表格背景2.7表格空间2.8合并单元格2.9表格头部、主题和页脚2.10表格的嵌套H…

《可解释机器学习公开课》来了!

Datawhale开源 联合发布&#xff1a;同济子豪兄、Datawhale文章目录1.什么是机器学习的可解释性分析。2.学可解释机器学习有什么用&#xff1f;3.可解释机器学习开源学习计划&#xff0c;同济子豪兄和 Datawhale 联合发布。什么是可解释AI现代的机器学习和人工智能&#xff0c;…

redis 的雪崩、穿透和击穿

面试题 了解什么是 redis 的雪崩、穿透和击穿&#xff1f;redis 崩溃之后会怎么样&#xff1f;系统该如何应对这种情况&#xff1f;如何处理 redis 的穿透&#xff1f; 面试官心理分析 其实这是问到缓存必问的&#xff0c;因为缓存雪崩和穿透&#xff0c;是缓存最大的两个问…

【C++】list的模拟实现来咯

文章目录一、整体框架二、迭代器1、list迭代器的引入2、迭代器的区分3、list迭代器的实现4、模板三、增删查改1、insert和erase2、push_back和push_front3、pop_back和pop_front四、list的接口1、构造2、析构3、赋值重载五、list和vector的对比一、整体框架 list的本质就是带头…

中润光学通过科创板注册:预计年营收4亿 拟募资4亿

雷递网 雷建平 12月9日嘉兴中润光学科技股份有限公司&#xff08;简称&#xff1a;“中润光学”&#xff09;日前通过注册&#xff0c;准备在科创板上市。中润光学计划募资4.05亿&#xff0c;其中&#xff0c;2.7亿元用于高端光学镜头智能制造项目&#xff0c;5629万元用于高端…