일단 우리가 아는 중심극한정리를 여기에 적어 본다.
표본평균의 표본분포에 관한 성질
모집단의 분포가 정규분포 $N(\mu,\sigma^2)$ 일 때 표본평균 $\bar{X}$ 는 정규분포 $N(\mu,\frac{\sigma^2}{n})$ 을 따른다. 한편 모집단의 분포가 정규분포가 아닌 경우에는 위의 사실이 성립하지 않는다고 한다. 하지만! 표본의 크기 n 이 충분히 클 때에는 임의의 모집단으로 부터의 표본평균이라 하더라도 그 분포가 정규분포에 가깝다는 것이 알려져 있는데 이것이 중심극한정리이다.
이것이 무슨 의미인지 간단한 python 코드와 그림으로 정리해 보겠다.
import numpy as np
import matplotlib.pyplot as plt
nnsize=10000
x1=np.random.normal(loc=0.0, scale=1.0,size=nnsize)
x2=np.random.normal(loc=10.0, scale=2.0,size=nnsize)
x3=np.random.normal(loc=30.0, scale=1.5,size=nnsize)
X=np.append(x1,[x2,x3])
위 코드에서 $X$라는 분포를 임의로 만들어 보았다. 대략 0, 10, 30의 평균으로 가진 정규분포 세 개가 합쳐진 분포이다.
def drawMeanBox(x,pp):
props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
mu=np.mean(x)
pp.axvline(x=mu,color='r')
pp.text(0.5,0.95,r'$\mu=%.2f$' %(mu), transform=pp.transAxes, fontsize=10,verticalalignment='top', bbox=props)
fig = plt.figure()
pp=fig.add_subplot(1,1,1)
X=np.append(x1,[x2,x3])
n,bins,patch=pp.hist(X,bins=1000)
print("mean is {}".format(np.mean(X)))
drawMeanBox(X,pp)
위 코드를 이용해서 그림을 그려보면 모집단 $X$의 분포가 분명하게 눈에 들어온다.
여기서 random sampling을 해서 표본집단을 만들어본다. 1000개씩 4번 뽑아서 별개의 4개 세트를 만들겠다. (아래 더보기에 코드참조)
fig = plt.figure()
pcont=[]
container=[]
samplesize=1000
for ii in [1,2,3,4]:
pcont.append(fig.add_subplot(2,2,ii))
for ii in [1,2,3,4]:
xp1=np.random.choice(X, size=samplesize)
n,bins,patch=pcont[ii-1].hist(xp1,bins=100)
drawMeanBox(xp1,pcont[ii-1])
container.append([np.mean(xp1),np.std(xp1)])
모분포 $X$ 에 맞게 0, 10, 30 근처에서 샘플들이 잘 뽑힌 것을 볼 수가 있다. 즉 표본의 크기가 크다고 해서 무조건 정규분포를 따르는 것이 아니다. 그럼 도대체 뭐가 정규분포를 따른 다는 것일까?
그림을 잘 보면 각 4개의 표본집단의 각각의 평균을 표시해 놓았는데 13.27, 12.85, 12.95, 13.73으로 서로 약간씩 다른 것을 볼 수가 있다.
이번에는 4개 세트만이 아니라 1000개의 세트를 만들어보자. 이를 위해서 다음의 코드를 이용한다.
fig = plt.figure()
pcont=[]
container=[]
samplesize=1000
for ii in [1,2,3,4]:
pcont.append(fig.add_subplot(2,2,ii))
for ii in [1,2,3,4]:
xp1=np.random.choice(X, size=samplesize)
n,bins,patch=pcont[ii-1].hist(xp1,bins=100)
drawMeanBox(xp1,pcont[ii-1])
container.append([np.mean(xp1),np.std(xp1)])
이 천 개의 표본집단의 표본평균 $\bar{X}$ 1000개의 분포는 어떻게 생겼을지를 그려보자.
fig,ax = plt.subplots()
n,bins,patch=ax.hist(barX[:,0],bins=20, density=True)
drawMeanBox(barX[:,0],ax)
보이는가? 모집단이 이상하게 생긴 집단이라고 하더라도 표본집단의 평균 $\bar{X}$의 분포를 그려보면 정규분포의 형태를 띤다는 것이 중심극한정리이다.
'통계' 카테고리의 다른 글
포아송 분포 유도: 이항 분포로부터 (Poisson distribution: approximation to Binomial) (0) | 2023.07.09 |
---|---|
multidimensional scaling (MDS) 의 개념과 PCA 와의 차이점 (0) | 2023.05.25 |
댓글