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

Statsmodels的proportions_ztest采用哪种方差计算方式?

proportions_ztest 与手动正态计算p值不匹配的原因

两者结果不一致的核心原因是proportions_ztest默认的方差估计逻辑和你手动计算时用的方差来源不同,和你用原始计数还是比例计算没有关系:

  • 你手动写的stats.norm.cdf(40, 60, np.sqrt(20000* 0.003*(1-0.003)))数学逻辑完全自洽:二项分布的正态近似中,直接对原始计数计算累积概率,和先把计数转成样本比例、标准化为Z值再算累积概率是完全等价的,线性缩放不会改变正态分布的累积概率结果。
  • proportions_ztest存在一个容易被忽略的参数prop_var,默认值为False。默认配置下,函数不会使用你传入的零假设值value=0.003计算比例方差,而是用样本实际观测到的比例p_hat = count/nobs做方差估计。对应你的案例,样本比例p_hat=40/20000=0.002,用该值计算的标准误小于用零假设p0=0.003计算的标准误,最终得到的Z统计量绝对值更大,p值自然和你手动计算的结果不匹配。
  • 要让两者结果完全对齐,只需要在调用函数时显式指定prop_var=0.003,告知函数使用零假设下的比例计算方差即可,修正后的代码如下:
stat, pvalue = proportions_ztest(
    count=40,
    nobs=20000,
    value=0.003,
    alternative="smaller",
    prop_var=0.003
)
pvalue
  • 补充说明:该函数默认参数correction=False,即不启用耶茨连续性修正,这部分逻辑和你手动计算的逻辑一致,不是本次结果差异的来源。如果手动开启连续性修正,函数会对离散二项计数做0.5的偏移调整,此时结果才会产生新的差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.07 16:15:42