一维情况下方差的等效协方差矩阵是多少?
What is the equivalent covariance matrix to the variance in the 1D case?
我正在尝试生成一个三维多元正态分布,其每个维度的值范围大约为 0 到 100。
当我生成均值为 50、方差为 16 的一维正态分布时:
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.normal
的 scale=
参数指定 标准差 (即方差的平方根),而协方差矩阵的对角线传递给 np.random.multivariate_normal
对应于每个维度中的 方差 。
尝试将协方差矩阵的对角线设置为 16**2 == 256
。
我正在尝试生成一个三维多元正态分布,其每个维度的值范围大约为 0 到 100。
当我生成均值为 50、方差为 16 的一维正态分布时:
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.normal
的 scale=
参数指定 标准差 (即方差的平方根),而协方差矩阵的对角线传递给 np.random.multivariate_normal
对应于每个维度中的 方差 。
尝试将协方差矩阵的对角线设置为 16**2 == 256
。