在统计学中的标准正态分布中会有很多用到计算大于某个数值的概率, stats.norm.sf(x)函数就是计算这个概率的。
我们都知道标准正态分布中, 一个标准差的概率大约是68.2%; 两个标准差的概率大约是95.4%; 三个标准差的概率大约是99.7%。
下面让我们来使用这个函数来验证一下
from scipy import stats
# 正态分布中大于 0 的概率
stats.norm.sf(0)
结果是:0.5
我们来计算一个标准差范围内的概率
# 大于一个标准差的概率
print(stats.norm.sf(1))
# 大于一个标准差的概率 和小于一个标准差的概率
print(2 * stats.norm.sf(1))
# 正负一个标准差之间的概率
print(1 - 2 * stats.norm.sf(1))
答案是:
0.15865525393145707
0.31731050786291415
0.6826894921370859
同理, 我们可以得到正负两个, 三个标准差范围的概率分别是
# 同理可得正负两个标准差之间的概率
print(1 - 2 * stats.norm.sf(2))
# 同理可得正负三个标准差之间的概率
print(1 - 2 * stats.norm.sf(3))
结果:
0.9544997361036416
0.9973002039367398
另外在区间估计的时候我们总是使用95%和1.96标准差, 我们看看是不是对应的呢
print(1 - 2 * stats.norm.sf(1.96))
结果就是:
0.9500042097035591