前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

作者头像
拓端
发布2023-09-25 10:28:53
2130
发布2023-09-25 10:28:53
举报
文章被收录于专栏:拓端tecdat

1)定义模型(即概率先验)。在此示例中,让我们构建一个简单的线性回归模型(对数)。

代码语言:javascript
复制


a<-pars[1]      #截距

b<-pars[2]      #斜率

sd_e<-pars[3]   #残差

if(sd_e<=0){return(NaN)}



log_likelihood<-sum( dnorm(data[,2],pred,sd_e, log=TRUE) )

先验:

代码语言:javascript
复制

epsilon<-pars[3]    #残差



prior_a<-dnorm(a,0,100,log=TRUE)     ##所有的非信息性先验

prior_b<-dnorm(b,0,100,log=TRUE)     ## 参数.

prior_epsilon<-dgamma(epsilon,1,1/100,log=TRUE)

现在让我们模拟一些数据以进行运行测试:

代码语言:javascript
复制
x<-runif(30,5,15)

y<-x+rnorm(30,0,5) ##斜率=1, 截距=0, epsilon=5

2)Metro Hastings 完成所有工作。

代码语言:javascript
复制
MH(li_func=li_reg,pars=c(0,1,1),

3)您可以使用plotMH()查看所有模型参数的后验

代码语言:javascript
复制
plot(mcmc)

点击标题查阅往期内容

01

02

03

04

绘制所有参数之间的相关性。

4)输出后验置信区间。

代码语言:javascript
复制
BCI

#              0.025    0.975

# a       -5.3345970 6.841016

# b        0.4216079 1.690075

# epsilon  3.8863393 6.660037

接下来,我想提供一种直观的方法来可视化此算法运行的情况。

主要思想是从分布中抽取样本。积分很重要,贝叶斯定理本身:

P(θ| D)= P(D |θ)P(θ)/ P(D)

其中P(D)是观察数据的无条件概率。由于这不依赖于推断的模型(θ)参数,因此P(D)是归一化常数。

因此,我们有一个非归一化的概率密度函数,我们希望通过随机抽样来估计。对于复杂的模型而言,随机抽样本身的过程通常很困难,因此,我们使用马尔可夫链来探索分布。我们需要一个链,如果运行时间足够长,它将作为目标分布的随机样本整体。我们构建的马尔可夫链的这种特性称为 遍历性。Metropolis-Hastings算法是构建这种链的一种方法。

步骤:

  1. 在参数空间k_X中选择一些起点
  2. 选择一个候选点k_Y〜N(k_X,σ)。这通常称为提议分布
  3. 移至候选点的概率为:min(π(k_Y)/π(K_X),1)
  4. 重复。

以下代码通过简单的正态目标分布演示了此过程。

代码语言:javascript
复制

###     Metropolis-Hastings 可视化                #######



k_X = seed; ##将k_X设置为种子位置




for(i in 1:iter)

{

track<-c(track,k_X)    ## 链

k_Y = rnorm(1,k_X,prop_sd) ##候选点



## -- 绘制链的核密度估计





lines(density(track,adjust=1.5),col='red',lwd=2)



## -- 绘制链


plot(track,1:i,xlim=plot_range,main='',type='l',ylab='Trace')




## -- 绘制目标分布和提议分布 



curve(dnorm(x,k_X,prop_sd),col='black',add=TRUE)

abline(v=k_X,lwd=2)




## 接受概率为a_X_Y 

if (log(runif(1))<=a_X_Y)



points(k_Y,0,pch=19,col='green',cex=2)



## 调整提议

if(i>100)

prop_sd=sd(track[floor(i/2):i])

该算法实现中的一个普遍问题是σ的选择。当σ接近目标分布的标准偏差时,将发生有效混合(链收敛到目标分布)。当我们不知道这个值时。我们可以允许σ根据到目前为止的链历史记录进行调整。在上面的示例中,将σ更新为链中某些先验点的标准偏差值。

输出为多页pdf,可以滚动浏览。

顶部显示了目标分布(蓝色虚线)和通过MCMC样本对目标进行的核平滑估计。第二面板显示了链的轨迹,底部显示了算法本身的步骤。

注意:请注意,前100次左右的迭代是目标分布的较差表示。在实践中,我们将“预烧”该链的前n个迭代-通常是前100-1000个。


点击标题查阅往期内容

R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享

PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像

MATLAB随机森林优化贝叶斯预测分析汽车燃油经济性

R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据

使用贝叶斯层次模型进行空间数据分析

MCMC的rstan贝叶斯回归模型和标准线性回归模型比较

python贝叶斯随机过程:马尔可夫链Markov-Chain,MC和Metropolis-Hastings,MH采样算法可视化

Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现

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

贝叶斯线性回归和多元线性回归构建工资预测模型

Metropolis Hastings采样和贝叶斯泊松回归Poisson模型

贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据

R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据

R语言STAN贝叶斯线性回归模型分析气候变化影响北半球海冰范围和可视化检查模型收敛性

PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像

贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据

R语言JAGS贝叶斯回归模型分析博士生延期毕业完成论文时间

R语言Metropolis Hastings采样和贝叶斯泊松回归Poisson模型

Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户

R语言贝叶斯MCMC:用rstan建立线性回归模型分析汽车数据和可视化诊断

R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例

R语言贝叶斯Poisson泊松-正态分布模型分析职业足球比赛进球数

随机森林优化贝叶斯预测分析汽车燃油经济性

R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数

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

Python贝叶斯回归分析住房负担能力数据集

R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析

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

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

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

R语言和STAN,JAGS:用RSTAN,RJAG建立贝叶斯多元线性回归预测选举数据

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言贝叶斯线性回归和多元线性回归构建工资预测模型

R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例

R语言stan进行基于贝叶斯推断的回归模型

R语言中RStan贝叶斯层次模型分析示例

R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

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

WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较

R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样

R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例

R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型

R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-22 16:52,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 拓端数据部落 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档