为什么多元正态方法的平均输出与分布均值不同?

时间:2017-11-19 02:52:33

标签: python numpy gaussian

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?

1 个答案:

答案 0 :(得分:2)

multivariate_normal的作用是:

  

从多元正态分布中抽取随机样本。

这里的关键词是 draw 。您基本上采用相当小的样本,但不能保证与分布本身具有相同的平均值。 (这是数学上的期望,仅此而且,您的样本量为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。