我仔细阅读了这本书(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测试。我得到了数据的伽马先验视图,不过如果更简单的话,我可以相信我有一个普通的先验视图。我想用我收集的数据更新相同的先验知识,以一种合理的方式,并绘制分布图和它们之间的差异。在
干杯
马特
目前没有回答
相关问题 更多 >
编程相关推荐