Python

时间:2017-11-30 10:15:21

标签: python statistics confidence-interval ab-testing

例如,在AB测试中,A群体可以有1000个数据点,其中100个是成功的。 B可以拥有2000个数据点和220个成功点。这使得A成功比例为0.1和B 0.11,其delta为0.01。如何在python中计算这个delta附近的置信区间?

Stats模型可以针对一个样本执行此操作,但似乎没有一个包来处理两个样本之间的差异,这是AB测试所必需的。 (http://www.statsmodels.org/dev/generated/statsmodels.stats.proportion.proportion_confint.html

3 个答案:

答案 0 :(得分:2)

statsmodels 包现在有 confint_proportions_2indep,它得到比较两个比例的置信区间 您可以查看文档中的详细信息 https://www.statsmodels.org/stable/generated/statsmodels.stats.proportion.confint_proportions_2indep.html

答案 1 :(得分:0)

样本量不必相等。两个比例的置信区间为enter image description here

p1和p2是观察到的概率,在它们各自的样本n1和n2上计算。

有关详情,请参阅this white paper

答案 2 :(得分:0)

我找不到具有此功能的软件包,令人惊讶的是statsmodels没有它!

但是,这种出色的资源具有功能和支持的数学功能:http://ethen8181.github.io/machine-learning/ab_tests/frequentist_ab_test.html#Comparing-Two-Proportions

下面复制并粘贴的链接中的代码:

def two_proprotions_confint(success_a, size_a, success_b, size_b, significance = 0.05):
"""
Parameters
----------
success_a, success_b : int
    Number of successes in each group

size_a, size_b : int
    Size, or number of observations in each group

significance : float, default 0.05

Returns
-------
prop_diff : float
    Difference between the two proportion

confint : 1d ndarray
    Confidence interval of the two proportion test
"""
    prop_a = success_a / size_a
    prop_b = success_b / size_b
    var = prop_a * (1 - prop_a) / size_a + prop_b * (1 - prop_b) / size_b
    se = np.sqrt(var)

    # z critical value
    confidence = 1 - significance
    z = stats.norm(loc = 0, scale = 1).ppf(confidence + significance / 2)

    # standard formula for the confidence interval
    # point-estimtate +- z * standard-error
    prop_diff = prop_b - prop_a
    confint = prop_diff + np.array([-1, 1]) * z * se
    return prop_diff, confint