去年我测量了80种水果的直径,在检查了这些值的最佳分布之后,我创建了一个PyMC3模型
with Model() as diam_model:
mu = Normal('mu',mu=57,sd=5.42)
sigma = Uniform('sigma',0,10)
之后,据我所知,我已经用我以前的数据(80个值)对模型进行了“训练”
^{pr2}$然后我使用了samples
的plot_posterior
,还返回了平均值和HPD。在
我的想法是今年再次使用贝叶斯更新来减少样本量。如何添加单个值,并更新后面的值,期望HPD越来越小?在
核密度估计更新的先验知识
使用另一个建议的重复答案,可以使用this Jupyter notebook中的代码来提取优先级的近似版本。在
第一轮
我假设我们有第一轮抽样的数据,我们可以将平均值57.0和标准差5.42加在一起。在
从后验中提取新的先验信息
然后,我们可以使用此模型的结果从the referenced notebook提取参数的KDE后验点,代码如下:
^{pr2}$第二轮
现在,如果我们有更多的数据,我们可以使用KDE更新的优先级运行一个新模型:
同样地,我们可以使用这个轨迹来提取未来几轮输入数据的最新后验估计值。在
共轭模型
上面的方法产生了真实更新的先验的近似值,并且在共轭先验不可能的情况下最有用。还应该注意的是,我不确定这种KDE基近似在多大程度上引入了错误,以及当重复使用时它们如何在模型中传播。这是一个很好的技巧,但是在没有进一步验证其健壮性的情况下,应该谨慎地将其投入生产。在
但是,在您的例子中,期望的分布是高斯分布,并且这些分布有established closed-form conjugate models。我强烈建议您完成Kevin Murphy's Conjugate Bayesian analysis of the Gaussian distribution。在
正态反γ模型
正态反伽马模型估计观测到的正态随机变量的均值和方差。平均值用正态先验建模;方差用反伽玛函数建模。此模型使用了四个参数:
考虑到您的初始模型,我们可以使用这些值
然后,您可以按如下方式绘制前一项的对数可能性:
更新参数
给定新数据
Y1
,更新参数如下:为了说明模型中的变化,让我们从稍微不同的分布中生成一些数据,然后绘制结果的后验对数似然图:
它产生了
在这里,20个观测值不足以完全移动到我提供的新位置和比例,但两个参数似乎都朝着这个方向移动。在
相关问题 更多 >
编程相关推荐