numpy - 相关性 = 1 的 Numpy 双变量正态分布
问题描述
将 X 和 Y 视为具有相关性 1.0 的边缘标准正态。
当相关性为 1.0 时,二元正态分布未定义(从技术上讲,它是 y = x 线),但 numpy 仍会打印出值。为什么这样做?
解决方案
哦,但是分布是定义的!它只是没有明确定义的密度函数。(至少,对于 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
的行为没有被破坏。通过从正确指定的分布返回样本,它表现良好。
推荐阅读
- java - 将访问令牌存储在 OAuth2.0 应用程序中并重复使用直到过期?
- php - PHP - substr() 错误或无效参数
- xamarin.forms - 简单的 Odata 客户端使用身份验证不工作的 Odata
- reactjs - react native订阅监听器的通用解决方案
- r - 将常数添加到向量中的几个值 - R
- android - 对 Json 数据进行改进的 Android 身份验证
- python - 如何设置Qframe框架的颜色?
- vue-i18n - 带有 2 个数字参数的字符串
- reactjs - 状态更新后不调用渲染
- amazon-web-services - 使用 boto3 在 S3 中生成签名 URL