在本文中,我们将在贝叶斯框架中引入回归建模,并使用PyMC3 MCMC库进行推理。
最近我们被客户要求撰写关于叶斯线性回归模型的研究报告,包括一些图形和统计输出。我们将首先回顾经典频率论的多重线性回归方法。然后讨论贝叶斯如何考虑线性回归。
视频:线性回归中的贝叶斯推断与R语言预测工人工资数据案例
贝叶斯推断线性回归与R语言预测工人工资数据
,时长09:58
用PyMC3进行贝叶斯线性回归
在本节中,我们将对统计实例进行一种经典的方法,即模拟一些我们知道的属性的数据,然后拟合一个模型来推算这些原始属性。
什么是广义线性模型?
在我们开始讨论贝叶斯线性回归之前,我想简要地概述广义线性模型(GLM)的概念,因为我们将使用它们来在PyMC3中建立我们的模型。
GLM允许具有除正态分布以外的误差分布的因变量。
用PyMC3模拟数据并拟合模型
在我们使用PyMC3来指定和采样贝叶斯模型之前,我们需要模拟一些噪声线性数据。
输出如下图所示:
通过Numpy,pandas和seaborn模拟噪声线性数据
现在我们已经进行了模拟,我们想要对数据拟合贝叶斯线性回归。这是glm方法。
然后我们将找到MCMC采样器的最大后验概率(MAP)估计值。最后,我们将使用No-U-Turn Sampler(NUTS)来进行实际推理,然后绘制模型的曲线,将前500个样本丢弃为“burn in”预烧过程。
traceplot如下图所示:
使用PyMC3将贝叶斯GLM线性回归模型拟合到模拟数据
首先我们使用seaborn lmplot方法,fit_reg参数设置False,不绘制频数回归曲线。然后我们绘制100个采样的后验预测回归线。最后,我们绘制使用原始的“真实”回归线和β1=2的参数。
我们可以在下图中看到回归线的抽样范围: