2017-11-19 4 views
1
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]であってはいけません。何multivariate_normalmultivariate_normalメソッドの平均出力が分布の平均と異なるのはなぜですか?

答えて

2

は次のとおりです。

は、多変量正規分布からの無作為標本を描画します。

ここでキーワードはです。です。あなたは基本的にかなり小さなサンプルをとっていますが、それは配布自体と同じ意味を持つとは限りません。 (これは数学的期待、より多くの何もないですし、あなたのサンプルサイズは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]) 

を:あなたは、ランダムにあなたが5のあなたの平均は50であることを期待し、それらの5を選んだ場合、平均年齢は50だった3億人の人口を持っていたと言いますしかし、それはおそらく正確に50ではなく、50からかなり離れているかもしれません。

+1

Bradさん、ありがとうございました。私はそれが5つのサンプルを生成し、それを返すという印象の下にあったが、それはその分布から5つの値を引くだけである。 –