Pymc贝叶斯检验中的γ分布

2024-04-25 22:34:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我仔细阅读了这本书(http://nbviewer.ipython.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter2_MorePyMC/MorePyMC.ipynb),但是在尝试使用Pymc解决自己的问题时,我发现自己遇到了一些问题。在

我从下了订单的客户那里得到了一堆订单值,它们看起来相当像伽玛分布。我正在运行一个AB测试,想看看订单值的分布是如何变化的-输入Pymc。我按照书中的例子来做,但发现它对我来说并不管用——第一次尝试是:

import pymc as pm
import numpy as np
from matplotlib import pyplot as plt
from pylab import savefig

## Replace these with the actual order values in the test set
## Have made slightly different to be able to see differing distributions
observations_A = pm.rgamma(3.5, 0.013, size=1000)
observations_B = pm.rgamma(3.45, 0.016, size=2000)

## Identical prior assumptions
prior_a = pm.Gamma('prior_a', 3.5, 0.015)
prior_b = pm.Gamma('prior_b', 3.5, 0.015)

## The difference in the test groups is the most important bit
@pm.deterministic
def delta(p_A = prior_a, p_B = prior_b):
    return p_A - p_B

## Add observations
observation_a = pm.Gamma('observation_a', prior_a, value=observations_A, observed=True)
observation_b = pm.Gamma('observation_b', prior_b, value=observations_A, observed=True)

mcmc = pm.MCMC([prior_a, prior_b, delta, observation_a, observation_b])
mcmc.sample(20000,1000)

看看prior_a和prior_b的轨迹平均值,我看到大约3.97/3.98,当我查看这些先验数据时,我看到了类似的情况。但是,在定义prior时,调用前面的rand()方法可以得到我期望的值类型(介于100和400之间)。基本上,其中一个更新阶段(我对观察阶段最不确定)就是做一些我不期望的事情。在

经过一段时间的努力,我找到了这个页面(http://matpalm.com/blog/2012/12/27/dead_simple_pymc/),并决定采用不同的方法:

^{pr2}$

所以我们不是直接求伽马分布,而是寻找参数(我想)。这似乎是一种享受,因为它给了我正确数量级的数值。然而,现在我可以为两个测试组和beta绘制一个alpha样本的柱状图,但这并不是我真正想要的。我希望能够绘制出每个测试组的“类伽马”分布图,这些分布是根据我提供的先验值和值计算出来的。我还希望能够绘制一个“delta”,正如AB测试示例所示。我觉得第二个例子中的一个确定性变量将是我的最佳选择,但我不知道构建这个模型的最佳方法。在

长话短说-我有从伽马分布中提取的数据,我想进行AB测试。我得到了数据的伽马先验视图,不过如果更简单的话,我可以相信我有一个普通的先验视图。我想用我收集的数据更新相同的先验知识,以一种合理的方式,并绘制分布图和它们之间的差异。在

干杯

马特


Tags: the数据方法订单importabas绘制