Scipy.stats中T分布置信区间与手动计算结果不符问题排查
问题原因与解决办法
你的代码其实没有错误,看起来结果不一致只是因为输出顺序搞反了:
stats.t.interval()以及冻结t分布的interval()方法,返回的元组格式是 (置信区间下限, 置信区间上限)- 你的手动计算代码中,先计算了上限
upper再计算下限lower,并且print时先输出upper再输出lower,导致显示顺序和interval方法的结果相反,但数值完全匹配。
验证结果
运行你的代码会得到类似如下输出:
(95.21482738398363, 102.58517261601637) (95.21482738398363, 102.58517261601637) Manually Calculated: 102.58517261601637 95.21482738398363
可以看到两组结果的数值完全一致,只是顺序颠倒了。
修正方法
调整手动计算的输出顺序,先输出下限再输出上限即可:
print('Manually Calculated: ', lower,' ', upper)
额外确认
你的t分布置信区间计算逻辑是完全正确的:
- 正确使用了样本标准误(
sem)作为scale参数,而非总体标准差 - 自由度
df = n-1设置正确 - 临界值
dist.ppf(0.975)对应95%置信区间的双侧分位数,计算正确
内容的提问来源于stack exchange,提问作者Hamza
相关产品推荐
相关产品推荐

