Python用PyMC3实现贝叶斯线性回归模型

简介: Python用PyMC3实现贝叶斯线性回归模型

在本文中,我们将在贝叶斯框架中引入回归建模,并使用PyMC3 MCMC库进行推理。

 

我们将首先回顾经典或频率论者的多重线性回归方法。然后我们将讨论贝叶斯如何考虑线性回归。


用PyMC3进行贝叶斯线性回归

在本节中,我们将对统计实例进行一种历史悠久的方法,即模拟一些我们知道的属性的数据,然后拟合一个模型来恢复这些原始属性。


什么是广义线性模型?

在我们开始讨论贝叶斯线性回归之前,我想简要地概述广义线性模型(GLM)的概念,因为我们将使用它们来在PyMC3中制定我们的模型。

广义线性模型是将普通线性回归扩展到更一般形式的回归的灵活机制,包括逻辑回归(分类)和泊松回归(用于计数数据)以及线性回归本身。

GLM允许具有除正态分布以外的误差分布的响应变量(参见频率分区中的上述)。


用PyMC3模拟数据并拟合模型

在我们使用PyMC3来指定和采样贝叶斯模型之前,我们需要模拟一些噪声线性数据。



if __name__ == "__main__":
    # 参数真值
    beta_0 = 1.0  # Intercept
    beta_1 = 2.0  # Slope
 
    #模拟
    N = 100
    eps_sigma_sq = 0.5
 
    # 模拟
    df = simulate_linear_data(N, beta_0, beta_1, eps_sigma_sq)
 
    # 可视化
    sns.lmplot(x="x", y="y", data=df, size=10)
    plt.xlim(0.0, 1.0)

输出如下图所示:

 

通过Numpy,pandas和seaborn模拟噪声线性数据

现在我们已经进行了模拟,我们想要对数据拟合贝叶斯线性回归。这是glm模块进来的地方。它使用与R指定模型类似的模型规范语法。

然后我们将找到MCMC采样器的最大后验概率(MAP)估计值。最后,我们将使用No-U-Turn Sampler(NUTS)来进行实际推理,然后绘制模型的曲线,将前500个样本丢弃为“burn in”

traceplot如下图所示:

 

使用PyMC3将贝叶斯GLM线性回归模型拟合到模拟数据

我们可以使用glm库调用的方法绘制这些线plot_posterior_predictive。该方法采用trace对象和plot(samples)的行数。

首先我们使用seaborn lmplot方法,这次fit_reg参数设置False为停止绘制频数回归曲线。然后我们绘制100个采样的后验预测回归线。最后,我们绘制使用原始的“真实”回归线和β1=2的参数。下面的代码片段产生了这样的情节:β0=1β0=1β1=2β1=2

我们可以在下图中看到回归线的抽样范围:

 

 

有问题欢迎联系我们!

相关文章
|
14天前
|
机器学习/深度学习 人工智能 PyTorch
200行python代码实现从Bigram模型到LLM
本文从零基础出发,逐步实现了一个类似GPT的Transformer模型。首先通过Bigram模型生成诗词,接着加入Positional Encoding实现位置信息编码,再引入Single Head Self-Attention机制计算token间的关系,并扩展到Multi-Head Self-Attention以增强表现力。随后添加FeedForward、Block结构、残差连接(Residual Connection)、投影(Projection)、层归一化(Layer Normalization)及Dropout等组件,最终调整超参数完成一个6层、6头、384维度的“0.0155B”模型
200行python代码实现从Bigram模型到LLM
|
29天前
|
机器学习/深度学习 人工智能 算法
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
本文介绍了如何使用 Python 和 YOLO v8 开发专属的 AI 视觉目标检测模型。首先讲解了 YOLO 的基本概念及其高效精准的特点,接着详细说明了环境搭建步骤,包括安装 Python、PyCharm 和 Ultralytics 库。随后引导读者加载预训练模型进行图片验证,并准备数据集以训练自定义模型。最后,展示了如何验证训练好的模型并提供示例代码。通过本文,你将学会从零开始打造自己的目标检测系统,满足实际场景需求。
303 0
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
|
5月前
|
数据采集 数据可视化 数据挖掘
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
本文探讨了金融资产波动率建模中的三种主流方法:GARCH、GJR-GARCH和HAR模型,基于SPY的实际交易数据进行实证分析。GARCH模型捕捉波动率聚类特征,GJR-GARCH引入杠杆效应,HAR整合多时间尺度波动率信息。通过Python实现模型估计与性能比较,展示了各模型在风险管理、衍生品定价等领域的应用优势。
672 66
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
|
6月前
|
机器学习/深度学习 数据可视化 TensorFlow
使用Python实现深度学习模型的分布式训练
使用Python实现深度学习模型的分布式训练
298 73
|
6月前
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品消费需求分析的深度学习模型
使用Python实现智能食品消费需求分析的深度学习模型
179 21
|
Python
【Python数据科学手册】专题:线性回归
线性回归模型是解决回归任务的好起点。 你可能对线性回归模型最简单的形式(即对数据拟合一条直线)已经很熟悉了,不过经过扩展,这些模型可以对更复杂的数据行为进行建模。
999 0
|
机器学习/深度学习 Python
Python 数据科学手册 5.6 线性回归
5.6 线性回归 原文:In Depth: Linear Regression 译者:飞龙 协议:CC BY-NC-SA 4.0 译文没有得到原作者授权,不保证与原文的意思严格一致。
1061 0
|
3月前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。
|
1月前
|
数据采集 安全 BI
用Python编程基础提升工作效率
一、文件处理整明白了,少加两小时班 (敲暖气管子)领导让整理100个Excel表?手都干抽筋儿了?Python就跟铲雪车似的,哗哗给你整利索!
73 11
|
3月前
|
人工智能 Java 数据安全/隐私保护
[oeasy]python081_ai编程最佳实践_ai辅助编程_提出要求_解决问题
本文介绍了如何利用AI辅助编程解决实际问题,以猫屎咖啡的购买为例,逐步实现将购买斤数换算成人民币金额的功能。文章强调了与AI协作时的三个要点:1) 去除无关信息,聚焦目标;2) 将复杂任务拆解为小步骤,逐步完成;3) 巩固已有成果后再推进。最终代码实现了输入验证、单位转换和价格计算,并保留两位小数。总结指出,在AI时代,人类负责明确目标、拆分任务和确认结果,AI则负责生成代码、解释含义和提供优化建议,编程不会被取代,而是会更广泛地融入各领域。
121 28

推荐镜像

更多