본문 바로가기
@ 통계 교양/통계 Tips

표본평균의 분포는 정말 정규분포가 될 수 있을까 (1) 그래프 비교

by bigpicture 2022. 9. 16.
반응형

과연 중심극한정리도 실제로 작동할까요? 표본평균의 분포를 정규분포로 가정하고 구한 p값과 실제 분포에서 구한 p값은 잘 일치할까? 라는 궁금증이 생겼습니다. 이번시간에는 그래프를 그려보며 눈으로 비교하고, 다음 시간에는 p값을 구해서 비교해보겠습니다. 

 

테스트에 사용할 모집단은 아래와 같습니다. 

 

ppltn=c(1,2,3,4,5,6,7,8,9,10) 

 

1부터 10까지의 자연수입니다. 정규분포와는 거리가 멉니다. 먼저 크기가 3인 표본을 50000번 추출하여 히스토그램을 그리고 정규분포와 비교하였습니다. 

 

 

전체적인 모양은 비슷합니다. 크기를 10으로 늘려보았습니다. 

 

 

모양이 상당히 비슷합니다. 최댓값도 비슷합니다. 표본분산의 분포와 카이제곱분포를 비교할 때는 최댓값이 많이 달랐는데 표본평균의 분포에서는 잘 일치합니다. 

 

이번에는 표본의 크기를 30으로 늘렸습니다. 모양이 아주 비슷합니다. 

 

 

마지막으로 표본의 크기를 100까지 키워봤습니다. 

 

 

모양은 아주 잘 일치합니다. 다음시간에는 정량적인 평가를 해보려고 합니다. 위 두 그래프에서 구한 p값을 비교해보겠습니다. 

 

<code>

#설정값
ppltn=c(1,2,3,4,5,6,7,8,9,10) 
size=100

m=mean(ppltn)
s=sd(ppltn)
se=s/sqrt(size)


#분포함수 그리기

dt=list() 

for (i in 1:50000){
  dt[[i]]=mean(sample(ppltn,size,replace=TRUE))
  
}


par(mfrow=c(1,2))

#h1=hist(unlist(dt))

h1=hist(unlist(dt),plot=FALSE)


#x=seq(floor(min(unlist(dt))),ceiling(max(unlist(dt))),by=(h1$breaks[2]-h1$breaks[1]))
#크기 30이상은 아래 x로 설정
x=seq(floor(min(unlist(dt))),ceiling(max(unlist(dt))),by=0.01)


hist(unlist(dt) ,breaks=x  ,freq=FALSE,xlab="x^2",
     main=paste0( "히스토그램 (표본크기 " , size ,")" ) )
points(c(m,m),c(0,1),type='l',col='red')

x2=seq(floor(min(unlist(dt))),ceiling(max(unlist(dt))),by=0.01)

plot( x2, dnorm(x2,m,se),type='l',ylab='Density',xlab="x^2",
      main=paste0('정규분포' ) )
points(c(m,m),c(0,1),type='l',col='red')


(max(h1$density)-dchisq(size-3,size-1))/max(h1$density)*100
반응형

댓글