PyINLA: Fast Bayesian Inference for Latent Gaussian Models in Python
PyINLA: Python中潜在高斯模型的快速贝叶斯推理
https://arxiv.org/pdf/2603.27276
![]()
摘要
贝叶斯推断通常依赖于马尔可夫链蒙特卡洛(MCMC)方法,对于非高斯数据族尤其需要如此。在处理复杂分层模型时,MCMC方法在需要重复拟合模型的工作流程中,或者在硬件资源有限的情况下处理高维模型时,可能对计算能力要求很高。集成嵌套拉普拉斯近似(INLA)是一种确定性的替代方法,适用于属于潜高斯模型(LGM)类别的非高斯数据模型,在许多应用场景中能够对后验边缘分布产生精确的近似。INLA方法作为独立程序用C语言实现,名为inla,通过INLA包在R中广泛使用。本文介绍PyINLA,这是一个专用的Python包,它提供了直接与inla程序交互的Python风格接口。因此,PyINLA使得用户能够在Python中指定LGM、运行基于INLA的推断,并访问后验汇总结果,同时利用成熟的INLA实现。我们描述了该包的设计,并在代表性模型上展示了其用法,包括广义线性混合模型、时间序列预测、疾病制图和地统计预测,展示了如何使用INLA在Python中以与常见科学计算工作流程自然集成的方式进行确定性贝叶斯推断。
关键词:贝叶斯推断,INLA,潜高斯模型,Python,分层模型,空间统计
1 引言
贝叶斯分层模型在应用统计推断中被广泛使用,提供了一个统一的框架,用于纳入先验信息和量化不确定性。在许多应用领域,包括空间流行病学 [Lawson, 2018]、环境与生态建模 [Cressie and Wikle, 2011] 以及计量经济学 [Koop, 2003] 中,贝叶斯建模的实用价值依赖于快速、可靠且易于集成到端到端分析流程中的计算工具。
在当代软件生态系统中,通用贝叶斯推断最常使用马尔可夫链蒙特卡洛(MCMC)或变分推断(VI)进行。这些方法是成熟概率编程框架的基础,但它们带有众所周知的权衡:MCMC 对于具有高维潜在结构的模型计算量很大,并且需要仔细的收敛性评估,而均值场 VI 会引入近似偏差,且倾向于低估后验不确定性 [Brooks et al., 2011, Blei et al., 2017]。在实践中,对于具有大潜在场的分层模型、涉及重复模型拟合(敏感性分析、模型选择、交叉验证)的迭代工作流程,以及需要确定性、可重复输出的生产环境,这些权衡变得尤为突出。
集成嵌套拉普拉斯近似(INLA)为一类重要且实际应用广泛的模型——潜高斯模型(LGM)[Rue et al., 2009]——提供了一种确定性替代方法。拉普拉斯近似两次利用了潜场先验分布中的条件结构:一次是在搜索超参数的后验众数时,然后是通过超参数上的数值积分结合多个嵌套拉普拉斯近似。INLA 算法中的这些嵌套拉普拉斯近似可以替换为隐式低秩校正,如 Niekerk 和 Rue [2024] 所提出的,该方法被证明比原始 INLA 更快且同样准确 [Van Niekerk et al., 2023]。当潜在精度矩阵是稀疏的时(例如高斯马尔可夫随机场 [Rue and Held, 2005] 和一大类结构化随机效应),即使潜在维度很大,INLA 也能有效地计算后验边缘分布的精确近似。这些特性使 INLA 成为应用统计学中时空分层模型的竞争性方法 [Blangiardo et al., 2013, Martins et al., 2013, Heaton et al., 2019]。
INLA 的参考实现是 R-INLA 项目 (https://www.r-inla.org),它已发展成为 R 生态系统中一个全面且被广泛使用的框架 [Lindgren and Rue, 2015, Bivand et al., 2015, Van Niekerk et al., 2021]。几个 R 包将其范围扩展到更广泛的空间模型、不可分离的时空结构、非线性预测器以及联合纵向-生存模型 [Bolin and Simas, 2023, Krainski et al., 2025, Bachl et al., 2019, Lindgren et al., 2024, Rustand et al., 2024],其应用涵盖生物统计、地球科学、流行病学和环境建模 [Alvares et al., 2024, Fioravanti et al., 2023, Myer and Johnston, 2019, Seaton et al., 2024]。
对于 Python 从业者(Python 现在是数据科学和机器学习领域的主导语言)来说,需要对具有空间、时间或分组结构的分层模型进行快速贝叶斯推断,但他们在很大程度上仅限于基于 MCMC 的工具,如 PyMC 或 Stan,这些工具对于具有大潜在场的模型计算量很大,并且需要仔细的收敛性评估。INLA 为这些模型提供了一种确定性替代方法,但直到现在都缺乏原生的 Python 接口。PyINLA 填补了这一空白:它是一个独立的 Python 包,不需要安装 R,将独立的 inlaC 程序中的基于 INLA 的推断直接带入基于 pandas、NumPy 和 SciPy 构建的标准 Python 工作流程中。
本文介绍 PyINLA,这是一个原生的 Python 包,将基于 INLA 的推断直接带入 Python 生态系统。PyINLA 通过 Python 风格的 API 暴露了编译后的 INLA 计算引擎,使用户能够使用标准 Python 数据结构(pandas DataFrame、NumPy 数组、SciPy 稀疏矩阵)来指定 LGM、运行推断并访问完整的后验汇总结果。该包消除了对 R 安装或跨语言互操作层的需求,使得在 Python 中构建其分析和部署流程的庞大且不断增长的从业者社区能够使用 INLA。
本文的主要贡献如下:
原生 Python 接口:PyINLA 提供了一个简洁的 API,用于使用标准 Python 数据结构指定 LGM,结果以 pandas DataFrame 和 NumPy 数组的形式返回,可直接用于下游分析。无需 R 安装或互操作层;编译后的
inla引擎由包透明地管理。广泛的 LGM 覆盖:该包目前支持广泛使用的 INLA 似然族和潜在模型结构,包括组级随机效应、时间过程(随机游走、AR 过程)和空间模型(BYM、SPDE),并通过惩罚复杂度先验 [Simpson et al., 2017] 使用原则性的先验规范。
确定性、可重复的推断:PyINLA 返回后验边缘分布的确定性近似;因此没有蒙特卡洛变异性,不需要收敛性诊断,也不需要随机种子。
无缝的生态集成:结果以结构化的 Python 对象返回,可直接接入 pandas、matplotlib、scikit-learn 和其他标准工具,用于下游分析、可视化和部署。
通过专注于核心 LGM 功能,包括支持最流行的似然族和潜在模型,实现了广泛的 LGM 覆盖。额外的模型组件计划在未来的版本中提供。当前核心数值方法的最新水平得到了支持。
本文的其余部分组织如下:第 2 节回顾了 Python 中的贝叶斯计算,并将 PyINLA 与常用的替代方案进行定位。第 3 节总结了潜高斯模型框架和 INLA 近似策略,这足以理解包的范围和输出。第 4 节描述了 PyINLA 的设计、实现和使用。第 5 节提供了代表性示例,第 6 节讨论了局限性和未来方向。
2 背景:贝叶斯计算及相关软件
应用贝叶斯工作流程涉及迭代的模型开发、跨相关数据集的重复拟合以及常规的模型检验。在这些情况下,推断方法的选择不仅取决于统计目标,还取决于运行时间、诊断负担以及集成到数据处理和部署流程中的难易程度。
在 Python 环境中,通用贝叶斯推断通常使用 MCMC 或 VI 进行,在 PyMC、Stan(通过 CmdStanPy)、TensorFlow Probability 和 Pyro 等框架中实现 [Salvatier et al., 2016, Carpenter et al., 2017, Dillon et al., 2017, Bingham et al., 2019]。现代 MCMC 方法(如哈密顿蒙特卡洛和无 U 型转折采样器 [Hoffman et al., 2014])提供了渐近精确的推断,但对于具有大潜在结构的分层模型而言计算成本高昂,并且需要大量精力进行调整和收敛性评估。变分方法用优化替代采样,减少了运行时间,但会引入偏差,并在后验依赖性较强时低估后验不确定性 [Rue et al., 2009, Zhang et al., 2019]。这些权衡促使人们为适用此类方法的模型类别寻求确定性替代方案。
INLA 通过用解析近似替代采样,为潜高斯模型提供了一种确定性替代方法,如第 1 节所述,并将在第 3 节中详细说明 [Rue et al., 2009, 2017]。实证比较一致表明,INLA 能够达到与 MCMC 相当的精度,同时在各种应用(包括疾病制图、临床试验和金融建模)中快一到两个数量级 [De Smedt et al., 2015, Chen et al., 2024, Darkwah, 2022, Nacinben and Laurini, 2024]。PyINLA 为编译后的 INLA 引擎提供了一个 Python 原生的接口,使得在 Python 工作流程中可以直接对 LGM 进行确定性贝叶斯推断。
2.1 PyINLA 相对于现有 Python 工具的定位
表1 将 PyINLA 与 Python 中广泛使用的通用贝叶斯工具进行了对比。
![]()
PyMC 提供了一个灵活的概率编程接口,支持基于 NUTS 的 MCMC 和 VI。Stan 提供了一种领域特定语言,具有最先进的 HMC/NUTS 实现。TensorFlow Probability 将概率建模与 TensorFlow 生态集成,支持将贝叶斯推断与深度学习相结合的工作流程。这些工具提供了广泛的建模灵活性,但这种通用性是有代价的:用户必须管理采样效率、评估收敛性,并为具有复杂分层结构的模型承担显著的计算时间。
PyINLA 采取了一种根本不同的方法。通过将注意力限制在 LGM 上,它利用嵌套拉普拉斯近似结合稀疏矩阵的数值方法,无需任何采样即可计算后验边缘分布。对于其范围内的广泛模型类别,这种设计带来了切实的实际优势:
结构化潜在场的效率:通过利用精度矩阵的稀疏性,可以高效地拟合具有高维潜在分量(例如空间和时空效应)的模型。
内置的结构化组件:常见的时间和空间分量(例如随机游走、自回归过程、CAR/BYM 型模型、基于 SPDE 的场)均可使用,并配有原则性的默认先验。
其权衡在于范围:PyINLA 仅限于潜高斯模型类别。具有非高斯潜在结构或 INLA 不支持的似然函数的模型,则需要通用工具。需要从完整联合后验中直接采样的应用也可能更倾向于 MCMC,尽管 PyINLA 为派生量的推断提供了后验采样功能。
3 INLA 方法学
本节总结了潜高斯模型框架和 INLA 近似策略,其详细程度足以理解 PyINLA 能够表示什么以及它返回什么。详细的方法论处理可参见 [Rue et al. (2009)]、[Abdul Fattah (2023)]、[Niekerk and Rue (2024)]。
![]()
![]()
![]()
3.1 潜高斯模型
![]()
![]()
![]()
![]()
图 1展示了一个 LGM 的分层结构。
![]()
在 PyINLA 中,每个族都带有一个默认的链接函数,否则可以显式设置。固定效应通过 fixed指定,随机效应通过 random指定(参见第 4 节)。
3.2 推断目标与输出
INLA 的目标是潜场中每个元素以及超参数的后验边缘分布:
![]()
这些边缘分布是非高斯的,拉普拉斯方法利用 x x的高斯先验来准确且高效地近似它们。一旦获得,后验汇总统计量(如均值、标准差和可信区间)将直接从这些边缘分布计算得出,并以 pandas DataFrame 的形式返回(参见第 4 节)。INLA 关注于边缘分布,而不是显式地表示完整的联合后验分布;这种设计是其计算效率的关键因素。当需要完整的联合后验分布时,可以在模型拟合后高效地抽取蒙特卡洛样本 [Chiuchiolo et al., 2021],如第 4 节所述。
3.3 嵌套拉普拉斯近似与数值积分
INLA 通过结合(i)针对高维高斯潜在结构的拉普拉斯近似与(ii)超参数空间上的数值积分来进行 [Rue et al., 2009, 2017]。在较高层次上:
![]()
3.4 计算考量与局限性
INLA 的第一步是一个优化过程,用于定位超参数的后验众数,并使用自适应梯度估计技术 [Abdul Fattah et al., 2022]。inla程序通过 Cholesky 分解和选择性求逆来利用潜在精度矩阵的稀疏性 [Rue and Held, 2005]。当精度矩阵稀疏时,这些操作很快,但如果精度矩阵稠密,它们就会成为瓶颈。先前的工作探索了特定情况的解决方案,包括稠密矩阵 [Abdul Fattah et al., 2025c] 和大规模时空模型 [Gaedke-Merzhäuser et al., 2024]。sTiles库 [Abdul Fattah et al., 2025b,a] 正在开发中,旨在为稀疏结构化矩阵提供高效分解,并计划在未来的版本中加入 GPU 加速。inla的源代码可在 https://github.com/hrue/r-inla 获取。
4 接口描述
本节描述了 PyINLA 的设计、架构和使用方法。PyINLA 是编译后的 inla程序的 Python 原生接口,使得模型指定、执行和结果处理能够完全在标准 Python 工作流程中进行。
4.1 安装与可用性
![]()
[fmesher]附加组件提供了围绕 fmesher库 [Lindgren, 2023] 的 Python 包装器,用于网格生成和 SPDE 预处理。我们建议在隔离环境(例如 conda)中安装。
PyINLA 是一个标准的 Python 包,没有 R 依赖。核心计算由 inla程序完成,这是一个编译后的 C 二进制文件,实现了核心数值例程、稀疏矩阵分解、拉普拉斯近似以及超参数上的数值积分。这正是为 R-INLA 提供了超过 15 年支持并已在数千篇已发表的分析中得到验证的同一计算引擎。PyINLA 透明地管理此二进制文件:如果首次使用时本地不存在,它会自动下载,因此无需手动配置。该包可以直接在云端笔记本环境(如 Google Colab)中运行,使其适用于教学、可重复的演示以及无需本地安装的协作研究。
完整文档、教程和交互式示例可在 https://pyinla.org 获取。为了支持可重复研究,该代码仓库包含了本文中所有报告的复制材料。本文描述的是 PyINLA 0.2.0 版本。
4.2 包架构
PyINLA 组织为五个层次:
用户面向 API:一个以
pyinla()函数为中心的高级接口,该函数接受模型规范、数据和控制选项,并返回一个结构化的结果对象。模型规范层:将 Python 级别的模型定义转换为 INLA 引擎所需的内部表示,包括验证和默认值设置。
数据准备层:将常见的 Python 对象(pandasDataFrame、NumPy数组和 SciPy稀疏矩阵)转换为引擎所消耗的格式。
执行层:编排 INLA 的运行,包括管理工作目录、生成配置、调用编译后的引擎以及错误报告。
结果收集层:解析引擎输出并构建 Python 结果对象,以暴露后验边缘分布、汇总统计量和诊断信息。
4.3 基本用法
一个拟合高斯线性模型的最小示例说明了主要的工作流程。下面的代码生成合成数据,指定模型,使用 pyinla()进行拟合,并打印固定效应的后验汇总结果。
![]()
每一行报告了一个固定效应的后验均值、标准差、分位数和众数。kld列对于非高斯似然很有用,它表示每个边缘分布的高斯近似与简化拉普拉斯近似之间的 Kullback-Leibler 散度;值接近零表明高斯近似是足够的。在本例中,由于当 family为高斯分布时不需要进行高斯近似,因此该值为零。
![]()
4.4 模型规范
PyINLA 中的统计模型被指定为一个 Python 字典。为了说明这种表示形式,我们将从一个简单示例逐步构建到一般情况,并在每一步展示字典如何映射到底层的数学模型。
![]()
4.4.1 从方程到字典:逐步构建
步骤 1:线性模型。考虑最简单的情况:一个具有一个协变量的高斯线性模型。
![]()
![]()
![]()
链接函数由 PyINLA 内部处理:用户在线性预测器尺度上指定模型。拟合值的后验汇总在线性预测器尺度上报告;要获得响应尺度(例如期望计数或概率)上的结果,可以使用 pyinla.tmarginal()应用逆链接,如第 4.5.2 节所示。
步骤 3:添加随机效应。假设我们用一个组水平的随机截距来扩展泊松模型:
![]()
![]()
![]()
4.4.2 固定效应
固定效应被指定为数据 DataFrame 中的一列列名列表。截距通过指定 "1"来包含;从列表中省略它则排除截距:
![]()
4.4.3 似然族
PyINLA 支持连续响应("gaussian"、"gamma"、"beta")、离散响应("poisson"、"binomial"、"nbinomial")以及生存数据("weibullsurv"、"exponentialsurv")的族。默认的链接函数已在表 2 中列出。
常见的附加参数包括:
![]()
4.4.4 随机效应(潜在分量)
随机效应在 "random"键下指定,作为一个分量字典的列表。每个分量需要:
"id":数据中的一列,其值用于索引随机效应的水平。"model":施加在该效应上的先验依赖结构类型。
表3总结了可用的潜在模型类型及其数学定义。
![]()
![]()
4.4.5 先验规范
每个潜在分量都有超参数(例如 IID 效应的精度 τ τ,或 AR1 过程的相关性 ρ ρ),这些超参数需要先验分布。它们通过在随机效应字典中使用 "hyper"键来指定。
PyINLA 支持惩罚复杂度(PC)先验 [Simpson et al., 2017],这些先验通过可解释的概率语句来指定。例如,语句
![]()
![]()
![]()
4.5 结果对象
pyinla()函数返回一个 PyINLAresult对象,该对象以 Python 原生格式暴露后验汇总统计量、边缘密度和模型评估量。
4.5.1 后验汇总
固定效应、潜在分量、超参数和拟合值的汇总统计量以 pandas DataFrame 的形式返回:
![]()
![]()
4.6 控制选项
control参数是一个可选的字典,用于调整计算和先验设置,使其不同于默认值。它按命名的分组组织,每个分组控制拟合的不同方面。最常用的分组有:
"compute":用于切换附加输出的开关。"dic"、"waic"和"cpo"启用相应的模型比较准则;"config"存储posterior_sample()所需的内部配置;"return_marginals"请求拟合值的完整边缘密度。"fixed":固定效应的默认先验精度。"prec"设置回归系数上的零均值高斯先验的精度(方差的倒数),而"prec.intercept"则为截距单独设置。较低的值给出更宽泛、信息量更少的先验。
所有键都是可选的;未指定的设置保留其默认值。
4.7 模型诊断
当通过 control请求时,PyINLA 会计算 INLA 工作流程中常用的诊断指标,包括 DIC、WAIC、CPO 以及对数边际似然的近似值:
![]()
4.8 后验采样
尽管 INLA 主要关注边缘后验分布,但后验采样对于依赖于多个分量的派生量是有用的。PyINLA 提供了三个采样函数:
posterior_sample(n, result, seed):从潜场和超参数的近似后验中抽取 n n个联合样本。config标志必须在control中启用(参见第 4.6 节)。posterior_sample_eval(fun, samples):提取或转换样本。当fun是字符串(例如"x")时,它返回指定固定效应的样本;当fun是可调用对象时,它会被应用于每个样本以计算派生量。hyperpar_sample(n, result):仅从超参数的近似边缘后验中抽取 n n个样本。
![]()
4.9 稳健执行
PyINLA 包含针对数值困难时的自动回退策略。如果默认设置遇到问题(例如优化中的不稳定性或不收敛),该包会使用更保守的设置进行重试,例如替代的近似模式、修改的积分策略,或是针对病态系统的稳定化选项。此行为由 safe参数控制(默认值:True)。
4.10 支持的功能与持续开发
PyINLA 支持常用的似然族、潜在分量(可交换的、时间的、空间的和通用的)、后验汇总与边缘分布、关键诊断指标以及后验采样。随着更多组件经过测试和稳定,覆盖范围将持续扩大。该包使用与第 3 节所述相同的编译后的 inla引擎,确保底层计算的数值精度。
有关支持功能的完整文档可在包网站上获取。
5 示例
本节通过四个结构复杂性递增的应用来展示 PyINLA。第一个应用将带有可交换随机效应的分层泊松模型应用于足球比赛预测,展示了核心的广义线性混合模型工作流程。第二个应用使用尺度化的 BYM 模型 [Riebler et al., 2016] 对苏格兰唇癌数据集进行区域疾病制图,引入了格点上的空间结构化随机效应。第三个应用使用 SPDE 方法 [Lindgren et al., 2011] 对具有连续空间坐标的地统计温度数据进行建模。第四个应用展示了带有不确定性量化的时间序列预测,并将 PyINLA 与基于神经网络的 NeuralProphet 工具 [Triebe et al., 2021] 进行了比较。
这些示例共同涵盖了从标准 GLMM、格点和地统计空间模型到结构化时间模型的渐进过程。更多示例请访问 https://pyinla.org。
5.1 体育分析:足球比赛预测
本示例展示了一个带有交叉随机效应的泊松广义线性混合模型(GLMM),用于预测足球比赛结果。我们将 PyINLA 与使用无 U 型转折采样器(NUTS)的 PyMC [Salvatier et al., 2016] 进行比较,以验证后验推断的准确性并量化计算加速比。
5.1.1 数据
数据集包含 2018–2019 赛季英格兰足球超级联赛中 20 支球队已进行的 313 场比赛(共 380 场)。每场比赛被重构为两个观测值(每队一个),生成 2 × 313 = 626 行的长格式数据:
![]()
![]()
![]()
5.1.3 与 MCMC 的比较
为了验证 PyINLA 的准确性,我们使用 PyMC 和 NUTS(4 条链,每条链在 5,000 次调整迭代后抽取 25,000 个样本)拟合了相同的模型:
表 5报告了模型拟合的挂钟时间。¹ PyINLA 在 0.24 秒内完成推断,而 MCMC 需要 21.74 秒(4 条链 × 25,000 个样本,顺序运行),CPU 时间加速约 92 倍。固定效应估计值一致到小数点后三位,而超参数估计值差异最多为 0.21,完全在后验不确定性范围内。所有 40 个随机效应(20 个进攻 + 20 个防守)的皮尔逊相关系数为 r = 1.0000 。
图 3将主场优势参数和选定的球队效应的 PyINLA 边缘密度与 MCMC 直方图叠加,显示出两种方法之间极好的一致性。
![]()
5.1.4 预测模拟
使用 posterior_sample()抽取 1,000 个联合后验样本,我们模拟了 67 场未进行比赛的全赛季结果。图 4比较了 PyINLA 和 MCMC 对前四名资格概率和预期最终积分的预测分布。
![]()
5.2 时间序列预测:网络流量预测
本示例展示了带有不确定性量化的时间序列预测,将 PyINLA 与 NeuralProphet [Triebe et al., 2021](一个广泛使用的基于神经网络的预测工具)进行比较。我们使用 Peyton Manning 维基百科页面浏览量数据集(2007-2016),这是预测文献中的一个标准基准,包含 2964 个对数变换后页面浏览量的每日观测值。
5.2.1 模型规范
令 y t 表示时间 t t的对数页面浏览量。我们将时间序列分解为:
![]()
![]()
5.2.3 结果
表 6 报告了 365 天测试期内的预测精度。NeuralProphet 在默认和调优后的超参数下运行,并报告了最佳配置(默认设置)的结果。此比较是说明性的,而非正式的基准测试:NeuralProphet 是一个点预测工具(不确定性区间需要额外配置),因此主要目的是证明 PyINLA 的结构化加性模型能够产生具有竞争力的点预测,同时作为贝叶斯推断的自然副产品,额外提供经过校准的不确定性量化。
![]()
图 5显示了预测比较。PyINLA 提供了经过校准的 95% 可信区间,在预测期内适当变宽,而 NeuralProphet 默认仅提供点预测。
![]()
PyINLA 的一个关键优势是带有不确定性的可解释分量分解。图 6显示了每个分量的后验均值和 95% 可信区间:平滑趋势捕捉了长期的热度变化,周效应揭示了工作日/周末模式,年效应显示了 NFL 赛季动态(9 月至 2 月期间出现峰值)。
局限性。此比较使用单个数据集和单次训练/测试划分。结果是说明性的而非决定性的;在其他数据集上或通过超参数调优,性能可能有所不同。全面的比较将需要多个数据集和交叉验证。
![]()
复制材料。完整的复制脚本作为补充材料提供(timeseries.py)。
5.3 疾病制图:苏格兰唇癌
本示例使用带有尺度化精度矩阵(scale.model=True)的经典 BYM 模型 [?] 对苏格兰唇癌数据集 [Clayton and Kaldor, 1987] 进行区域疾病制图。尺度化确保了 ICAR 和 IID 分量的精度超参数具有可比性 [?]。我们将 PyINLA 与使用 NUTS 的 PyMC 进行比较,以验证空间结构化随机效应模型上的后验推断。
注意,PyINLA 也通过 "model": "bym2"提供了 BYM2 重参数化 [Riebler et al., 2016],该版本使用单个总标准差和一个混合参数,建议用于新的分析;这里我们使用经典形式来说明单独的超参数估计。
5.3.1 模型规范
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
5.4 地统计建模:区域温度插值
本示例使用 SPDE(随机偏微分方程)方法 [Lindgren et al., 2011] 展示了连续空间预测,应用于黎巴嫩、叙利亚、约旦和沙特阿拉伯 55 个气象站的 2024 年 1 月温度数据。数据来自全球历史气候学网络 [Menne et al., 2012]。
5.4.1 模型规范
![]()
![]()
![]()
![]()
5.4.2 实现
我们加载温度数据,并将坐标投影到 UTM 40 区(单位为公里):
![]()
![]()
![]()
5.4.3 空间预测
我们在一个规则分布的 10 公里网格(230 × 280 个点)上生成预测,并纳入来自 ETOPO 2022 数字高程数据 [NOAA National Centers for Environmental Information, 2022] 的海拔信息:
![]()
图 9显示了预测的温度表面及其相关的不确定性。预测不确定性在观测位置附近最低,在数据稀疏区域(特别是在沙特阿拉伯内陆,最近的观测站也在数百公里之外)则增加。
![]()
复制材料。完整的复制脚本,包括从 GHCN 获取数据及所有中间处理步骤,作为补充材料提供(spde.py)。
![]()
6 讨论与结论
本文介绍了 PyINLA,这是一个原生的 Python 包,将基于 INLA 的贝叶斯推断带入了 Python 生态系统。通过 Python 风格的 API 提供对编译后的 INLA 计算引擎的直接访问,PyINLA 消除了跨语言工作流程的摩擦,同时保留了使 INLA 成为潜高斯模型标准工具的计算效率和统计精度。
第 5 节中的示例展示了 PyINLA 在一系列模型结构上的应用,从用于体育预测的可交换随机效应,到用于疾病制图的空间结构化效应,用于地统计插值的连续空间场,以及用于时间序列预测的时间分量。在这些应用中,后验估计与 MCMC 基准非常接近,同时实现了 100–200 倍的计算加速,其确定性输出简化了测试和部署。
需要承认几个局限性。PyINLA 仅限于潜高斯模型;需要非高斯潜在结构或 INLA 支持族之外的似然函数的应用则需要通用工具。需要直接访问完整联合后验的应用也可能受益于 MCMC 方法,尽管 PyINLA 为派生量提供了后验采样。
开发工作沿着多个方向继续进行,包括扩展模型支持、通过 sTiles 库 [Abdul Fattah et al., 2025b,a] 实现 GPU 加速、与 Python 机器学习工作流程的更深层次集成,以及在 https://pyinla.org 上扩展文档。未来的版本还将允许用户定义自定义的潜在模型和似然函数,将 PyINLA 扩展到内置组件之外。
PyINLA 使基于 INLA 的贝叶斯推断成为 Python 科学计算生态系统的一个原生部分。通过为潜高斯模型提供快速、确定性推断的直接访问,PyINLA 为与现代机器学习和 AI 工作流程的更紧密集成打开了大门,在这些工作流程中,原则性的不确定性量化越来越受到重视。我们预计,原生的 Python 可用性将把 INLA 方法论的范围扩展到新的应用领域和更大规模的问题。
原文链接:https://arxiv.org/pdf/2603.27276
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.