【问题标题】:Why does numpy.random.normal gives some negative value in the ndarray?为什么 numpy.random.normal 在 ndarray 中给出了一些负值?
【发布时间】:2024-05-03 02:05:02
【问题描述】:

我知道对于任何选择的平均值和标准差值,正态分布总是大于 0。

>> np.random.normal(scale=0.3, size=x.shape)
[ 0.15038925 -0.34161875 -0.07159422  0.41803414  0.39900799  0.10714512
  0.5770597  -0.16351734  0.00962916  0.03901677]

这里的平均值是 0.0,标准差是 0.3。但是 ndarray 中的一些值是负数。我对正态分布曲线始终为正的解释是错误的吗?

编辑:
但是在matlab中使用normpdf函数总是给出一个正值数组,我猜这是概率密度函数(y轴)。而numpy.random.normal 给出正值和负值(x 轴)。现在这令人困惑。

【问题讨论】:

    标签: python numpy normal-distribution


    【解决方案1】:

    从正态分布生成的值确实取负值。

    例如,对于均值 0 正态分布。我们需要一些正值和负值才能使平均值为零。此外,对于均值为 0 的正态分布,它同样可能为正或负。

    它实际上取任何具有正概率的实数。您可能会对概率密度函数总是正数感到困惑。

    【讨论】:

    • 我很困惑。我以为正态分布是概率密度函数,对吧?如果不是,那是什么?请用数学方法向我解释清楚。
    • 如果你参考这个picture,你看到的负值实际上是x值,水平轴上的值。我们可以看到它既有正值也有负值。纵轴告诉我们观察特定范围值的可能性有多大。
    • 首先,为什么您期望概率均值为 0?它显然应该是 0.5 之类的东西。如果您要像这样np.random.normal(0.5, 0.3, 1000) 进行概率密度分布,您将得到正分布(正态分布)。
    • numpy.random.normal 函数是给出 x 的值还是正态分布函数 psi(x) 的值,总是正的?
    • 正态分布中的 x 值
    【解决方案2】:

    尽量不要期望概率平均值为 0,因为它没有任何意义,你期望你的随机事件永远不会发生。 尝试使用 np.random.normal(0.5, 0.3, 1000) 之类的东西来表达您的正态概率分布。

    此外,请仔细查看 Normal Distribution 的数学运算,以便能够轻松构建概率密度函数。

    【讨论】: