코딩하는 수학과생 :: R / Rstudio 그래프로 중심극한정리(CLT) 쉽게알기(코드포함)


반응형

이번 포스팅에서는 여러 가지 분포들의 그래프를 그려서 중심 극한 정리를 증명해보겠습니다.

 

중심 극한 정리를 한 줄로 쉽게 설명하면

 

한 확률분포확률변수들의 평균의 분포가 정규분포에 가까워진다는 것입니다

 

풀어말하면 한 집단에서 n개를 추출해서 평균을 낸것을 X1이라 두고

 

다시 한번 n개를 추출해서 평균 낸 것을 X2라 둡니다.

 

이런 식으로 뽑혀 평균 내진 X1, X2, ... , Xn들이 정규분포를 이룬다는 것입니다.

 

이러한 정리를 사용하기 위해서는 조건이 몇 가지 필요합니다.

 

1. 동일한 확률분포를 가져야한다.

2. n이 충분히 커야 한다.

(여기서 n은 Xn의 n이 아니고 n개 추출했을 때의 n입니다.)

 


이산형 분포의 이항 분포, 포아송 분포, 기하 분포

 

연속형 분포의 균일 분포, 지수 분포, 감마 분포

 

이렇게 6가지 분포에 대하여 중심 극한 정리를 이용하여 그래프를 그려보겠습니다.


그래프를 그리는 방식은 다음과 같습니다.

 

0. R 프로그램을 사용할 수 있는 툴을 연다. (ex. Rstudio, Jupyter notebook,...)

 

1. 해당 분포의 자료 생성

 

2. 표본의 크기를 바꿔가며 자료를 생성

 

3. 표본 평균 계산

 

4. 시뮬레이션 1000회 반복

 

5. 하나의 그래프에 표본의 크기만 다른 분포를 겹쳐 그려 비교한다.


우선 이산 확률 분포인 이항 분포를 예시로 하여 위의 5가지 과정을 수행한 코드를 먼저 보겠습니다.

 

sol)

 

binomCLT = function(n){                           #중심 극한 정리 함수를 만들어줍니다.
  
  mean = c()                                           #표본들의 평균을 저장해줍니다.
  
  for(i in 1:1000){                                      #반복 횟수를 지정해줍니다.
    
    mean = c(mean, mean(rbinom(n, 10, 0.6))) #이항 분포의 표본 평균을 구하여 각 반복의 표본 평균을 저장해 줍니다.
                    #여기서 rbinom(n, 10, 0.6) 함수는 표본의 크기가 n 일 때 X~b(10, 0.6)의 자료를 생성해내는 함수입니다.
    
  }
  
  return(mean)                                          #CLT함수 내의 표본 평균을 불러내옵니다.
  
}

 

여기서 다른 확률 분포의 그래프를 그리고 싶다면

binomCLT, rbinom(n, 10, 0.6) 두 부분만 바꿔주면 됩니다.

 

이항분포 rbinom(n, m, p) (m=size, p=prob)
포아송분포 rpois(n, x) (x=lambda)
기하분포 rgeom(n, p) (p=prob)
균일분포 runif(n, p) (p = prob)
지수분포 rexp(n,p) (p=rate)
감마분포 rgamma(n, k, θ) (k=shape, θ=scale)

binomCLT 부분은 그래프에 나타는 이름 때문에 바꾸는 것입니다.

이 부분을 바꿔 주셨다면 밑의 그래프 코드 부분도 바꿔주셔야 합니다 *v*


이제 위의 함수를 통해서 표본 평균들이 구해졌습니다.

 

이제 이 표본 평균들을 이용하여 확률 밀도 함수 그래프를 그려보겠습니다.

 

그래프를 그리기 위해서 맨 윗줄에

 

par(mfrow=c(2,3)) 이 코드를 입력해주세요

 

그래프를 그리는 작업을 하기 위한 코드입니다. 처음 한 번만 작성하시면 됩니다.

 

이제 표본을 크기를 달리하며 그래프를 그려보겠습니다.

 

plot(density(binomCLT(5)), ylim=c(0,3))                  # 표본의 크기 : 5

 

lines(density(binomCLT(10)),col='blue')                  # 표본의 크기 : 10

 

lines(density(binomCLT(20)),col='red')                    # 표본의 크기 : 20

 

lines(density(binomCLT(50)),col='green')                 # 표본의 크기 : 50

 


위의 그림을 보면 표본의 크기가 커질수록 정규분포와 근사한 모양을 띈다는 것을 알 수 있습니다.

 

비슷한 방식으로 다른 6가지 확률 분포에 대하여 같은 방식으로 그래프를 그려보았습니다.

 

왼쪽 위부터 순서대로 이항 분포, 포아송 분포, 기하 분포, 균일 분포, 지수 분포, 감마 분포입니다.

 

이산, 연속과는 상관없이 n이 커지면 정규분포에 가까워지는 것이 보입니다.

 

반응형
Posted by dooooh
,