Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pymc-Bayesian检验中的Gamma分布_Python_Bayesian_Ab Testing_Pymc_Gamma Distribution - Fatal编程技术网

Python Pymc-Bayesian检验中的Gamma分布

Python Pymc-Bayesian检验中的Gamma分布,python,bayesian,ab-testing,pymc,gamma-distribution,Python,Bayesian,Ab Testing,Pymc,Gamma Distribution,我密切关注这本书(),但发现自己在尝试使用Pymc解决自己的问题时遇到了问题 我从下过订单的客户那里得到了一堆订单值,它们看起来相当像伽马分布。我正在运行一个AB测试,想看看订单值的分布是如何变化的——输入Pymc。我在遵循书中的示例,但发现它对我来说并没有真正起作用-第一次尝试是: import pymc as pm import numpy as np from matplotlib import pyplot as plt from pylab import savefig ## Rep

我密切关注这本书(),但发现自己在尝试使用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)
查看Previor_a和Previor_b的轨迹平均值,我看到的值约为3.97/3.98,当我查看这些Previor的统计数据时,我看到了类似的情况。但是,在定义prior时,调用prior上的
rand()
方法会得到我期望的值(100到400之间)。基本上,其中一个更新阶段(我对观察阶段最不确定)是做一些我不期望的事情

经过一段时间的努力,我找到了这一页()并决定采用不同的方法:

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
observations_A = pm.rgamma(3.5, 0.013, size=1000)
observations_B = pm.rgamma(3.45, 0.016, size=2000)

## Initial assumptions
A_Rate = pm.Uniform('A_Rate', 2, 4)
B_Rate = pm.Uniform('B_Rate', 2, 4)
A_Shape = pm.Uniform('A_Shape', 0.005, 0.05)
B_Shape = pm.Uniform('B_Shape', 0.005, 0.05)

p_A = pm.Gamma('p_A', A_Rate, A_Shape, value=observations_A, observed=True)
p_B = pm.Gamma('p_B', A_Rate, B_Shape, value=observations_B, observed=True)

## Sample
mcmc = pm.MCMC([p_A, p_B, A_Rate, B_Rate, A_Shape, B_Shape])
mcmc.sample(20000, 1000)

## Plot the A_Rate, B_Rate, A_Shape, B_Shape
## Using those, determine the Gamma distribution
## Plot both - and draw 1000000... samples from each.
## Perform statistical tests on these.
因此,我们不是直接研究伽马分布,而是寻找参数(我认为)。这似乎起了作用,因为它给了我正确数量级的轨迹值。然而,现在我可以为测试组和测试组绘制alpha和beta样本的直方图,但这并不是我真正想要的。我希望能够绘制每个测试组的“类伽马”分布图,这些分布图是根据先前的数据和我提供的值计算得出的。我还希望能够像AB测试示例所示绘制一个“delta”。我觉得第二个例子中的确定性变量将是我的最佳选择,但我真的不知道构造这个的最佳方法

长话短说——我从伽马分布中提取了数据,我想进行AB测试。我有一个数据的伽马先验视图,不过如果更容易的话,我可以相信我有一个正常的先验视图。我想用我收集的数据以合理的方式更新相同的先验值,并绘制分布图和它们之间的差异

干杯


Matt

那么您想生成一些遵循数据分布的样本吗?我对我的数据分布有一个事先假设,我已经从每个分布中获取了数据样本,我想根据我收集的数据点更新我先前的假设。为了测试的目的,我在代码中生成了一些“示例数据点”(观测值A和观测值B),但它们是实际的数据点——我想用它们来修改我之前的假设(伽马分布),以比较每个测试组。