[확률과 통계] 표본분포

표본분포

들어가며

통계적 추론

표본 조사는 반드시 오차를 수반함

표본분포

표본 조사를 통해 파악하고자 하는 정보

모수의 종류


통계량 (statistic)

표본 평균이나 표본 분산과 같의 표본의 특성값

50만명의 전국 고등학교 1학년 학생의 키를 조사하기 위해 1000 명을 표본 조사했다고 가정해보자.

이때, 우리는 표본의 평균을 계산하고 싶다. 하지만, 표본의 평균은 표본의 선택에 따라 달라진다. 따라서, 표본 평균은 확률변수라고 할 수 있다. 또한 표본 평균이 가질 수 있는 값도 하나의 확률 분포를 가진다. 따라서, 그 분포가 무엇인지가 표본을 해석하는데 있어서 매우 중요하다. 그래서 통계량의 확률 분포를 표본 분포(sampling distribution)이라고 한다.


표본 평균

모평균을 알아내는데 쓰이는 통계량을 표본 평균이라고 정의한다.

표본 평균의 분포

다음과 같이 $x_{1}, x_{2}, \ldots, x_{n}$ 의 표본을 추출 했다고 가정해보자. 이때, $\text { 평균: } \mu \text { , 분산: } \sigma^{2}$ 인 정규 모집단에서 추출된 표본의 측정 값을 구하면 다음과 같다.

단, 이때 $x_1$ 은 특정 표본의 첫번째 원소를 의미 하진 않습니다. 뽑힐 수 있는 모든 표본의 첫번째 원소입니다. 어느 표본이 뽑히느냐에 따라 달라질 수 있고, 모집단의 모든 원소가 올 수 있습니다. 따라서 모집단의 원소와 같습니다.

표본 평균

다음과 같이 정규 모집단에서 추출한 샘플들의 표본 평균과 표본 분산은 다음 수식을 따르게 된다. \(\bar{x}=\frac{1}{n} \sum_{i=1}^{n} x_{i}\\ \bar{X} \sim N\left(\mu, \frac{\sigma^{2}}{n}\right)\) 이때 $n$이 클수록 분산은 작아지는 특성이 있다. 이말은 즉슨, 샘플 수가 커져서 샘들의 분산이 작아지게 되면 모평균과 비슷한 표본 평균을 구할 수 있다는 말과 같다.


예제 #1

샘플의 크기가 10이고 평균이 0, 분산이 1인 표본을 10,000번 추출해서 이때의 표본 평균과 표본 분산을 구해 보면 다음과 같다.

>>> import numpy as np
>>> xbars = [np.random.normal(size=10).mean() for _ in range(10000)]
>>> np.mean(xbars) # 표본 평균의 평균
0.0015422225147022652
>>> np.var(xbars)
0.09787875394995192

np.random.normal 의 기본인자로 평균이 0, 분산이 1이 설정되어 있다. 위에서 구한 수식 처럼 모분산이 1이기 때문에 표본 분산은 $\frac{\sigma^{2}}{n}$ 즉, 0.1이 나와야한다. np.var(xbars) 의 결과를 살펴보면 0.1과 매우 비슷한 근사치가 나왔다. 표본 평균 또한 0.0015로 0과 비슷한 근사치로 수렴 되었다.


예제 #2

이번에는 크기가 10, 평균이 5이고, 분산이 3인 경우 샘플을 10,000번 추출 했을때의 표본 평균과 표본 분산을 구해보면 다음과 같다.

>>> import numpy as np
>>> xbars = [np.random.normal(loc=5, scale=3, size=10).mean() for _ in range(10000)]
>>> np.mean(xbars)
5.007541639370076
>>> np.var(xbars)
0.9069569641396703

예제 #1과 마찬가지로 표본 평균은 모평균을 따라가고 있고 분산은 $\frac{\sigma^{2}}{n}$ 에 수렴하고 있다. 이때 샘플 평균들의 그래프를 그려보면 정규분포와 같은 종모양을 취하고 있다.

>>> from matplotlib import pyplot as plt
>>> plt.hist(xbars, range=(0,10), bins=30)

image-20210507114554442


표본 평균의 평균 vs. 표본 평균

표본 평균

일반적으로, 표본 평균은 n개로 샘플링된 표본의 평균을 의미 한다. 이를 수식으로 표현하면 다음과 같다.

\[\bar{x}=\frac{x_{1}+\cdots x_{n}}{n}\]

Python 코드 예제에서 우리는 np.random.normal() 을 사용해서 n이 10인 표본의 평균을 구한 것이다.

np.random.normal(loc=5, scale=3, size=10).mean()


표본 평균의 평균

평균의 평균 이라는 말이 이상 할 수 있는데 전혀 이상한 말이 아니다. 표본 평균의 평균의 의미는 n개로 샘플링된 표분 평균의 평균을 의미한다. 이때 수식으로 다음과 같이 표현 한다.

\[E(\bar{x})\]

이때, 확률 변수를 살펴 보면 $\bar{x}$이다. 이말은, 표본의 평균 자체가 확률 변수라는 의미이다. 위의 표본 평균에서는 $x_n$ 이 확률 변수 였다. 즉, 샘플링 된 원소가 확률 변수 인것이고, $E(\bar{x})$ 에서는 $\bar{x}$ 측 표본 평균이 확률 변수가 되어 표본 평균들의 평균을 구할 수 있다는 말이고 이때 표본평균을 하나의 표본 관점에서 해석 한 것이다.

>>> xbars = [np.random.normal(loc=5, scale=3, size=10).mean() for _ in range(10000)]
>>> np.mean(xbars)

위 코드에서 xbars의 의미는 표본 평균들의 집합임으로 표본 평균이 확률 변수가 된것이다. np.mean(xbars) 는 확률 변수가 표본 평균인 즉, 표본 평균들의 평균을 구한 것이며 위에서 설명한 $E(\bar{x})$ 를 구한 것이다.


중심극한정리 (Central limit theoerem)

$x_{1}, x_{2}, \ldots, x_{n}$ 의 표본을 추출 한다고 가정 해보자. 이때, $\text { 평균: } \mu \text { , 분산: } \sigma^{2}$ 인 정규 모집단에서 추출된 표본의 측정값이라고 이다. 단, 이때는 정규 모집단이라는 가정을 하지 않고 임의의 모집단이라고 가정을 한다.


표본 평균

위에서 주어진 조건의 통해 표본 평균을 구하면 다음과 같다.

\[\begin{array}{l} \bar{x}=\frac{1}{n} \sum_{i=1}^{n} x_{i}\\ \text{단, }n \text { 이 충분히 큰 경우 }(n \geq 30) \end{array}\\ \text { 근사적으로 } \bar{X} \sim N\left(\mu, \frac{\sigma^{2}}{n}\right)\]

위 식에서 가장 중요한점은 $n$이 충분히 큰 경우라는 조건이 중요하다. 즉, n이 30보다 크게 되면 표본집단은 근사적으로 정규분포를 띄게 되고 $\bar{X} \sim N\left(\mu, \frac{\sigma^{2}}{n}\right)$ 의 식을 적용하여 표본 평균과 표본 분산을 구할 수 있다.

코드 구현

>>> import numpy as np
>>> n = 20
>>> xbar = np.random.exponential
>>> xbars = np.array([xbar(scale=3, size=n).mean() for _ in range(10000)])
>>> print("mean: ", xbars.mean(), "var: ",  xbars.var())
mean:  2.9957732005613065 var:  0.45419389436171725

이번에는 지수 함수의 형태를 구현 해보았다. 다음 그래프를 통해 n의 크기에 따라 정규 분포의 모양에 가까워지는 점을 확인 해보자

N = 5

image-20210507155100415

N = 10

image-20210507155222765

N = 30

image-20210507155252673