首页
学习
活动
专区
圈层
工具
发布

P值-解释
EN

Data Science用户
提问于 2019-04-14 02:01:51
回答 1查看 267关注 0票数 0
代码语言:javascript
复制
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测试中找出控制和测试的转换率与组的转换率之间的差异。

代码语言:javascript
复制
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_onescale_two正在计算每个组的方差,但我不明白为什么他们要将两者相加来计算标准偏差,以及为什么要将cdf乘以2来得到p_value

EN

回答 1

Data Science用户

回答已采纳

发布于 2019-04-14 02:39:53

代码语言:javascript
复制
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,这就是为什么你用两种方法来衡量差异的原因。

标准偏差之间的相加符合以下概念:

Var(X+Y) = Var(X) + Var(Y)

如果XY是独立的。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/49248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档