分享

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

 拓端数据 2022-08-11 发布于上海

全文链接:http:///?p=11617

相关视频

在这篇文章中,我将对多元线性回归使用block的Gibbs采样,得出block的Gibbs采样所需的条件后验分布。然后,对采样器进行编码,并使用模拟数据对其进行测试。

 贝叶斯模型

假设我们有一个样本量的主题。贝叶斯多元回归假设该向量是从多元正态分布中提取的 ,通过使用恒等矩阵,我们假设独立的观察结果。

到目前为止,这与多元正态回归相同。则将概率最大化可得出以下解 :

贝叶斯模型是通过指定为一个先验分布得到 。在此示例中,我将在以下情况下使用 先验值 

block Gibbs

在对采样器进行编码之前,我们需要导出Gibbs采样器的 每个参数的后验条件分布。

条件后验取更多的线性代数。

这是一个非常漂亮和直观的结果。条件后验的协方差矩阵是协方差矩阵的估计

还要注意,条件后验是一个多元分布。因此,在Gibbs采样器的每次迭代中,我们从后验绘制出一个完整的矢量 。

模拟

我模拟的 结果向量。 

运行 Gibbs采样器 会生成对真实系数和方差参数的估计。运行了500,000次迭代。周期为100,000次,10次迭代。

以下是MCMC链的图,其中真实值用红线表示。

# 计算后验摘要统计信息
post_dist %>%
  group_by(para) %>%
  summarise(median=median(draw),
            lwr=quantile(.025),
            upr=quantile(.975)) %>%
 
# 合并汇总统计信息
post\_dist <- post\_dist %>%
  left\_join(post\_sum_stats, by='param')
 
# 绘制MCMC链
ggplot(post_dist,aes(x=iter,y=dra)) +
  geom_line() +
  geom\_hline(aes(yintercept=true\_vals))

这是修整后参数的后验分布:


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多