【问题标题】:Understanding Numpy's `multivariate_normal` method理解 Numpy 的 `multivariate_normal` 方法
【发布时间】:2020-09-09 14:38:40
【问题描述】:

我希望从具有0 均值和极低标准差 (0.001) 的多元高斯分布生成样本。但是当我绘制结果样本时,我对它们的范围感到困惑。

如果我们查看从标准高斯分布生成的随机样本,它看起来不错。很大一部分样本位于两个轴上的 (-1, +1) 边界内(理想应该是 66%?)。此外,所有样本都在 (-3, +3) 的范围内,这看起来不错。

mean = np.array([0., 0.])
cov1 = np.array([[1., 0.], [0., 1.]])
size = 100

vals1 = np.random.multivariate_normal(mean, cov1, size)
plt.scatter(vals1[:, 0], vals1[:, 1])

现在,当我将标准偏差减小到 0.001 时,我希望样本在 (-0.003, 0.003) 范围内,但它们要高一个数量级。我看到它们位于(-0.06, 0.06) 的范围内。

cov2 = np.array([[0.001, 0.], [0., 0.001]])

vals2 = np.random.multivariate_normal(mean, cov2, size)
plt.scatter(vals2[:, 0], vals2[:, 1])

我想我解释多元高斯样本范围的方式有问题。谁能帮我理解这些结果?谢谢。

【问题讨论】:

    标签: python numpy random gaussian


    【解决方案1】:

    如果协方差矩阵是对角矩阵,则其对角元素是每个变量的方差 (σ^2)。所以当你有

    cov2 = np.array([[0.001, 0.], [0., 0.001]])
    

    您实际上是在选择每个变量中的标准差 (σ) 为 sqrt(0.001) = 0.03162277660168379。

    【讨论】:

    • 是的,我应该看到的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2021-11-20
    • 2014-09-26
    • 1970-01-01
    • 2018-04-01
    相关资源
    最近更新 更多