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

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

 一个贝叶斯模型

假设我们有一个样本大小的ñ​科目。我们观察n \次1​结果向量ÿ​。贝叶斯多元回归假设该向量是从多元正态分布中得出的,其中均值向量是X \公测​和协方差矩阵\ phi我​。这里X​是观察到n \ times p​的协变量矩阵。注意,该矩阵的第一列是标识。参数矢量\公测​的p \次1​,   \披​是一种常见的方差参数,一世​是n \ times n​单位矩阵。通过使用单位矩阵,我们假设独立观察。从形式上看,

y \ sim N_n(X \ beta,\ phi I)

到目前为止,这与频率设置中看到的多元正态回归相同。假设X​是完整列排名,最大化可能性产生解决方案:

\ hat {\ beta} =(X'X)^ { -  1} X'y

通过为\公测​和指定先验分布来获得贝叶斯模型\披​。对于这个例子,我将使用平坦的,不正确的先验  \公测​和反伽马先验\披​:

\ beta \ sim f(\ beta)\ propto 1

\ phi \ sim IG(\ alpha,\ gamma)

我们假设超级参数是简单的。

联合后验分布

关节后验分布与...成正比

p(\ beta,\ phi | y,X)\ propto p(y | \ beta,\ phi,X)p(\ beta | X)p(\ phi | X)  

我们可以这样写,因为我们假设事先独立。那是,

p(\ beta,\ phi | X)= p(\ beta | X)p(\ phi | X)​。

替换分布,

p(\ beta,\ phi | y,X)\ propto \ phi ^ { -  n / 2} e ^ { -  \ frac {1} {2 \ phi}(y  -  X \ beta)'(y  -  X \ beta)} \ phi ^ { - (\ alpha + 1)} e ^ { -  \ frac {\ gamma} {\ phi}}

block吉布斯采样器

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

条件后验\披​是通过降低因子而\披​不是从关节后部和重新排列来找到的。这种情况很容易,因为没有什么可以放弃的:

\ begin {aligned} p(\ phi | \ beta,\ alpha,\ gamma,y,X)&\ propto \ phi ^ { -  n / 2} e ^ { -  \ frac {1} {2 \ phi}( y  -  X \ beta)'(y  -  X \ beta)} \ phi ^ { - (\ alpha + 1)} e ^ { -  \ frac {\ gamma} {\ phi}} \\&\ propto \ phi ^ { - (\ alpha + \ frac {n} {2} + 1)} e ^ { -  \ frac {1} {\ phi} \ Big [\ frac {1} {2}(y  -  X \ beta)' (y  -  X \ beta)+ \ gamma \ Big]} \\&= IG(shape = \ alpha + \ frac {n} {2},rate = \ frac {1} {2}(y  -  X \ beta )'(y  -  X \ beta)+ \ gamma)\ end {aligned}

条件后验\公测​需要更多的线性代数。

\ begin {aligned} p(\ beta | \ phi,\ alpha,\ gamma,y,X)&\ propto e ^ { -  \ frac {1} {2 \ phi}(y  -  X \ beta)'(y -  X \ beta)} \\&\ propto e ^ { -  \ frac {1} {2 \ phi}(y'y  -  2 \ beta'X'y + \ beta'X'X \ beta)} \\ &\ propto e ^ { -  \ frac {1} {2 \ phi}(\ beta'X'X \ beta  -  2 \ beta'X'y)} \\&\ propto e ^ { -  \ frac {1} {2 \ phi}(\ beta'X'X \ beta  -  2 \ beta'(X'X)(X'X)^ { -  1} X'y)} \\&\ propto e ^ { -  \ frac {1} {2 \ phi}(\ beta  - (X'X)^ { -  1} X'y)'(X'X)(\ beta  - (X'X)^ { -  1} X'y) } \\&= N_p((X'X)^ { -  1} X'y,\ phi(X'X)^ { -  1})\ end {aligned}

这是一个非常漂亮和直观的结果。因为我们在参数向量上使用平坦先验,所以参数向量的条件后验以最大似然估计为中心  \ hat {\ beta} =(X'X)^ { -  1} X'y​。条件后验的协方差矩阵是协方差矩阵的频率估计,Cov(\ hat \ beta)= \ phi(X'X)^ { -  1}

还要注意,条件后验是一个多变量分布,因为它\公测​是一个向量。因此,在Gibbs采样器的每次迭代中,我们从后部绘制整个矢量或“块”。这比从每个参数的条件分布中绘制条件分布一样,一次一个,效率要高得多。这就是程序被称为“阻塞”采样器的原因。

模拟

 我模拟了一个50 \次1​ 结果向量y \ sim N_ {50}(X \ beta,10000 \ cdot I)​。这一世​是n \ times n​单位矩阵,X​是一个50 \次4​模型矩阵。真正的参数向量\公测​是

\ beta =(1000,50,-50,10)\'

运行阻塞的Gibbs采样器(block_gibbs()函数)会生成真实系数和方差参数的估计值。运行了500,000次迭代。老化期为100,000,修剪10次迭代。

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

MCMC_chains_blocked_Gibbs

以下是应用老化和修剪后参数的后验分布:

post_dist_blocked_gibbs

似乎我们能够对这些参数进行合理的后验估计。分布并不完全以事实为中心,因为我们的数据集只是事实的一个实现。为了确保贝叶斯估计器正常工作,我重复这个练习1000个模拟数据集。

这将产生1,000套后验平均值和1,000套95%可信区间。平均而言,这1000个后方手段应以真相为中心。平均而言,真实参数值应该在95%的时间内在可信区间内。

以下是这些评估的摘要。

block_gibbs_tab

“Estimator Means”列是所有1,000个模拟的平均后验平均值。非常好。百分比偏差均小于5%。所有参数的95%CI覆盖率约为95%。

扩展

我们可以对此模型进行许多扩展。例如,可以使用除Normal之外的其他分布以适应不同类型的结果。例如,如果我们有二进制数据,我们可以将其建模为:

y \ sim Ber(p)

logit(p)= X \ beta

然后预先分配\公测​。这个想法将贝叶斯线性回归推广到贝叶斯GLM。

在本文中概述的线性情况下,可以更灵活地对协方差矩阵进行建模。相反,假设协方差矩阵是具有单个共同方差的对角线。这是多元线性回归中的同方差性假设。如果数据是聚类的(例如,每个受试者多次观察),我们可以使用逆Wishart分布来模拟整个协方差矩阵。

还有问题吗?联系我们!

 

大数据部落 -中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和统计分析咨询服务

统计分析和数据挖掘咨询服务:y0.cn/teradat(咨询服务请联系官网客服

点击这里给我发消息​QQ:3025393450

【服务场景】  

科研项目; 公司项目外包;线上线下一对一培训;数据采集;学术研究;报告撰写;市场调查。

【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询服务

【大数据部落】大数据部落提供定制化的一站式数据挖掘和统计分析咨询服务

猜你喜欢

转载自www.cnblogs.com/tecdat/p/10751627.html
今日推荐