rviz python plugin_Python/PyMC3/ArviZ贝叶斯统计实战(下)

本文介绍了贝叶斯统计在Python中的应用,使用PyMC3和ArviZ库进行后验预测检查和分组比较。通过实例展示了后验预测检验(PPC)验证模型的有效性,并对比不同票价类别的价格差异。最后,实施了贝叶斯层次线性回归,探讨了火车类型对票价的影响。
摘要由CSDN通过智能技术生成

在上半部分中,我们了解了贝叶斯方法步骤和高斯推论,也将贝叶斯方法应用到一个实际问题中,今天我主要介绍贝叶斯在Python中实现最终的后验分布。

后预测检查

后验预测检验(PPCs)是验证模型的一种很好的方法。其思想是使用来自后验图的参数从模型中生成数据。

现在我们已经计算了后验,我们将说明如何使用模拟结果来推导预测。

下面的函数将从跟踪中随机抽取1000个参数样本。然后,对于每个样本,它将从该样本中μ和σ值指定的正态分布中提取25798个随机数。

ppc = pm.sample_posterior_predictive(trace_g, samples=1000, model=model_g)

np.asarray(ppc['y']).shape

5eff76d9bd3e1812333b1aff8579c86c.png

现在,ppc包含1000个生成的数据集(每个数据集包含25798个样本),每个数据集使用与后验不同的参数设置。

_, ax = plt.subplots(figsize=(10, 5))

ax.hist([y.mean() for y in ppc['y']], bins=19, alpha=0.5)

ax.axvline(data.price.mean())

ax.set(title='Posterior predictive of the mean', xlabel='mean(x)', ylabel='Frequency');

4b70d47357b36eebc527f2ad4fee0f50.png

推断的平均值与实际的火车票价格平均值非常接近。

分组比较

我们可能对不同票价类型下的价格比较感兴趣。我们将着重于估计效应的大小,即量化两类票价之间的差异。为了比较票价类别,我们将使用每种票价类型的平均值。因为我们是贝叶斯,所以我们将努力获得票价类别之间的均值差异的后验分布。

我们创建了三个变量:

价格变量,表示票价。

idx变量,一个用数字编码票价类别的分类虚拟变量。

最后是组变量,包含票价类别的数量(6)

price = data['price'].values

idx = pd.Categorical(data['fare'],

categories=['Flexible', 'Promo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值