scipy.stats 函数“multivariate_normal”不会产生所需的分布。我使用多元正态来考虑作为物理项目的一部分的通用性,但向量的 z 分量的分布并不符合预期,即使标准差矩阵只有 z 分量,如下所示:
from scipy import stats
import numpy as np
mu = np.array([0,0,2000])
sigma = np.diag([0,0,50])
vals = stats.multivariate_normal(mu, sigma, allow_singular=True).rvs(10000)
没有按照预期在 vals[2] 中产生所需的分布,即标准差为 50、平均值为 2000 的正态分布。相反,平均值是正确的,但标准差比应有的小得多。 我在这里做错了什么?
multivariate_normal
的参数是均值和协方差。在您的情况下,使用对角协方差,这实际上是 3 列的平均值和方差。
因此,您得到的第三列的 variance 是 50(变量与其自身的协方差是其方差)。 因此,您应该预期方差为 50、标准差为 √50
的正态分布