[인공지능 수학 - 통계학]15강 : 표본분포
- 통계적 추론
- 표본 조사를 통해 모집단에 대한 해석을 진행
- 전수조사는 실질적으로 불가능한 경우가 많음
- 표본 조사는 반드시 오차가 발생
- 적절한 표본 추출 방법 필요
- 표본과 모집단과의 관계를 이해해야 함
- 단순랜덤추출법(random sampling)
- 난수표 사용
- 랜덤넘버 생성기 사용
- https://colab.research.google.com 구글 콜라보라토리에 들어가서
import random [random.randint(1,10)for i in range(10)]
- https://colab.research.google.com 구글 콜라보라토리에 들어가서
표본분포
표본 평균의 분포
- 표본조사를 통해 파악하고자 하는 정보:
- 모수(Parameter)
- 모수의 종류:
- 모평균, 모분산, 모비율 등
- 모수를 추정하기 위해 표본을 선택하여 표본 평균이나 표본 분산 등 계산
- 통계량(statistic):
- 표본 평균이나 표본 분산과 같은 표본의 특성값
- 표본 평균이나 표본 분산과 같은 표본의 특성값
- 50만명의 전국 고등학교 1학년 학생의 키를 조사하기 위해 1000명을 표본 조사함
- 표본의 평균 계산
- 표본의 평균은 표본의 선택에 따라 달라짐
- 따라서 표본평균은 확률변수
- 표본 평균이 가질 수 있는 값도 하나의 확률분포를 가짐
- 그 분포가 무엇인지가 표본을 해석하는데 있어서 매우 중요함
-
통계량의 확률분포 : 표본분포(sampling distribution)
- 표본 평균
- 모평균을 알아내는데 쓰이는 통계량
- 표본평균의 분포
- $x_1, x_2, \dots, x_n$
- 평균 : $\mu$, 분산 : $\sigma^2 $
- 정규모집단에서 추출된 표본의 측정값
- 표본평균
- $\bar {x} = {1 \above 1pt n \sum_{i=1}^n x_i}$ : 표본평균
- $\bar {X}$~$N(\mu, {\sigma^2 \above 1pt n})$ : 표본평균은 정규분포를 따른다. N이 클수록 분산이 작아진다.
- $x_1, x_2, \dots, x_n$
- 평균이 0이고 분산이 1인 표준정규분포에서 다음과 같이 표본평균과 분산을 구할 수 있다.
-
>>> import numpy as np >>> xbars = [np.mean(np.random.normal(size = 10))for i in range(10000)] >>> print("mean %f, var %f" %(np.mean(xbars), np.var(xbars))) mean -0.002223, var 0.100217
-
- 평균과 분산을 직접 지정해서 다음과 같이 표본평균과 분산을 구할 수 있다. 평균 10, 분산 3, n=10
-
>>> xbars = [np.mean(np.random.normal(loc=10, scale=3, size=10))for i in range(10000)] >>> print("mean %f, var %f" %(np.mean(xbars), np.var(xbars))) mean 9.976282, var 0.875775
-
- 히스토그램으로 출력하기
>>> import matplotlib as plt >>> h = plt.pyplot.hist(xbars, range=(5,15), bins=30)
정규분포처럼 생긴 히스토그램을 볼 수 있다.
중심극한정리(central limit theorem)
- $x_1, x_2, \dots, x_n$
- 평균 : $\mu$, 분산 : %\sigma^2%
- 모집단(!=정규모집단)에서 추출된 표본의 측정값
- 표본평균
- $\bar {x} = {1 \above 1pt n \sum_{i=1}^n x_i}$
- n이 충분히 큰 경우(n >= 30),
- 근사적으로 $\bar {X}$~$N(\mu, {\sigma^2 \above 1pt n})$
- 근사적으로 $\bar {X}$~$N(\mu, {\sigma^2 \above 1pt n})$
import numpy as np
import matplotlib as plt
n=3
xbars = [np.mean(np.random.rand(n)*10)for i in range(10000)]
print("mean %f, var %f" %(np.mean(xbars), np.var(xbars)))
h=plt.pyplot.hist(xbars, range=(0,10), bins=100)
E(X) = 5, 표본의 개수 n이 커질수록, 평균쪽으로 점점 더 그래프가 몰리면서 정규분포의 형태를 띄는 것을 볼 수 있다.
import numpy as np
import matplotlib as plt
n=2
xbars = [np.mean(np.random.exponential(scale=4, size=n))for i in range(10000)]
print("mean %f, var %f" %(np.mean(xbars), np.var(xbars)))
h=plt.pyplot.hist(xbars, range=(0,10), bins=100)
$\lambda = 1/3$, $E(X) = 1/\lambda = 3$, $Var(X) = 1/\lambda^2 = 9$, 정규분포가 아닌 지수분포의 형태를 띈다. 하지만 표본의 개수 n를 늘려갈수록 정규분포에 가까운 형태를 띄게 된다.