2017-11-19 23 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]이 아니어야합니다. 다 변수 분포를 생성하는 동안 1,1을 평균으로 취 했습니까? multivariate_normal이 무엇multivariate_normal 방법의 평균 출력이 분포 평균과 다른 이유는 무엇입니까?

답변

2

은 다음과 같습니다

는 다변량 정규 분포에서 무작위 샘플을 그립니다.

여기서 핵심 단어는 입니다.입니다. 당신은 기본적으로 샘플을 매우 적게 가지고 있습니다. 이는 배포판 자체와 동일한 의미를 갖지 않을 것입니다.

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

는 많은 수의 법칙이 수단이 더 안정적으로 1.00000 접근해야한다고 지시 훨씬 더 큰 샘플을 복용하여이 테스트 고려 (즉, 수학 기대, 아무것도 더, 그리고 샘플 크기는 5입니다). 즉 ..

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

가 : 5의 당신의 평균이 50로 평균 연령이 50 장소를 무작위로 5를 포착하면 300 만 명의 인구가 있었다라고, 당신은 기대 , 아마도 정확히 50이 아니며 심지어 50에서 상당히 멀리 떨어져있을 수도 있습니다.

+1

Brad에게 많은 감사를드립니다. 나는 그것이 5 개의 샘플을 생성하고 리턴한다는 인상 아래에 있었지만 그것은 단지 분포에서 5 개의 값을 끌어 낸다. –