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

时间:2017-04-25 05:24:07

标签: scipy probability-density

这是一个非常基本的问题,但我似乎无法找到一个好的答案。

计算scipy究竟是什么?
scipy.stats.norm(50,10).pdf(45)

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

2 个答案:

答案 0 :(得分:7)

Python中表达的probability density functionnormal distribution

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)))

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

请注意,这是概率(= pdf下的区域),而是点{{的pdf的 1}}您传递给x(该值很可能大于pdf(x)!)。例如,您可以在1.0处找到N(0, 0.1)

x = 0

给出输出

  

3.98942280401

     

3.989422804014327

根本不是曲线下的概率=区域!

请注意,这与val = stats.norm(0, 0.1).pdf(0) print(val) val = normal_pdf(0, 0, 0.1) print(val) 等特定值的概率为x = 0的陈述并不矛盾,因为正式地,pdf下的某个点的区域(即长度的间隔{ {1}})为零(如果 f 是[a,b]上的连续函数而 F 是[a,b]上的反导数,那么定积分 f 超过[a,b] = F(a) - F(b)。这里,0因此积分值为{{1 }})。

答案 1 :(得分:1)

您获得的是正常pdf函数的值为x的pdf 平均值为50,标准差为10。 theoretical pdf and normalized histogram from random variables

易于使用

进行可视化
npdf=norm(50,10)
plt.plot(range(0,100), npdf.pdf(range(0,100)), 'k-', lw=2)`

您还可以使用

创建的普通pdf生成随机变量
npdf.rvs(1000) #1000 numbers 
hist=plt.hist(n.rvs(10000),bins=100,normed=True)

Your Code