Python+AI提示词用贝叶斯样条回归拟合BSF方法分析樱花花期数据模型构建迹图、森林图可视化

原文链接:https://tecdat.cn/?p=41308

在数据科学的领域中,我们常常会遇到需要处理复杂关系的数据。在众多的数据分析方法中,样条拟合是一种非常有效的处理数据非线性关系的手段。本专题合集围绕如何使用PyMC软件,对樱花花期数据进行样条拟合分析展开了一系列深入的探讨点击文末“阅读原文”获取完整代码、数据、文档)。

本专题合集涵盖了从数据的获取、清洗,到模型的构建、拟合,再到模型结果的分析和新数据预测等多个关键环节。数据方面,我们使用了记录每年樱花树开花天数(“一年中的天数”即doy)和年份(year)的樱花花期数据。在数据处理时,为了方便,我们剔除了缺失开花天数数据的年份(但一般来说,这并不是处理缺失数据的好方法)。

在模型构建部分,我们构建了一个基于正态分布的模型来描述樱花花期天数的变化。模型中,开花天数D被建模为均值为μ、标准差为σ的正态分布,而均值μ又是由截距a和由基函数B与模型参数w的乘积组成的线性模型。

在模型拟合完成后,我们对模型的后验抽样结果进行了详细分析,包括参数估计、模型预测等方面。最后,我们还探讨了如何使用该模型对新数据进行预测,尽管样条拟合方法在处理超出原始数据范围的数据时存在一定的局限性。

本文代码数据已分享在交流社群,阅读原文进群和500+行业人士共同交流和成长。希望本专题合集的内容能够为数据科学领域的从业者和爱好者提供有价值的参考,帮助大家更好地理解和应用样条拟合方法,解决实际数据分析中的问题。

数据准备

  1. AI提示词:使用Python语言,通过pandas库读取存储樱花花期数据的CSV文件,若文件不存在则从指定位置读取,然后对数据进行缺失值处理并查看数据基本描述信息

from pathlb iport Path
import padas as pd
trycherry\_blossom\_ata = pd.read_csv(Pth(".", "data"cm.csv"), sep=";")

经过缺失值处理后,数据集中包含了827个年份的樱花开花天数信息。从数据的可视化散点图中可以看出,虽然每年的开花天数存在很大的变化,但随着时间的推移,开花天数呈现出一定的非线性趋势。

print(cherry\_blossom\_data.head(n=10))

模型构建

  1. AI提示词:使用PyMC库构建一个基于正态分布的模型,定义模型的参数,包括截距a、参数w、标准差sigma等,并确定它们的先验分布

COORDS = {"splines": np.arange(B.shape\[1\])}
with pm.Model

在这个模型中,我们使用了15个节点将年份数据分成了16个部分,并使用patsy库创建了三次样条基矩阵B。

B = dmatrix(

下面是样条基的绘图,显示了样条每一段的“域”。每条曲线的高度表示相应的模型协变量(每个样条区域一个)对该区域模型推断的影响程度。重叠区域表示节点,显示了从一个区域到下一个区域的平滑过渡是如何形成的。

color = plt.cm.magma(np.linspace(0, 0.80, len(spline\_df.spline\_i.unique())))


点击标题查阅往期内容

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

左右滑动查看更多

01

图片

02

图片

03

图片

04

模型拟合

  1. AI提示词:使用PyMC库对构建好的模型进行抽样,获取先验预测值、后验预测值,设置抽样的相关参数如抽样次数、调优次数、链的数量等

idata = pm.sample\_prior\_predictive()

通过模型拟合,我们可以得到模型参数的后验分布,并对模型的收敛性进行检查。

print("Sampling: \[D\]")

模型分析

  1. AI提示词:使用arviz库对模型后验抽样结果idata进行分析,计算模型参数a、w、sigma的摘要信息,包括均值、标准差、有效样本大小等

从参数估计的结果来看,截距a和标准差σ的后验分布比较窄,而参数w的后验分布较宽。这可能是因为估计a和σ时使用了所有的数据点,而估计每个w值时只使用了部分数据。


  1. AI提示词:使用arviz库绘制模型参数a、w、sigma的迹图,观察参数的收敛情况和分布特征

az.plot\_trace(idata, var\_names=\["a", "w", "sigma"\]);

迹图显示模型的链已经收敛,并且没有明显的趋势,进一步表明模型已经很好地从后验分布中抽样。

另一种可视化拟合样条值的方法是绘制它们与基矩阵的乘积。节点边界再次显示为垂直线,但现在样条基与w的值相乘(表示为彩虹色曲线)。B和w的点积——线性模型中的实际计算——以黑色显示。

pd.DataFrame(B * wp.T)

模型预测

  1. AI提示词:根据模型后验抽样结果idata,计算模型预测值的均值、最高密度区间(HDI)的下限和上限,并将预测值添加到原始数据中

post\_pred = az.summary(idata, var\_names=\["mu"\]).reset_index(drop=True)

通过可视化模型预测结果,我们可以看到模型在原始数据上的拟合效果。

for knot in knot_list: 
plt.gca().axvline(knot, color="grey", alpha=0.4)

新数据预测

  1. AI提示词:使用PyMC库重新定义模型,添加Data容器,将原始数据中的年份和开花天数作为Data变量,设置模型的坐标信息,构建样条基矩阵等

year\_data = pm.Data("year", cherry\_blossom_data.year)w = pm.Normal("w", mu=0, sigma=3, dims="spline")

idata = pm.sample(nuts_sampler="nutpie",

现在我们可以替换数据并使用新数据更新设计矩阵:

cherry\_blossom\_data.sample(50,

使用set_data更新模型中的数据:

new_data={"year": year\_data\_new,

而剩下的就是从后验预测分布中进行抽样:

pm.sample\_posterior\_predictive(idata, var_names=\["mu"\])

绘制预测结果,以检查是否一切正常:

cherry\_blossom\_data.plot.scatter("year","doy",

结论

通过本专题合集的研究,我们详细地展示了如何使用PyMC软件对樱花花期数据进行样条拟合分析。从数据的获取和处理,到模型的构建、拟合、分析以及新数据预测,每个环节都进行了深入的探讨。
在数据准备阶段,我们对原始的樱花花期数据进行了清洗,剔除了缺失值,为后续的分析奠定了基础。模型构建时,基于正态分布建立了合理的模型结构,引入了样条拟合的方法来捕捉数据中的非线性关系。通过精心设置模型参数的先验分布,使得模型更加合理可靠。
在模型拟合过程中,利用PyMC强大的抽样功能,获取了模型参数的后验分布。通过对后验分布的分析,我们发现模型参数的估计结果符合预期,并且模型的收敛性良好,链已经充分混合,这表明我们的模型能够较好地拟合数据。
在模型分析方面,通过对参数估计的详细解读,我们了解了每个参数在模型中的作用和影响。同时,通过绘制各种可视化图形,如迹图、森林图等,直观地展示了模型的性能和参数的分布情况。模型预测部分,我们不仅对原始数据进行了预测,还展示了如何使用模型对新数据进行预测,尽管样条拟合方法存在不能外推到原始数据范围之外的局限性,但在已知数据范围内,模型能够给出较为准确的预测结果。
本专题合集的研究成果对于理解和应用样条拟合方法具有重要的参考价值,希望能够为相关领域的研究和实践提供有益的指导,帮助数据科学领域的从业者和爱好者更好地应用数据分析方法解决实际问题,同时也为进一步探索和改进数据分析方法提供了思路。

本文中分析的完整数据、代码、文档分享到会员群,扫描下面二维码即可加群! 


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

点击文末“阅读原文”

获取完整代码、数据、文档。

本文选自《Python+AI提示词用贝叶斯样条回归拟合BSF方法分析樱花花期数据模型构建迹图、森林图可视化》。

点击标题查阅往期内容

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

R语言Gibbs抽样的贝叶斯简单线性回归仿真分析

R语言和STAN,JAGS:用RSTAN,RJAG建立贝叶斯多元线性回归预测选举数据

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言贝叶斯线性回归和多元线性回归构建工资预测模型

R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例

R语言stan进行基于贝叶斯推断的回归模型

R语言中RStan贝叶斯层次模型分析示例

R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化

WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较

视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型

R语言RStan贝叶斯示例:重复试验模型和种群竞争模型Lotka Volterra

R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/899921.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF学习路线

WPF学习路线 学习准备学习技术栈学习路线 1-5(1-2周)6-8(3-5周) 学习准备 个人认为前端技术一般几个关键字:元素资源 控制元素资源组合或者动态交互 数据交互呈现分析关键字得到的就是几个方向 布局 样式 组装资源控件…

31天Python入门——第20天:魔法方法详解

你好,我是安然无虞。 文章目录 魔法方法1. __new__和__del__2. __repr__和__len__3. __enter__和__exit__4. 可迭代对象和迭代器5. 中括号[]数据操作6. __getattr__、__setattr__ 和 __delattr__7. 可调用的8. 运算符 魔法方法 魔法方法: Python中的魔法方法是一类…

栈 —— 数据结构基础刷题路程

一、P1739 表达式括号匹配 - 洛谷 算法代码&#xff1a; #include<bits/stdc.h> using namespace std; const int N300008; struct mystack {int a[N];int t-1;//压栈void push(int data){a[t]data; } //取栈顶元素int top(){return a[t]; } //弹出栈顶元素void pop(){i…

瑞昱RTD2556QR显示器驱动芯片

一、概述 RTD2556QR芯片是由Realtek公司精心研发的一款高性能显示驱动芯片&#xff0c;专为满足现代显示设备对高分辨率、多功能接口及稳定性能的需求而设计。该芯片凭借其卓越的技术特性和广泛的应用领域&#xff0c;在显示驱动市场中占据重要地位。它集成了多种先进的功能模…

PyQt5和OpenCV车牌识别系统

有需要请加文章底部Q哦 可远程调试 PyQt5和OpenCV车牌识别系统 一 介绍 此车牌识别系统基于PyQt5和OpenCV开发&#xff0c;蓝牌&#xff0c;新能源(绿牌)&#xff0c;黄牌&#xff0c;白牌均可以准确识别&#xff0c;支持中文识别&#xff0c;可以导出识别结果(Excel格式)。此…

学有所记- 探索FastAPI在docker上的部署

目标&#xff1a; 学习怎样在docker中安装部署FastAPI&#xff0c;完成项目结构的搭建以及hello world的运行 背景&#xff1a; 公司内服务器资源有限&#xff0c;为了共享算力资源&#xff0c;同时又能隔离运行环境&#xff0c;因此采用了docker部署的方式&#xff0c;进行各…

HTTP keepalive 详解

一、简介 HTTP协议早期版本&#xff0c;比如1.0&#xff0c;默认是不使用持久连接的&#xff0c;也就是每个请求/响应之后都会关闭TCP连接。这样的话&#xff0c;每次请求都需要重新建立连接&#xff0c;增加了延迟和资源消耗。Keep-Alive的作用是保持连接&#xff0c;让多个请…

长短期记忆神经网络(LSTM)基础学习与实例:预测序列的未来

目录 1. 前言 2. LSTM的基本原理 2.1 LSTM基本结构 2.2 LSTM的计算过程 3. LSTM实例&#xff1a;预测序列的未来 3.1 数据准备 3.2 模型构建 3.3 模型训练 3.4 模型预测 3.5 完整程序预测序列的未来 4. 总结 1. 前言 在深度学习领域&#xff0c;循环神经网络&…

基于机器学习的三国时期诸葛亮北伐失败因素量化分析

一、研究背景与方法论 1.1 历史问题的数据化挑战 三国时期&#xff08;220-280年&#xff09;的战争史存在史料分散、数据缺失的特点。本研究通过构建包含军事、经济、地理、政治四大维度的结构化数据库&#xff0c;收录建安十二年&#xff08;207年&#xff09;至建兴十二年…

蓝桥杯省模拟赛 数位和

问题描述 只能被 1 和本身整除的数称为质数。 请问在 1 &#xff08;含&#xff09;到 1000000 &#xff08;含&#xff09;中&#xff0c;有多少个质数的各个数位上的数字之和为 23 。 提示&#xff1a;599 就是这样一个质数&#xff0c;各个数位上的数字之和为 59923 。 #…

Timer的底层实现原理?

Timer 是 Java 中用于定时任务调度的基础工具类,其底层实现基于 单线程+任务队列 的模型。以下是 Timer 的底层实现原理的详细分析: 一、核心组件 TimerThread 继承自 Thread,是 Timer 的工作线程,负责从队列中提取任务并执行。通过 while (true) 循环持续检查任务队列。Ta…

Java 枚举类 Key-Value 映射的几种实现方式及最佳实践

Java 枚举类 Key-Value 映射的几种实现方式及最佳实践 前言 在 Java 开发中&#xff0c;枚举(Enum)是一种特殊的类&#xff0c;它能够定义一组固定的常量。在实际应用中&#xff0c;我们经常需要为枚举常量添加额外的属性&#xff0c;并实现 key-value 的映射关系。本文将详细…

青少年编程与数学 02-015 大学数学知识点 01课题、概要

青少年编程与数学 02-015 大学数学知识点 01课题、概要 一、线性代数二、概率论与数理统计三、微积分四、优化理论五、离散数学六、数值分析七、信息论 《青少年编程与数学》课程要求&#xff0c;在高中毕业前&#xff0c;尽量完成大部分大学数学知识的学习。一般可以通过线上课…

智能打印预约系统:微信小程序+SSM框架实战项目

微信小程序打印室预约系统&#xff0c;采用SSM&#xff08;SpringSpringMVCMyBatis&#xff09;经典框架组合。 一、系统核心功能详解 1. 智能化管理后台 ​用户数据看板​打印店资源管理​预约动态监控​服务评价系统 2. 微信小程序端 ​智能定位服务​预约时段选择​文件…

DataX 3.0 实战案例

第五章 实战案例 5.1. 案例一 5.1.1. 案例介绍 MySQL数据库中有两张表&#xff1a;用户表(users)&#xff0c;订单表(orders)。其中用户表中存储的是所有的用户的信息&#xff0c;订单表中存储的是所有的订单的信息。表结构如下&#xff1a; 用户表 users: id&#xff1a;用…

设计模式学习(1)

面向对象设计原则 单一职责 每个类只有一个职责&#xff0c;并被完整的封装在类中&#xff0c;该原则用来控制类的粒度。 例如Mapper&#xff0c;controller都只负责一个业务。 开闭原则 应该对扩展开放&#xff0c;而对修改封闭&#xff0c;例如定义接口或是抽象类作为抽…

在 Rocky Linux 9.2 上编译安装 Redis 6.2.6

文章目录 在 Rocky Linux 9.2 上编译安装 Redis 6.2.6Redis 介绍官网Redis 的核心特性高性能支持多种数据结构多种持久化机制复制与高可用2.5 事务与 Lua 脚本消息队列功能 Redis 适用场景Redis 与其他数据库对比Redis 的优势与劣势Redis 优势Redis 劣势 部署过程系统环境信息环…

量子计算与经典计算的融合与未来

最近研学过程中发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击下方超链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面进入文章正…

数据结构(4)——带哨兵位循环双向链表

目录 前言 一、带哨兵的循环双向链表是什么 二、链表的实现 2.1规定结构体 2.2创建节点 2.3初始化 2.4打印 2.5检验是否为空 2.6销毁链表 2.7尾插 2.8尾删 2.9头插 2.10头删 2.11寻找特定节点 2.12任意位置插入&#xff08;pos前&#xff09; 2.13删除任意节点 …

Github 2025-03-30 php开源项目日报 Top10

根据Github Trendings的统计,今日(2025-03-30统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10TypeScript项目1Coolify: 开源自助云平台 创建周期:1112 天开发语言:PHP, Blade协议类型:Apache License 2.0Star数量:10527 个Fo…