(Bayes 학습)(9) Monte Carlo simulation

SAMSUNG CSC

몬테카를로(Monte Carlo) 시뮬레이션을 공부하기 위해 30년 전 대학원에서 사회통계학을 배울 때 쓰던 교과서를 펼쳤다. 섹션 제목이 빨간 색연필로 둘러져 있다. “몬테카를로 방법은 크게 유용할 것입니다.”라는 Miller McPherson 교수의 목소리가 생생하게 들리는 듯하다.

통계학에서 몬테카를로 시뮬레이션은 무엇보다 우리가 구하려고 하는 확률변수의 표집분포(sampling distributions)를 특정하는데 사용된다. 즉, 확률변수의 표집분포가 지닌 평균과 표준오차를 구하는데 사용된다.

우리가 구하려고 하는 양(quantity)을 확률변수 의 기대값, 즉, 으로 놓자. 그리고 의 분포로부터, 독립적이고 무작위로,  (표본의 크기가 )을 생성하여, 다음 식처럼 그 값들의 평균을 취하여  의 추정치로 삼는다.

통상 는 확률변수 의 함수이다.  이 평균을 계산할 수 있는 양이면 몬테 카를로를 적용할 수 있다. 몬테 카를로 시뮬레이션의 핵심적인 논리적 기반은 대수의 법칙(the law of large numbers)이다. 수학적으로 아래와 같이 표현할 수 있다.

즉, 이 무한대가 될 때(표본 추출을 무한히 반복할 때) 오차의 절대값이 0일 확률이 1이다. IID(independent and identically distributed: 동일한 분포라는 말은 표본의 각 개별적인 관찰이 동일한 평균과 분산의 모집단을 갖는다 의미. 복원추출을 하면 그 조건을 만족하게 됨) 표집에서  은 확률변수이며, 그 자체가 평균과 분산을 가지고 있다.

의 평균은  이고, 의 분산(variance)은  이다(여기서 은 표본의 크기이다).  중심 극한 정리(CLT)로부터, 우리는 오차 가 평균이 0이고, 분산이  인 정규분포에 근사함을 안다. 오차의 크기는 표본의 갯수가 아니라 표본의 크기에 달려 있다. 표본의 크기가 5()인 표본을 100번 뽑는 대신 표본의 크기가 20()인 표본을 100번을 뽑으면 오차가 줄어들고 추정이 더욱 정교해진다. 동일한 크기의 표본()을 100번이 아니라 1,000번을 뽑으면 표집분포가 더욱 매끄러워질 뿐, 추정이 더욱 정교해지지는 않는다. 오차와 분산은 추정의 정교함(precision)을 알려준다. 몬테카를로 표집에서 오차 제곱의 평균은 인데, 를 아는 경우가 거의 없으므로 표본값들로부터 추정한다. 아래 둘 중 어느 것으로 추정해도 된다.

혹은,

(이상은 Stanford 대학교 통계학과의 Art Owen 교수가 인터넷에 올려놓은 책 원고의 제2장(Simple Monte Carlo)을 크게 인용하였다.)

Wonnacott & Wonnacott(1985)의 Introductory Statistics(4th ed.)에 나온 사례를 가지고 직접 몬테 카를로 시뮬레이션을 수행해서 모집단의 평균()과 분산()을 추정해보자.

미국의 미들타운(Middletown)이라는 도시에 살고 있는 18세부터 24세까지의 젊은이 100명에 대해 그들이 희망하는 가족의 크기를 추정해보자. 다음 표는 실제 조사 결과를 보여준다.

                                         모집단 분포
                                                                                        상대빈도
x 빈도 p(x) 일련번호
0

1

2

3

4

5

6

7

2

6

49

22

15

3

2

1

.02

.06

.49

.22

.15

.03

.02

.01

01-02

03-08

09-57

58-79

80-94

95-97

98-99

100

N = 100 1.00

크기가 5명인 표본을 뽑아서 모수를 추정해보자. 난수표(table of random digits)를 이용해서 100 이하의 수를 무작위로 뽑았더니, 77, 94, 30, 05, 39이다. 그것을 일련번호로 삼아서 그에 해당되는 희망 자녀수를 위의 표에서 찾아보면, 3, 4, 2, 1, 2이다.

일련번호 희망 자녀수 X
77

94

30

05

39

3

4

2

1

2

이제 동일한 방법으로 5명의 표본()을 반복해서 뽑는다. 표본을 뽑을 때마다 평균()을 계산한다. 예컨대 이렇게 1천번을 반복하면 우리는 1,000개()의 를 얻게된다. 여기서 의 의미가 이중적이 됨에 유의할 필요가 있다. 은 개별 표본(5)의 크기가 아니라 표본의 갯수(1,000)이면서 동시에 평균()들로 구성된 표본(그것이 바로 표집분포를 구성한다)의 크기(1,000)이다. 아래 공식처럼 1,000개 의 평균을 계산하면 의 추정치()를 얻는다.

그런 다음 분산 은 아래 식을 가지고 추정할 수 있다.

오늘날 난수표와 손을 사용해서 몬테카를로 시뮬레이션을 하는 경우는 없을 것이다. Random.org에 가면 손쉽게 원하는 난수(random digits)를 얻을 수 있고, SPSS와 같은 통계 패키지도 몬테카를로 시뮬레이션 기능을 제공하고 있다. 자, 몬테카를로에 대해서는 이 정도로 학습하고 다음에는 MCMC(Markov Chain Monte Carlo)에 대해 알아봐야겠다.

참고문헌

Owen, Art. 2009-2013. Chapter 1-2. 책 초고.

Wonnacott, Ronald J. & Thomas H. Wonnacott. 1985. Introductory Statistics, 4th ed. John Wiley & Sons.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다