我正在使用numpy的正态分布,并且很难理解其文档。假设我的正态分布的平均值为5,标准差为0.5:
import numpy as np
from matplotlib import pyplot as plt
from scipy.stats import norm
mean = 5
std = 0.25
x = np.linspace(mean - 3*std, mean + 3*std, 1000)
y = norm(loc=mean, scale=std).pdf(x)
plt.plot(x,y)
结果图是熟悉的钟形曲线,但其峰值在1.6左右。任何值的概率如何超过1?如果我将其乘以scale
,则概率是正确的。
但是,当std
(和scale
)大于1时没有这种问题:
mean = 5
std = 10
x = np.linspace(mean - 3*std, mean + 3*std, 1000)
y = norm(loc=mean, scale=std).pdf(x)
plt.plot(x,y)
documentation上的norm
表示loc
是平均值,scale
是标准偏差。为什么scale
大于和小于1时,它的表现如此奇怪?
Python 3.8.2。 Scipy 1.4.1
正在绘制的“钟形曲线”是概率密度函数(PDF)。这意味着随机变量的分布在任何间隔[a,b]内的概率是a和b之间的曲线下的面积。因此,曲线下的整个区域(从-无限到+无限)必须为1。因此,当标准偏差较小时,PDF的最大值可能会大于1,对此并不奇怪。