Scipy的ttest_1samp返回p值与手动计算结果不符是什么原因?
Scipy单样本t检验p值差异原因解答
你遇到的p值不一致问题源于对检验类型的认知偏差,代码和Scipy的计算结果都没有问题。
- Scipy的
ttest_1samp默认返回双侧检验的p值,对应原假设为「样本均值与给定的总体均值没有显著差异」,p值是t统计量对应分布左右两侧尾部的概率之和。你查阅标准正态分布表得到的0.0823是单侧左尾的概率,二者正好是2倍关系:0.1638 ≈ 2 * 0.0823,结果完全匹配。 - 如果你实际需要的是单侧检验结果(比如原假设为「样本均值大于等于给定总体均值」),可以手动调整计算:如果t统计量为负,左尾单侧p值为返回值除以2即可;如果t统计量为正,右尾单侧p值为1减去返回值的一半。也可以直接调用
st.t.cdf(statistic, df=你的样本量-1)直接计算对应t分布的单侧p值。 - 额外提醒:只有当样本量足够大时,t分布才会近似于标准正态分布,如果你使用的样本量较小,不要用标准正态分布表查询p值,应该用对应自由度的t分布分位数计算,避免出现误差。
内容的提问来源于stack exchange,提问作者sendhelppls
相关产品推荐
相关产品推荐

