为什么 scipy.norm.pdf 有时会给出 PDF > 1?如何纠正?
Why does scipy.norm.pdf sometimes give PDF > 1? How to correct it?
给定高斯(正态)随机变量的均值和方差,我想计算它的概率密度函数 (PDF)。
我提到了这个 post:Calculate probability in normal distribution given mean, std in Python,
还有 scipy 文档:scipy.stats.norm
但是当我绘制曲线的PDF时,概率超过了1!参考这个最小工作示例:
import numpy as np
import scipy.stats as stats
x = np.linspace(0.3, 1.75, 1000)
plt.plot(x, stats.norm.pdf(x, 1.075, 0.2))
plt.show()
这是我得到的:
怎么可能有 200% 的概率得到平均值 1.075?我在这里误解了什么吗?有什么办法可以纠正这个问题吗?
这不是错误。这也不是错误的结果。概率密度函数在某个特定点的值不会给你概率;它衡量密集 分布围绕该值的程度。对于连续随机变量,给定点的概率等于零。我们计算 2 个点 p(x1 < X < x2)
之间的概率,而不是 p(X = x)
,它等于该概率密度函数下方的面积。概率密度函数的值完全可以在1以上,甚至可以趋近于无穷大。
是密度函数,不是质量函数
如果方差小于1/(2*pi)
,高斯会超过1.0
超过 1 只是质量函数的限制,而不是密度函数
给定高斯(正态)随机变量的均值和方差,我想计算它的概率密度函数 (PDF)。
我提到了这个 post:Calculate probability in normal distribution given mean, std in Python,
还有 scipy 文档:scipy.stats.norm
但是当我绘制曲线的PDF时,概率超过了1!参考这个最小工作示例:
import numpy as np
import scipy.stats as stats
x = np.linspace(0.3, 1.75, 1000)
plt.plot(x, stats.norm.pdf(x, 1.075, 0.2))
plt.show()
这是我得到的:
怎么可能有 200% 的概率得到平均值 1.075?我在这里误解了什么吗?有什么办法可以纠正这个问题吗?
这不是错误。这也不是错误的结果。概率密度函数在某个特定点的值不会给你概率;它衡量密集 分布围绕该值的程度。对于连续随机变量,给定点的概率等于零。我们计算 2 个点 p(x1 < X < x2)
之间的概率,而不是 p(X = x)
,它等于该概率密度函数下方的面积。概率密度函数的值完全可以在1以上,甚至可以趋近于无穷大。
是密度函数,不是质量函数
如果方差小于1/(2*pi)
,高斯会超过1.0
超过 1 只是质量函数的限制,而不是密度函数