베이즈 통계(번외): Monte Carlo simulation

SAMSUNG CSC

마르코프 체인(Markov Chains)과 몬테카를로 시뮬레이션(Monte Carlo simulation)의 원리를 알면 MCMC 알고리즘에 대한 접근이 보다 수월하다. 이 두 가지 중 몬테카를로 시뮬레이션이 더 근본적인 측면이라고 생각되니 그것부터 먼저 소개한다.

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

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

베이즈 통계까지 아울러서 말한다면 , 몬테카를로 시뮬레이션은 추리 통계의 원리들을 사용하여 미지의 양(unknown quantity)를 추정하는 하나의 방법이다. 여기서 추리 통계의 원리란 모집단으로부터 무작위로 표본을 추출하는 과정을 말한다. 몬테카를로 시뮬레이션의 핵심은 무작위 표본추출(random sampling)이다. 무작위 표본은 모집단을 잘 대표하고 있기 때문에 그 표본의 통계값(statistics)은 모수(parameters)에 대한 좋은 추정값이 된다. 특히 실제로 표본조사를 반복하지 않고 컴퓨터 시뮬레이션만으로 모수 추정이 가능하기 때문에 아주 편리한 방법이다. 이 때문에 몬테카를로 시뮬레이션은 수학적 계산을 통해서 구하기 어렵거나 구하기 불가능한 어떤 값(모수)을 추정하는데 널리 사용되고 있다.

구체적으로 몬테카를로 시뮬레이션을 살펴보자. 우리가 구하려고 하는 양(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

이산확률분포의 평균과 분산을 추정하는 공식은

이 공식을 이용하여 모집단의 평균과 분산을 추정하면 평균은 2.64명, 분산은 1.2명이다. 이렇게 공식을 사용하여 구할 수 있으면 몬테카를로 시뮬레이션을 통한 추정이 불필요할 것이다. 여기서는 몬테카를로 시뮬레이션이 모수를 어떻게 추정하는지 그리고 얼마나 잘 추정하는가를 보기 위해 공식을 이용해 모수를 계산해 두었다.

크기가 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

모수가 2.64인데, 표본평균이 2.4이니 그다지 나쁘지 않은 추정값이다.

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

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

이렇게 얻은 추정치는 위에서 공식으로 추정한 모평균 2.64명, 모분산 1.12에 근사할 것이다.

오늘날 난수표와 손을 사용해서 난수를 구하는 경우는 없을 것이다. Random.org에 가면 손쉽게 원하는 난수(random digits)를 얻을 수 있고, MS Excel[함수 RAND()]을 이용해도 손쉽게 난수를 구할 수 있다. 조건이나 함수를 부여하면 다양한 모습의 난수가 발생된다. MCMC도 몇 가지 조건 아래에서 난수를 발생시켜서 사용한다. 몬테카를로에 대한 설명은 이 정도로 마치겠다. 몬테카를로 하면 조건부 난수 발생(random number generation)을 통한 시뮬레이션을 떠올리면 되겠다. (2020-11-19)

참고문헌

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

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

댓글 남기기

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

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.