R语言代写用Backfitting MCMC抽样算法进行贝叶斯推理案例

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

BART是贝叶斯非参数模型,可以使用Backfitting MCMC进行拟合 。 

 我不使用任何软件包...... MCMC是从头开始实现的。

考虑协变量数据X​和成果ÿ​为ñ​主题,(y_i,x_i)_ {1:n}​。在这个玩具示例中,数据看起来像这样:

我们可能会考虑以下概率模型

 y_i |  x_i, beta, phi  sim N( mu_i, phi) 


 

 mu_i =  sum_ {j = 0} ^ 3 x_i ^ j  beta_j

基本上我们使用三次多项式对条件均值进行建模。请注意,这是更一般的添加剂模型的特例

 mu_i =  sum_ {i = 0} ^ k f_j(x_i) beta_j

在这种情况下f_j(x_i)= x_i ^ j​和K = 3​。该模型p( beta_j) propto 1​在参数矢量的每个元素上具有平坦的先验和在方差参数上具有形状和速率公测​的反伽马先验。p( phi)= InvGam(.5,10000)0.510000

每个条件后验 beta_j​都是高斯(因为共轭)。我们可以使用共轭Gibbs或Metropolis从中进行采样。我们也可以将整个参数矢量公测​作为一个块进行采样,但是在这篇文章中我们将坚持反向拟合 - 这本身就是一个Gibbs采样器。我们仍然从其他条件的每个 beta_j​条件的条件后验中进行抽样公测​。然而,我们利用关键的洞察力,每个条件后验 beta_j​取决于其他beta 测试_ { -  J}​,仅由残差表示

R_j = y_i  -   sum_ {k  neq j} x_i ^ k  beta_k

直观地,R_j​是在减去义​其他项(非Ĵ​)所解释的部分之后的左手平均值的部分。它也是正常分布的,

R_j  sim N(x_i ^ j  beta_j, phi)

在正常之前 beta_j​,后验可以通过共轭来计算

p( beta_j | R_j, phi) sim N  big( frac { sum_ {i = 1} ^ n R_ {ij}  cdot x_i ^ j} { sum_ {i = 1} ^ n [x_i ^ j] ^ 2}, frac { phi} { sum_ {i = 1} ^ n [x_i ^ j] ^ 2}  big)

Backfitting MCMC如下进行。首先,初始化所有测试版除外 beta_1​。这完全是任意的 - 您可以从任何参数开始。然后,在每个Gibbs迭代中,

  1. 计算R_1​与值测试_ { -  1}​在当前迭代。来自后验的样本   beta_1  sim p( beta_1 | R_1, phi)​以电流抽取为条件披​。
  2. 计算R_2​与值测试_ { -  2}​在当前迭代。注意, beta_1​使用步骤1中的值。来自后部的样本   beta_2  sim p( beta_2 | R_2, phi)​。
  3. 对所有beta参数继续此过程。
  4. 公测​绘制完所有参数后,进行采样 phi  sim p( phi | y, beta)​。这个后验是另一个反伽马。

术语反向拟合似乎是合适的,因为在每次迭代中,我们都“退出”  beta_j​我们想要使用其他测试版进行采样的分布。

为了获得拟合的回归线,我们需要从后验预测分布中进行采样。我们在每个Gibbs迭代中的步骤4之后通过绘制ñ​值来执行此操作

 hat {y} _i |  x_i, beta ^ {[k]}, phi ^ {[k]}  sim N( mu_i ^ {[k]}, phi ^ {[k]}),i  in  {1,2 , dots,n }

上标[K]​表示使用来自K ^ {}第​Gibbs迭代的值的参数。


  

 

如果您有任何疑问,请在下面发表评论。 

 
原文地址:https://www.cnblogs.com/tecdat/p/10751771.html