首页 > 解决方案 > 相关性 = 1 的 Numpy 双变量正态分布

问题描述

将 X 和 Y 视为具有相关性 1.0 的边缘标准正态。

当相关性为 1.0 时,二元正态分布未定义(从技术上讲,它是 y = x 线),但 numpy 仍会打印出值。为什么这样做?

标签: numpynormal-distribution

解决方案


哦,但是分布是定义的!它只是没有明确定义的密度函数。(至少,对于 2D 空间上的 Lesbegue 度量不是。)(请参阅数学堆栈交换关于更广泛的此类分布组的讨论。)所以numpy没有做错任何事情。

您所描述的是双变量(或更一般地,多变量)正态分布的退化情况。当协方差矩阵不是正定的时,就会发生这种情况。然而,分布是为任何正定协方差矩阵定义的。

例如,矩阵 [[1, 1], [1, 1]]是非正定矩阵,而是半正定矩阵。

分布仍然具有分布应该具有的许多其他属性:支撑(如您所见,实线:μ + span(Σ))、矩等。

import numpy as np

np.random.multivariate_normal(mean=[0, 0], cov=[[1, 1], [1, 1]])
# array([0.61156886, 0.61156887])

总之,numpy的行为没有被破坏。通过从正确指定的分布返回样本,它表现良好。


推荐阅读