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

在数据科学的领域中,我们常常会遇到需要处理复杂关系的数据。

由Kaizong Ye,Weilong Zhang撰写

在众多的数据分析方法中,样条拟合是一种非常有效的处理数据非线性关系的手段。

本专题合集围绕如何使用PyMC软件,对樱花花期数据进行样条拟合分析展开了一系列深入的探讨。本专题合集涵盖了从数据的获取、清洗,到模型的构建、拟合,再到模型结果的分析和新数据预测等多个关键环节。

数据方面,我们使用了记录每年樱花树开花天数(“一年中的天数”即doy)和年份(year)的樱花花期数据。在数据处理时,为了方便,我们剔除了缺失开花天数数据的年份(但一般来说,这并不是处理缺失数据的好方法)。

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

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

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


作者


可下载资源


本文分析的数据、代码、报告分享至会员群


数据准备

  1. AI提示词:使用Python语言,通过pandas库读取存储樱花花期数据的CSV文件,若文件不存在则从指定位置读取,然后对数据进行缺失值处理并查看数据基本描述信息
× 贝叶斯样条是一种将贝叶斯统计方法与样条函数相结合的技术,以下从基本概念、原理和应用等方面进行解释: 基本概念 样条函数:是一种分段定义的函数,通常由一些多项式片段组成,这些片段在节点处连接,以保证函数在整个定义域上具有一定的光滑性。样条函数可以灵活地拟合各种复杂的曲线,常用于数据插值、函数逼近等领域。 贝叶斯方法:是一种基于概率统计的推理方法,它通过先验分布和观测数据来更新后验分布,从而对未知参数进行推断。贝叶斯方法可以有效地利用先验信息和数据信息,提供对参数的不确定性估计。 原理 结合方式:贝叶斯样条将样条函数的系数视为随机变量,并为其赋予先验分布。然后,根据观测数据,利用贝叶斯定理来更新这些系数的后验分布。通过这种方式,不仅可以得到样条函数的估计,还可以得到系数的不确定性信息,从而更好地评估模型的可靠性。 先验分布选择:先验分布的选择对于贝叶斯样条模型的性能和结果有重要影响。常用的先验分布包括正态分布、伽马分布等。先验分布的参数可以根据问题的背景知识或经验来设定,也可以通过数据驱动的方法来估计。 后验推断:在得到后验分布后,可以通过各种方法进行推断,如最大后验估计(MAP)、后验均值估计等。此外,还可以通过模拟方法(如马尔可夫链蒙特卡罗方法,MCMC)来从后验分布中采样,以获得系数的样本,进而进行模型评估和预测。 应用 曲线拟合与预测:贝叶斯样条可以用于对具有复杂非线性关系的数据进行拟合和预测。例如,在时间序列分析中,它可以用于预测未来的趋势;在生物医学研究中,可用于拟合生长曲线等。 函数估计:在一些需要估计未知函数的问题中,贝叶斯样条可以提供一种灵活的估计方法。例如,在非参数回归中,它可以作为一种替代方法,优于传统的最小二乘法等方法。 不确定性量化:由于贝叶斯样条能够提供系数的不确定性信息,因此可以用于量化模型的不确定性。这在一些对结果的可靠性要求较高的领域(如金融风险评估、环境科学等)中非常重要。 优势 灵活性:贝叶斯样条结合了样条函数的灵活性和贝叶斯方法的强大推理能力,能够适应各种不同类型的数据和问题。 不确定性估计:能够自然地提供模型参数和预测结果的不确定性估计,这对于决策制定和风险评估非常有帮助。 先验信息利用:可以方便地融入先验信息,从而在数据有限的情况下,提高模型的准确性和稳定性。 局限性 计算复杂性:贝叶斯样条模型的计算通常比较复杂,特别是在处理大规模数据和高维问题时,计算成本可能会很高。 先验选择敏感性:模型的结果对先验分布的选择比较敏感,如果先验选择不当,可能会导致模型的性能下降或结果不准确。

from pathlb iport Path import padas as pd try cherry_blossom_ata = pd.read_csv(Pth(".", "data"cm.csv"), sep=";")

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


想了解更多关于模型定制、辅导的信息?


print(cherry_blossom_data.head(n=10))

视频

非线性模型原理与R语言多项式回归、局部平滑样条、 广义相加模型GAM分析

探索见解

去bilibili观看

探索更多视频


视频

贝叶斯推断线性回归与R语言预测工人工资数据

探索见解

去bilibili观看

探索更多视频

模型构建

  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())))

模型拟合

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

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

 

print("Sampling: [D]")

模型分析

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

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

az.plot_trace(idata, var_names=["a", "w", "sigma"]);

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


R语言泊松Poisson回归模型分析案例

阅读文章



\


随时关注您喜欢的主题


另一种可视化拟合样条值的方法是绘制它们与基矩阵的乘积。节点边界再次显示为垂直线,但现在样条基与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强大的抽样功能,获取了模型参数的后验分布。通过对后验分布的分析,我们发现模型参数的估计结果符合预期,并且模型的收敛性良好,链已经充分混合,这表明我们的模型能够较好地拟合数据。
在模型分析方面,通过对参数估计的详细解读,我们了解了每个参数在模型中的作用和影响。同时,通过绘制各种可视化图形,如迹图、森林图等,直观地展示了模型的性能和参数的分布情况。模型预测部分,我们不仅对原始数据进行了预测,还展示了如何使用模型对新数据进行预测,尽管样条拟合方法存在不能外推到原始数据范围之外的局限性,但在已知数据范围内,模型能够给出较为准确的预测结果。
本专题合集的研究成果对于理解和应用样条拟合方法具有重要的参考价值,希望能够为相关领域的研究和实践提供有益的指导,帮助数据科学领域的从业者和爱好者更好地应用数据分析方法解决实际问题,同时也为进一步探索和改进数据分析方法提供了思路。

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds