在1D情况下,方差的等效协方差矩阵是什么



我正在尝试生成一个三维多变量正态分布,其值在每个维度上的范围约为0到100。

当我生成均值为50、方差为16的1D正态分布时:

data = random.normal(50, 16, 1000)

所得到的分布具有从大约0到100的范围内的值。但当我将其扩展到多变量情况时,其值仅在35-65:之间

covar = [[16, 0, 0], [0, 16, 0], [0, 0, 16]]
data = random.multivariate_normal([50, 50, 50], covar, 1000)

当对三维使用random.normal时,我得到了预期的结果,值范围从0到100。

data = random.normal(50, 16, size=(3,1000))

这种差异是从哪里来的?为了在多元情况下得到我想要的每个维度的值的范围,我必须制作这样的协方差矩阵:

covar = [[300, 0, 0], [0, 300, 0], [0, 0, 300]]

这对于均值为50的正态分布来说似乎是完全不合理的。

非常感谢您的帮助!

您混淆了方差和标准差。

np.random.normalscale=参数指定标准偏差(即方差的平方根),而传递给np.random.multivariate_normal的协方差矩阵的对角线对应于每个维度中的方差

尝试将协方差矩阵的对角线设置为16**2 == 256

最新更新