什么是scipy.stats.norm上下文中的概率密度函数?

max*_*mir 7 scipy probability-density

这是一个非常基本的问题,但我似乎无法找到一个好的答案.scipy究竟为什么计算

scipy.stats.norm(50,10).pdf(45)
Run Code Online (Sandbox Code Playgroud)

据我所知,高斯平均50和标准差10的特定值(如45)的概率为0.那么究竟什么是pdf计算?它是高斯曲线下的面积,如果是这样,x轴上的值范围是多少?

Ste*_*bel 7

用Python表示的正态分布概率密度函数

from math import pi
from math import exp
from scipy import stats


def normal_pdf(x, mu, sigma):
    return 1.0 / (sigma * (2.0 * pi)**(1/2)) * exp(-1.0 * (x - mu)**2 / (2.0 * (sigma**2)))
Run Code Online (Sandbox Code Playgroud)

(将其与维基百科定义进行比较).这正是scipy.stats.norm().pdf()计算:给定点的pdf .xmu, sigma

请注意,这不是(=概率区域的PDF格式下),而是价值在该点的概率密度函数x传递给pdf(x)(和值可以很好地大于1.0!).你可以看到,例如,N(0, 0.1)at x = 0:

val = stats.norm(0, 0.1).pdf(0)

print(val)

val = normal_pdf(0, 0, 0.1)

print(val)
Run Code Online (Sandbox Code Playgroud)

它给出了输出

3.98942280401

3.989422804014327

根本不是曲线下的概率=面积!

请注意,这并不矛盾声明该特定值的概率喜欢x = 00因为在形式上的PDF为一个点下的面积(即,长度的间隔0)是零(如果˚F是在[a的连续函数, b]和F是[a,b]上的反衍生物,然后是[a,b] = F(a) - F(b)f的定积分.这里,积分的值是).a = b = xF(x) - F(x) = 0