【问题标题】:Proportion vs contingency chi-square tests giving different p-values in Python在 Python 中给出不同 p 值的比例与偶然卡方检验
【发布时间】:2020-06-03 01:53:01
【问题描述】:

我发现了对 A/B 测试进行卡方检验的不同方法,查看用户与对照组和测试组的转化率。

第一种方法使用statsmodels,使用proportions_chisquare

第二种方法使用scipychi2_contingency

似乎chi2_contingency 总是具有比比例更高的值。任何关于差异的想法以及哪种测试更适用于简单的 A/B 测试?

我很抱歉没有在下面提供一个示例:

示例 1(p 值 = 0.037):

import statsmodels.stats.proportion as proportion
import numpy as np

conv_a = 20
conv_b = 35
clicks_a = 500
clicks_b = 500
converted = np.array([conv_a, conv_b])
clicks = np.array([clicks_a,clicks_b])

chisq, pvalue, table = proportion.proportions_chisquare(converted, clicks)
print('Results are ','chisq =%.3f, pvalue = %.3f'%(chisq, pvalue))

示例 2(p 值 = 0.0521):

import numpy
import scipy.stats

control_size = 500
A_CONVERSIONS = 20
A_NO_CONVERSIONS= control_size - A_CONVERSIONS
test_size = 500
B_CONVERSIONS = 35
B_NO_CONVERSIONS = test_size - B_CONVERSIONS

data = numpy.array([[A_NO_CONVERSIONS, A_CONVERSIONS],
                    [B_NO_CONVERSIONS, B_CONVERSIONS]])

chi_square, p_value = scipy.stats.chi2_contingency(data)[:2]

print('χ²: %.4f' % chi_square)
print('p-value: %.4f' % p_value)

【问题讨论】:

  • 请包含示例数据和代码,以便我们重现差异。如果我们对您一直在使用的数据和代码一无所知,就很难解决这类问题(为什么会出现 XYZ?)。
  • 您的列联表在两种情况下都不同,因此显然卡方统计和 p 值会有所不同。请参阅下面的示例,该示例显示了结果的一致性。

标签: python scipy statistics statsmodels


【解决方案1】:

除了我上面的评论,这里是一个可重现的最小示例,显示了 statsmodels 中的 proportions_chisquarescipy 中的 chi2_contingency 的使用。正如预期的那样,结果一致。

让我们生成一些示例数据;数据取自 Fleiss JL,Statistical methods for rates and ratios,纽约:John Wiley & Sons (1981)。

import pandas as pd
data = pd.DataFrame({
    "Smokers": [83, 90, 129, 70],
    "Patients": [86, 93, 136, 82]
})

两个测试的结果如下所示

import statsmodels.stats.proportion as ssp
(chi2, p, arr) = ssp.proportions_chisquare(count = data.Smokers, nobs = data.sum(axis = 1))
"chi2 = %4.2f, p-value = %4.3f" % (chi2, p)
#'chi2 = 0.42, p-value = 0.936'


import scipy.stats as ss
(chi2, p, df, arr) = ss.chi2_contingency(data, correction = False)
"chi2 = %4.2f, p-value = %4.3f" % (chi2, p)
#'chi2 = 0.42, p-value = 0.936'

关于卡方检验和z检验(等比例检验)的区别,我参考excellent post on Cross Validated

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    相关资源
    最近更新 更多