贝叶斯统计这个名字来源于托马斯·贝叶斯(Thomas Bayes, 1702-1761),一位长老会牧师和业余数学家,他首次推导出了我们现在所知的贝叶斯定理,该定理在1763年(死后)发表。然而,第一个真正发展贝叶斯方法的人是皮埃尔-西蒙·拉普拉斯(1749-1827),因此,也许用拉普拉斯统计学来描述它会更正确一些。尽管如此,我们将尊重斯蒂格勒的同名法则,也将坚持传统,并在本书的其余部分继续讨论贝叶斯方法。从贝叶斯和拉普拉斯(以及其他许多理论)的先驱时代到今天,发生了很多事情——新思想被开发出来,其中许多思想是由计算机激发或使之成为可能的。这本书的目的是为这个主题提供一个现代的视角,从基本原理来构建一个坚实的基础到现代贝叶斯工作流和工具的应用。
https://bayesiancomputationbook.com/welcome.html
我们写这本书是为了帮助贝叶斯初学者成为中级建模者。我们并不是说这在你读完这本书后就会自动发生,但我们希望这本书能引导你走向一个富有成效的方向,特别是如果你彻底阅读它,做练习,应用书中的思想到你自己的问题,并继续从别人那里学习。
特别指出,这本书的目标读者是对应用贝叶斯模型解决数据分析问题感兴趣的贝叶斯从业人员。通常学术界和工业界是有区别的。
我们的目的是在本书完成后,您不仅会熟悉贝叶斯推理,而且会对贝叶斯模型进行探索性分析,包括模型比较、诊断、评估和结果的交流。这也是我们的意图,从现代和计算的角度来教授所有这一切。对我们来说,如果我们采用计算的方法,贝叶斯统计可以更好地理解和应用,这意味着,例如,我们更关心经验检验我们的假设是如何被违反的,而不是试图证明假设是正确的。这也意味着我们使用许多可视化。建模方法的其他含义将随着页面的进展而变得清晰。
最后,正如书名中所述,我们在本书中使用Python编程语言。更具体地说,我们将主要关注PyMC3[1]和TensorFlow Probability (TFP)[2],作为模型构建和推理的主要概率编程语言(pls),并使用ArviZ作为主要的库来探索性分析贝叶斯模型[3]。在本书中,我们不打算对所有Python ppl进行详尽的调研和比较,因为有很多选择,而且它们发展得很快。我们将重点放在贝叶斯分析的实际方面。编程语言和库只是我们到达目的地的桥梁。
尽管本书选择的编程语言是Python,其中选择的库很少,但我们所涉及的统计和建模概念是语言和库无关的,在许多计算机编程语言中都可以使用,比如R、Julia和Scala等等。具有这些语言知识但不了解Python的积极读者仍然可以从这本书中受益,特别是如果他们找到了支持他们所选择语言中等效功能的合适包或代码,以获得实际实践。此外,作者还鼓励其他人将本文中的代码示例翻译成其他语言或框架。如果您愿意,请与我们联系。
第一章提供了对贝叶斯推理的基本和中心概念的复习或快速介绍。本章中的概念将在本书的其余部分重新讨论和应用。
第二章介绍了贝叶斯模型的探索性分析。也就是说,引入了贝叶斯工作流中的许多概念,但这些概念本身并不是推理。在本书的其余部分中,我们将应用和重温本章中的概念。
第三章是专门介绍了一个特定的模型体系结构。它提供了线性回归模型的介绍,并为接下来的五章建立了基本的基础。第三章还全面介绍了本书中使用的主要概率编程语言PyMC3和TensorFlow Probability。
第四章扩展了线性回归模型,并讨论了更高级的主题,如稳健回归、层次模型和模型重参数化。本章使用PyMC3和TensorFlow Probability。
第五章介绍了基函数,特别是作为线性模型扩展的样条,它允许我们构建更灵活的模型。本章使用PyMC3。
第六章重点介绍时间序列模型,从时间序列的回归建模到更复杂的模型,如ARIMA和线性高斯状态空间模型。本章使用TensorFlow Probability。
第七章介绍了贝叶斯可加回归树的非参数模型。我们讨论了这个模型的可解释性和可变重要性。本章使用PyMC3。
第八8章将关注近似贝叶斯计算(ABC)框架,它对于我们没有明确的可能性公式的问题是有用的。本章使用PyMC3。
第九章对端到端贝叶斯工作流进行了概述。它展示了商业环境中的观察性研究和研究环境中的实验性研究。本章使用PyMC3。
第十章深入探讨了概率编程语言。本章将介绍各种不同的概率编程语言。