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

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

考虑协变量数据R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发和成果R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_R语言_02R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_R语言_03主题,R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_04。在这个 示例中,数据看起来像这样:

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

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

 R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_06


 

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

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

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

在这种情况下R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_09R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_10。该模型R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_11在参数矢量的每个元素上具有平坦的先验和在方差参数上具有形状和速率R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_12的反伽马先验。R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_13R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_R语言_14R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_15

每个条件后验R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_R语言_16都是高斯(因为共轭)。我们可以使用共轭Gibbs或Metropolis从中进行采样。我们也可以将整个参数矢量R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_12作为一个块进行采样,但是在这篇文章中我们将坚持反向拟合 - 这本身就是一个Gibbs采样器。我们仍然从其他条件的每个R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_R语言_16条件的条件后验中进行抽样R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_12。然而,我们利用关键的洞察力,每个条件后验R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_R语言_16取决于其他beta R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_21,仅由残差表示

R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_22

直观地,R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_R语言_23是在减去R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_24其他项(非R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_R语言_25)所解释的部分之后的左手平均值的部分。它也是正常分布的,

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

在正常之前R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_R语言_16,后验可以通过共轭来计算

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

Backfitting MCMC如下进行。首先,初始化所有测试版除外R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_29。这完全是任意的 - 您可以从任何参数开始。然后,在每个Gibbs迭代中,

  1. 计算R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_30与值R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_31在当前迭代。来自后验的样本  R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_32以电流抽取为条件R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_R语言_33
  2. 计算R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_34与值R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_35在当前迭代。注意,R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_29使用步骤1中的值。来自后部的样本  R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_37
  3. 对所有beta参数继续此过程。
  4. R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_12绘制完所有参数后,进行采样R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_R语言_39。这个后验是另一个反伽马。

术语反向拟合似乎是合适的,因为在每次迭代中,我们都“退出” R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_R语言_16我们想要使用其他测试版进行采样的分布。

为了获得拟合的回归线,我们需要从后验预测分布中进行采样。我们在每个Gibbs迭代中的步骤4之后通过绘制R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_R语言_03值来执行此操作

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

上标R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_43表示使用来自R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_44Gibbs迭代的值的参数。


  R语言用Backfitting MCMC抽样算法进行贝叶斯推理案例_编程开发_45

 

非常感谢您阅读本文,有任何问题请在下面留言!