原文链接:http://tecdat.cn/?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))
这是修整后参数的后验散布:
ggplot(post_dist,aes(x=draw)) + geom_histogram(aes(x=draw),bins=50) + geom\_vline(aes(xintercept = true\_vals))
仿佛可能取得这些参数的正当后验预计。 为了确保贝叶斯预计器失常工作,我对1,000个模仿数据集反复了此过程。
这将产生1,000组后验均值和1,000组95%置信区间。均匀而言,这1000个后验均值应以实在值为核心。均匀而言,实在参数值应在95%的工夫的置信区间内。
以下是这些评估的摘要。
“预计平均值”列是所有1,000个模仿中的均匀后验平均值。偏差百分比均小于5%。对于所有参数,95%CI的覆盖率约为95%。
扩大
咱们能够对该模型进行许多扩大。例如,能够应用除正态分布外的其余散布来拟合不同类型的后果。 例如,如果咱们有二元数据,则能够将其建模为:
而后在上放一个先验散布。这个想法将贝叶斯线性回归推广到贝叶斯GLM。
在本文中概述的线性状况下,能够更灵便地对协方差矩阵建模。相同,假如协方差矩阵是对角线且具备单个公共方差。这是多元线性回归中的同方差假如。如果数据是分类的(例如,每个受试者有多个察看后果),咱们能够应用反Wishart散布来建模整个协方差矩阵。
最受欢迎的见解
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模型实现