You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

binom_test与正态分布假设检验结果差异问题排查请求

两组成功率显著性差异检验的结果矛盾排查

问题背景

我有两组试验次数和成功次数均不同的样本,需要对比两组成功率的显著性差异。使用scipy.stats.binom_test和参考编写的正态分布假设检验函数fnDiffProp时,结果差异极大:binom_test的p值趋近于0,而fnDiffProp得出的p值为1.82(不符合逻辑,p值范围应为0-1)。我怀疑binom_test使用有误或fnDiffProp存在错误(猜测hatP计算可能出错)。此外,statsmodels的proportions_ztest结果与binom_test一致,p值均趋近于0。

样本数据

  • 样本1:195次成功,135779次试验
  • 样本2:5481次成功,81530次试验

各方法运行结果

scipy.stats.binom_test

binom_test(x=5481, n=81530, p=0.0014, alternative='greater') → 0.0
binom_test(x=5481, n=81530, p=0.0014, alternative='two-sided') → 0.0

注:这里的p=0.0014是样本1的成功率(195/135779≈0.001436)。

自定义函数fnDiffProp

fnDiffProp(x1=195, x2=5481, n1=135779, n2=81530) → (-1.3523132192521408, 1.82372486268966)

输出的p值1.82超出合理范围,明显异常。

statsmodels.proportions_ztest

number_of_successes = [5481, 195]
total_sample_sizes = [81530, 135779]
test_stat, p_value = proportions_ztest(number_of_successes, total_sample_sizes, alternative='larger') → 93.10329278601503,0.0

补充测试用例:

number_of_successes = [5389, 119]
total_sample_sizes = [80000, 80000]
test_stat, p_value = proportions_ztest(number_of_successes, total_sample_sizes, alternative='larger') → 72.26377467032772,0.0

问题分析

  1. binom_test使用验证:binom_test的参数设置是将样本2的成功次数与样本1的成功率对比,从样本数据看,样本2的成功率(5481/81530≈0.0672)远高于样本1的0.0014,因此p值趋近于0是合理的,说明样本2成功率显著高于样本1。
  2. fnDiffProp的错误推测:输出的p值大于1,显然违反统计常识,大概率是函数内部计算逻辑错误。常见问题包括:
    • 合并比例hatP的计算错误:正确的合并比例应为(x1+x2)/(n1+n2),若函数中误用了其他计算方式(比如颠倒分子分母、或错误加权),会导致标准误计算错误,进而影响Z值和p值。
    • p值计算逻辑错误:比如未正确调用正态分布的生存函数,或符号处理错误,导致计算出超出0-1范围的数值。

内容的提问来源于stack exchange,提问作者user3476463

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 15:48:30