为什么 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 相差甚远。
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 相差甚远。