为什么 multivariate_normal 方法的输出均值与分布均值不同?

Why does the mean output of multivariate_normal method differ from the mean of distribution?

import numpy as np
np.random.seed(12)
num_observations = 5
x1 = np.random.multivariate_normal([1, 1], [[1, .75],[.75, 1]], num_observations)

sum = 0
for i in x1:
    sum += i  

print(sum/num_observations)

在此代码段中,输出为 [0.95766788 0.79287083],但它不应该是 [1,1],因为在生成多元分布时我将均值设为 1,1?

multivariate_normal 所做的是:

Draw random samples from a multivariate normal distribution.

这里的关键词是绘制。您基本上采用了相当小的 sample ,不能保证与分布本身具有相同的均值。 (这就是数学期望,仅此而已,你的样本量是5。)

x1.mean(axis=0)
# array([ 0.958,  0.793])

考虑通过采用更大的样本来对此进行测试,其中大数法则规定您的均值应该更可靠地接近 1.00000...

x2 = np.random.multivariate_normal([1, 1], [[1, .75],[.75, 1]], 10000)
x2.mean(axis=0)
# array([ 1.001,  1.009])

换句话说:假设您有 3 亿人口,平均年龄为 50 岁。如果您随机选择其中的 5 个,您将期望 5 为 50,但它可能不会恰好是 50,甚至可能与 50 相差甚远。