在 Python 中给出不同 p 值的比例与列联卡方检验

Pet*_*lin 0 python statistics scipy statsmodels

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

\n\n

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

\n\n

第二种方法使用scipychi2_contingency

\n\n

似乎chi2_contingency总是比比例具有更高的价值。您知道其中的区别以及哪种测试更适用于简单的 A/B 测试吗?

\n\n

我很抱歉没有在此提供示例,如下所示:

\n\n

示例 1(p 值 = 0.037):

\n\n
import statsmodels.stats.proportion as proportion\nimport numpy as np\n\nconv_a = 20\nconv_b = 35\nclicks_a = 500\nclicks_b = 500\nconverted = np.array([conv_a, conv_b])\nclicks = np.array([clicks_a,clicks_b])\n\nchisq, pvalue, table = proportion.proportions_chisquare(converted, clicks)\nprint('Results are ','chisq =%.3f, pvalue = %.3f'%(chisq, pvalue))\n
Run Code Online (Sandbox Code Playgroud)\n\n

示例 2(p 值 = 0.0521):

\n\n
import numpy\nimport scipy.stats\n\ncontrol_size = 500\nA_CONVERSIONS = 20\nA_NO_CONVERSIONS= control_size - A_CONVERSIONS\ntest_size = 500\nB_CONVERSIONS = 35\nB_NO_CONVERSIONS = test_size - B_CONVERSIONS\n\ndata = numpy.array([[A_NO_CONVERSIONS, A_CONVERSIONS],\n                    [B_NO_CONVERSIONS, B_CONVERSIONS]])\n\nchi_square, p_value = scipy.stats.chi2_contingency(data)[:2]\n\nprint('\xcf\x87\xc2\xb2: %.4f' % chi_square)\nprint('p-value: %.4f' % p_value)\n
Run Code Online (Sandbox Code Playgroud)\n

Mau*_*ers 5

proportions_chisquare除了我上面的评论之外,这里有一个可重现的最小示例,显示了fromstatsmodelschi2_contingencyfrom的使用scipy。正如预期的那样,结果一致。

让我们生成一些示例数据;数据取自 Fleiss JL,《比率和比例的统计方法》,纽约:John Wiley & Sons (1981)。

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

两项测试的结果如下

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'
Run Code Online (Sandbox Code Playgroud)

至于卡方检验和 z 检验(等比例检验)之间的区别,我参考了Cross Validated 上的一篇优秀帖子