def get_pvalue(con_conv, test_conv,con_size, test_size,):
lift = - abs(test_conv - con_conv)
scale_one = con_conv * (1 - con_conv) * (1 / con_size)
scale_two = test_conv * (1 - test_conv) * (1 / test_size)
scale_val = (scale_one + scale_two)**0.5
p_value = 2 * stats.norm.cdf(lift, loc = 0, scale = scale_val )
return p_value我有这个函数,我想知道它实际上在做什么,它是如何计算p值的。
这是为了从A/B测试中找出控制和测试的转换率与组的转换率之间的差异。
con_conv --> Conversion rate for control group
test_conv --> Conversion rate for test group
con_size --> population size for control group
test_size --> population size for test group我知道scale_one和scale_two正在计算每个组的方差,但我不明白为什么他们要将两者相加来计算标准偏差,以及为什么要将cdf乘以2来得到p_value。
发布于 2019-04-14 02:39:53
p_value = 2 * stats.norm.cdf(lift, loc = 0, scale = scale_val )这是你问题的关键:p值是零假设为真的概率。
如果空假设是正确的:您的模型没有发现组间的任何差异。如果错误:您的模型会发现组间的差异。
假设假设检验是在正态分布的情况下比较概率,假设的假设假设是正常的,假设检验是在正态分布情况下比较概率的。
如果升力假定为“正常”,则函数stats.norm.cdf返回“升力接近于零”的概率。如果升力为零,那么各组之间没有差别,所以p值<0.01告诉我们,组相等的概率几乎为0,这意味着组是不同的。
2是由于一个叫做“双尾分布”的概念:群体之间的差异可以是A大于B或B大于A,这就是为什么你用两种方法来衡量差异的原因。
标准偏差之间的相加符合以下概念:
如果X和Y是独立的。
https://datascience.stackexchange.com/questions/49248
复制相似问题