首页 > 其他分享 >R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型|附代码数据

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

时间:2023-08-05 23:22:46浏览次数:43  
标签:BVAR ## 模型 贝叶斯 SSVS 变量 0.000

原文链接:http://tecdat.cn/?p=9390

原文出处:拓端数据部落公众号

 最近我们被客户要求撰写关于贝叶斯向量自回归(BVAR)的研究报告,包括一些图形和统计输出。


介绍

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

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

  r

# 加载和转换数据
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。误差方差-协方差矩阵的先验信息不足。

  r
# 重置随机数提高可重复性
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采样器的输出获得预测和脉冲响应。这种方法的优势在于它不仅考虑了参数不确定性,而且还考虑了模型不确定性。这可以通过系数的直方图来说明,该直方图描述了收入的第一个滞后项与消费当前值之间的关系。

  r
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进行脉冲响应分析。

 

  r
 hin(bvar_est, thin = 5)

预测

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

  r
plot(bvar_pred)

 

脉冲响应分析

  r

plot(OIR


最受欢迎的见解

1.matlab使用贝叶斯优化的深度学习

2.matlab贝叶斯隐马尔可夫hmm模型实现

3.R语言Gibbs抽样的贝叶斯简单线性回归仿真

4.R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归

5.R语言中的Stan概率编程MCMC采样的贝叶斯模型

6.Python用PyMC3实现贝叶斯线性回归模型

7.R语言使用贝叶斯 层次模型进行空间数据分析

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

9.matlab贝叶斯隐马尔可夫hmm模型实现

标签:BVAR,##,模型,贝叶斯,SSVS,变量,0.000
From: https://www.cnblogs.com/tecdat/p/17608838.html

相关文章

  • 周志华《机器学习》课后习题(第七章):贝叶斯分类
    作者| 我是韩小琦7.1试使用极大似然法估算回瓜数据集3.0中前3个属性的类条件概率.答:以第一个属性色泽为例,其值计数如下:色泽乌黑浅白青绿好瓜否243是413令  表示好瓜中色泽为“乌黑”的概率,  为好瓜中“浅白”的概率,  ,  ,  表示好瓜的样本,其他类同,于是色泽......
  • 使用python进行贝叶斯统计分析|附代码数据
    原文链接:http://tecdat.cn/?p=7637最近我们被客户要求撰写关于贝叶斯统计的研究报告,包括一些图形和统计输出。本文讲解了使用PyMC3进行基本的贝叶斯统计分析过程. ( 点击文末“阅读原文”获取完整代码数据******** )。  #Importsimportpymc3aspm#python的概率......
  • 贝叶斯网络python实战(以泰坦尼克号数据集为例,pgmpy库)
    贝叶斯网络python实战(以泰坦尼克号数据集为例,pgmpy库)leida_wt 2019-03-2423:05:36  16815  收藏 140分类专栏: 机器学习 文章标签: pgmpy 贝叶斯网络 泰坦尼克 机器学习 图网络版权 文章目录贝叶斯网络简介贝叶斯推断思路贝叶斯网络贝叶斯网络的实现应用步骤泰坦尼克......
  • 概率图模型(PGM):贝叶斯网(Bayesian network)初探
    概率图模型(PGM):贝叶斯网(Bayesiannetwork)初探1.从贝叶斯方法(思想)说起-我对世界的看法随世界变化而随时变化用一句话概括贝叶斯方法创始人ThomasBayes的观点就是:任何时候,我对世界总有一个主观的先验判断,但是这个判断会随着世界的真实变化而随机修正,我对世......
  • PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素
    原文链接:http://tecdat.cn/?p=24346最近我们被客户要求撰写关于用户流失数据挖掘的研究报告,包括一些图形和统计输出。在今天产品高度同质化的品牌营销阶段,企业与企业之间的竞争集中地体现在对客户的争夺上“用户就是上帝”促使众多的企业不惜代价去争夺尽可能多的客户。但是企......
  • 贝叶斯优化
    1贝叶斯优化的基本原理贝叶斯优化方法是当前超参数优化领域的SOTA手段,可以被认为是当前最为先进的优化框架,它可以被应用于AutoML的各大领域,不止限于超参数搜索HPO的领域,更是可以被用于神经网络架构搜索NAS以及元学习等先进的领域。现代几乎所有在效率和效果上取得优异成果的超参......
  • 拓端tecdat|R语言贝叶斯Metropolis-Hastings Gibbs 吉布斯采样器估计变点指数分布分析
    原文链接:http://tecdat.cn/?p=26578 原文出处:拓端数据部落公众号最近我们被客户要求撰写关于吉布斯采样器的研究报告,包括一些图形和统计输出。指数分布是泊松过程中事件之间时间的概率分布,因此它用于预测到下一个事件的等待时间,例如,您需要在公共汽车站等待的时间,直到下一班车......
  • 算法_贝叶斯网络学习_bayesian networks
    基本概念条件概率联合概率边缘概率链式法则随机变量的独立性条件独立性贝叶斯规则、贝叶斯概率推理和贝叶斯网络模型。stochastic,主要用作形容词,主要意思为“随机的;猜测的”R语言包R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析lme4广义线性混合模型......
  • 基于知识图谱的电影知识问答系统:训练TF-IDF 向量算法和朴素贝叶斯分类器、在 Neo4j 中
    基于知识图谱的电影知识问答系统:训练TF-IDF向量算法和朴素贝叶斯分类器、在Neo4j中查询1.项目介绍训练TF-IDF向量算法和朴素贝叶斯分类器,预测用户文本所属的问题类别使用分词库解析用户文本词性,提取关键词结合关键词与问题类别,在Neo4j中查询问题的答案通过Flask对......
  • 数据代码分享|R语言lasso回归、贝叶斯分析员工满意度调查数据、缺失值填充
    全文链接:https://tecdat.cn/?p=33055原文出处:拓端数据部落公众号员工满意度对于组织绩效和竞争力具有重要影响,因此准确了解员工满意度的影响因素和有效管理成为管理者的关键任务。而员工满意度调查是常用的研究方法之一,通过收集员工的反馈数据来了解他们的期望、需求和感受。本......