베이즈 통계(13): 모수추정과 MCMC

베이즈 추론은 매력적이다. 하지만 아무리 매력적이라도 실제로 사용할 수 없다면 그림의 떡이 아니겠는가? 아래 베이즈 정리를 보자.

베이즈 추론에 있어 우리의 목표는 좌변에 있는 조건부 확률(분포) 를 구하는 것이다. 즉, 데이터 를 관찰했을 때 퍼라미터 가 참일 확률을 구하는 것이 미션이다. 그런데 이 무수하게 존재하면 그것은 분포로 나타내야 하고 그 분포를 목표 분포(target distribution)라고 부르는데, 그 목표분포를 구하는 것이 미션이 될 것이다. 베이즈 정리인 식(1)은 우리가 알고 있는 정보로부터 우리가 모르는 정보를 추정하게 해준다. 우변의 분자와 분모에 있는 를 모두 특정하면 좌변의 미지 정보 가 추정되는 것이다.

앞 포스팅들에서 사전확률(분포) 는 통계 자료나 선행 연구에서 구할 수 있고, 공액(conjugation)을 통해 우도 함수로부터 추정될 수도 있으며, 심지어 추측으로라도 추정될 수 있다고 했다. 그리고 우도(함수) 도 관찰된 자료가 있고, 그 자료의 분포를 추측할 수 있으면 추정될 수 있음을 보았다.

문제는 분모에 들어 있는 정규화 요인(주변확률) 이다. 때로 그것은 통계 자료로부터 구할 수 있고, 이산확률변수인 경우 해당 결합확률들을 합해서 도출될 수도 있다. 그러나 연속확률변수인 경우 적분 계산을 해야하는데, 적분해야 할 분포함수가 고차원이거나 복잡한 경우에는 계산이 불가능하거나 너무 어렵다.

그래서 베이즈 통계학자들은 우변의 분모 없이 사후확률(분포)을 추정하는 방법을 찾아냈다.

식(1)의 우변에서 비정규화 상수인 분모를 빼면 식(2)와 같이 된다. 이는 사후확률이 사전확률과 우도의 곱에 비례한다는 식이다. 그렇게 해서 구한 사후확률은 정규화되지 않은 값이다. 그것은 합해서 0이 나오지 않는 값들이기 때문에 정확히 말하자면 우리가 구하고자 하는 확률이 아니다. 그러나 추정 과정에서, 만약 식(1)의 우변이 두 개가 있고 그것을 나누어 비례를 구하는 계산이 들어간다면 그 골치아픈 분모는 자연히 소거되어 버릴 것이다.

자, 식(2)의 우변에서 관찰 데이터는 고정되어 있고, 사전확률는 손 댈 수 없으니 무슨 방법이 있을까? 사후확률분포로 눈을 돌릴 수밖에 없다. 거기에서도 데이터 는 고정되어 있으니 무언가 손을 쓸 수 있는 것은 퍼라미터 밖에 없다. 다행히 베이즈 통계에서 는 불변 상수가 아니라 확률변수이다. 무수한 가 존재할 수 있다는 말이다.

만약 로 구성된 목표분포로부터 표본을 추출할 수 있다면 몬테카를로 접근을 이용해서 목표분포를 근사해 낼 수 있을 것이다. 그런데 목표분포를 특정할 수 없다–당연히 그렇겠지만–면, 그것으로 부터 직접 표본을 추출할 수 없다. 그렇다면 간접적으로 표본을 추출할 수 있는 방법은 없을까? 그러한 고민 끝에 어렵사리 도달한 방법이 MCMC이다.

MCMC 과정

사실 우리가 베이즈 추론을 응용하는데 굳이 MCMC 과정을 이해하지 않아도 별로 문제가 되지 않는다. MCMC를 적용할 수 있는 컴퓨터 소프트웨어는 손쉽게 구할 수 있고 그것을 사용하면 별로 힘들지 않게 모수나 사후확률분포를 추정할 수 있기 때문이다. 하지만 모든 알고리즘이 그렇듯이 그 과정을 이해한다면 단순한 기계적 적용을 넘어서 보다 풍부하고 정확한 적용이 가능하고 그것이 지닌 함축성도 발견할 수 있을 것이다. 그리고 무엇보다 우리가 사용하는 컴퓨터 프로그램을 블랙박스로 놔눌 수는 없지 않는가.

MCMC를 한 마디로 표현하면, 시뮬레이션을 통해서 마치 실제로 사후확률분포로부터 추출한 것과 같은 많은 수의 모수(값)를 구하고, 그 값들로 이루어진 확률분포를 구성하는 작업이다. 그 분포가 우리가 궁극적으로 구하고자 하는 목표분포이다.

  • MCMC 시뮬레이션의 핵심은 무작위 추출(random sampling)이다. 일정한 절차를 거쳐 무작위로 표본을 추출하는 작업을 수없이 반복한다.
  • 여기서 무작위로 간주될 수 있는 일정한 절차란 무엇일까? 그 절차를 간략히 제시하면 다음과 같다.
    1. 사후확률분포를 상정한다. 공액을 이용하면 사전확률분포에 대한 정보로부터 사후확률분포의 유형이 추정될 수 있다. 물론 그 분포의 퍼라미터(값)은 모르지만 말이다. 사실 그 분포를 특정하는 것이 MCMC 시뮬레이션의 미션이다.
    2. 사후확률분포로부터 두 개의 모수(값)를 추출한다. 먼저 뽑은 모수를 현재 모수()라고 부르고, 두 번째 뽑은 모수를 제안된 모수()라고 부른다.
    3. 현재 모수제안된 모수 중 중 하나를 선택하여 저장한다.
    4. 매 반복시행(iteration)이 끝날 때마다 그렇게 선택된 모수가 다음 반복시행에서 뽑게 되는 두 개의 모수 중 하나가 된다.
  • 위 반복시행을 어느 상태에 도달할 때까지 계속 한다. 그것이 수 만번이 될 수도 있다.
  • 그렇게 해서 저장된 수많은 모수들을 가지고 확률분포를 작성한다. 그것이 우리가 궁극적으로 구하려고 하는 목표분포(사후확률분포)이다.
  • 그 확률분포를 요약한다.

이상이 최대한 간략히 묘사된 MCMC 시뮬레이션이다. 다시 정리해 보면 매 반복시행마다 사후확률분포로부터 무작위로 두 개의 모수 값을 뽑은 다음 그 중 하나를 선택하여 남기는 방식을 수없이 반복해서 엄청나게 큰 표본을 만든다. 그런데 가장 단순한 무작위 추출은 사후확률분포로부터 한꺼번에 두 개의 모수 값을 뽑아서 그 중 하나를 저장하는 방법일 것이다. MCMC는 조금 더 정교한 방법으로 두 개의 모수 값을 추출하고 약간 복잡한 방법으로 그 중 하나를 선택, 저장한다.

그 무작위 절차의 각 단계를 좀 더 구체적으로 살펴보자.

  • 사후확률분포를 무엇을 근거로 상정하는가? 이는 초기값, 즉, 최초의 추측(initial guess)에 관한 문제이다. MCMC 시뮬레이션이 시작되기 위해서는 시작점(starting point)이 있어야 한다. 그 시작점은 단순한 추측일 수도 있고, 정보에 근거한 추측일 수도 있다. 처음부터 사후확률분포의 유형을 알고 거기에서 초기값을 추출하면 목표분포에 빨리 도달할 수 있겠지만, 처음에 사후확률분포에 대한 정보가 없는 경우도 많다. 그러나 사후확률분포에 대한 정보가 없어도 목표분포에 도달할 수 있다. 한 동안의 반복시행 결과는 초기값의 영향을 받을 것–이 기간을 burn-in period라고한다–이다. 그러나 그 기간을 지나고 나면 목표분포를 따르는(즉, 목표분포에서 추출된 것과 같은) 표본이 형성된다.
  • 현재 모수는 어떻게 추정되는가? MCMC 알고리즘이 작동하는 첫 번째 시행(iteration)에서는 한 개의 모수를 임의로 정한다(대개의 경우 관찰된 데이터나 데이터 분포, 그리고 공액 사전분포를 참고해서 추측된다). 두 번째 반복시행부터는 이전 반복시행에서 선택해 저장한 모수가 그 반복시행의 현재 모수가 된다.
  • 제안된 모수는 어떻게 추정되는가? 현재 모수를 중심(중앙값 혹은 평균)으로 갖는 대칭적인 분포(symetric distribution)를 상정하고, 그 대칭분포로부터 무작위로 어떤 모수(값)를 추출하면 그것이 제안된 모수이다.
  • 현재 모수와 제안된 모수 중 하나를 선택하는 방법은 무엇인가? 이 부분이 조금 복잡하다. 먼저 알려져 있거나 우리가 믿고 있는 사전확률분포를 가지고 현재 모수와 제안된 모수 각각에 대한 사전밀도(prior density)를 구한다. 또한 현재 모수와 제안된 모수가 진실이라는 전제로 우리 손에 쥔 데이터를 관찰할 확률, 즉, 각각의 우도(likelihood)를 구한다. 이 사전확률밀도와 우도를 곱하면, 공식 (2) 버전의 베이즈 정리에 따라 비정규화된 사후밀도(unnormalized posterior density)가 추정된다. 현재 모수에 대한 비정규화된 사후밀도에 대한 제안된 모수에 대한 비정규화된 사후밀도의 비율을 구한다. 이렇게 하면 골치 아픈 정규화 상수가 소거된다. 그렇게 해서 이동확률()을 구한다. 제안된 모수의 사후밀도가 현재 모수의 사후밀도보다 크면, 즉, 이동확률이 1보다 크면 제안된 모수를 선택하여 저장한다(제안된 모수로 이동한다). 만약 제안된 모수의 사후밀도가 현재 모수의 사후밀도와 같거나 작으면 둘 중 하나를 확률적으로(probabilistically) 선택하여 저장한다(제안된 모수로 이동할 것인지가 확률적으로 결정된다). 여기서 ‘확률적으로’를 실제로 구현하는 방법은, 0과 1 사이의 균일분포에서 하나의 값을 무작위로 추출한 다음, 그 값과 이동확률을 비교한다. 만약 이동확률이 그 무작위 값보다 크면 이동한다(즉, 제안된 모수를 선택, 저장한다). 만약 이동확률이 그 무작위 값보다 작으면 이동하지 않는다(즉, 현재 모수를 선택, 저장한다).
  • 모수의 어떤 값에 수렴되면 시뮬레이션이 끝난다. MCMC는 우리가 표본을 얻고자 하는 목표분포(target distribution)를 정상분포(Stationary Distribution)로 가지는 마르코프 연쇄를 만드는 것이다. 매 반복시행에서 저장해 놓았던 모수들 중 burn-in 기간의 모수를 버리면 나머지 모수들은 목표분포에서 추출된 것으로 간주될 수 있다. 그것들로 분포를 그리면, 그것이 바로 우리가 구하고자 하는 추정된 사후확률분포이다. 그리고 그 분포를 요약하면 모든 과정을 마치게 된다.

이 과정을 보면, 무작위 추출(random sampling)이 결정적인 요소이다. 그래서 알고리즘의 이름에 몬테카를로(Monte Carlo)가 들어가 있다.

이 과정에는 두 가지 속성이 필요하다. 하나는 각 반복실행의 모수 선택에는 바로 이 전 반복실행에서 구한 모수만이 영향을 미친다는 점이다. 그보다 이전 단계에서 어떤 모수들이 구해졌는가는 전혀 고려되지 않는다는 말이다.

다른 하나는 시뮬레이션이 한없이 계속되거나 어느 단계에서 인위적으로 끝내서는 안되며, 각 반복실행에서 구해진 값이 어느 모수(진실한 모수, true parameter라고 추정된다)에 수렴될 때 시뮬레이션이 멈추어야 한다.

이 두 가지 속성을 가진 수학 모형이 마르코프 연쇄(Markov Chain)이다. 마르코프 연쇄는, 확률변수(random variable)가 어떤 상태(state)에 도달할 확률이 오직 바로 이전 시점의 상태(state)에 달려 있으며, 정칙 마르코프 연쇄(regular Markov chain)는 변화가 멈추는 정상상태(stationary state)를 갖고 있다.

그래서 이 알고리즘의 이름이 Markov Chain Monte Carlo (MCMC)로 붙여졌다. MCMC를 구현하는데는 현재 여러가지 알고리즘이 나와 있다. 위에 제시한 설명은 그 중 메트로폴리스 알고리즘(Metropolis algorithm)을 기준으로 한 것이다.

상어공격 문제 사례를 가지고 살펴보자. 이 사례는 Donovan & Michey (2019)에서 인용하였다. 대양에 인접한  한 지역에 상어가 출현하여 사람을 공격하는 문제이다.

연간 상어공격의 평균빈도를 구한다고 하자. 이는 포아송 분포의 퍼라미터를 추정하는 문제이다. 는 연간 상어공격의 평균 빈도이다. 이론적으로 는 0에서 무한대까지의 값을 가질 수 있다.

사전확률분포로 감마 분포를 채택한다. 그것은 가설들에 대한 확률밀도를 나타낸다. 어떤 가설에 대한 확률밀도 값이 클수록 그 가설에 대한 우리의 확신도 크다. 이전의 조사를 토대로 다음과 같은 사전확률분포를 설정하였다고 하자.

그리고 금년에는 5회의 상어공격이 목격되었다.

1 단계: 사후확률분포로부터 임의 값 하나를 뽑아 첫 번째 값을 제안한다. 그 값을 라고 하자. 3.100은 그냥 임의의 값이다.

2 단계:

  • 그 가설이 진실일 때 5회의 상어공격을 관찰할 우도(likelihood)를 계산한다. 아래와 같이 포아송 분포의 pdf를 적용하면 될 것이다.

  • 다음, 사전확률분포에서 3.100과 결합된 확률밀도를 구한다. 감마확률밀도함수를 적용한다.

여기서 x 대신 를 집어넣는다.

위에서 식(2)에 각 값을 대입해서 비정규화된 확률밀도를 구한다.

이제 이 값을 라고 부른다.

3단계:

두 번째 값을 제안한다. 의 현재값(, 3.100)을 중심으로 하는 대칭적 분포를 상정하고 그 분포로부터 무작위로 숫자 하나를 뽑는다. 이 사례에서는 대칭적 분포로 이고, 인 정규분포를 적용한다. 여기서 미세조정 퍼라미터(tuning parameter)라고 부른다. 무작위로 뽑아서 제안한 값이 이라고하자.

4단계:

에 대한 사후밀도를 구한다. 2단계와 동일한 방식을 적용하면 된다. 먼저 우도를 구하고, 사전확률밀도를 구한 다음, 두 값을 곱하면 된다.

이 사후확률밀도를 라고 부르자.

우리의 두 가설에 대한 사후확률밀도는 다음과 같다:

다음은 이 둘 중 하나를 버려야 한다. 어느 값을 가질까? 첫 번째 값인 에 남을까 아니면 두 번째 값인 으로 옮겨갈까?

메트포폴리스(Metropolis) 알고리즘은 두 값 중 두 번째 값으로 옮겨갈 확률을 계산하는 공식을 다음과 같이 규정한다.

6단계:

균일분포, 로부터 무작위수 하나를 뽑는다. 그렇게 뽑은 수가 위의 옮겨갈 확률 값보다 작으면, 로 갈아탄다. 0.8204이 뽑혔다고 하자. 그 수가 0.7019보다 크니 를 수용한다.

7단계: 3.100을 두 번째 시행의 로 받아서 위의 절차를 수천 혹은 수만 번 반복한다. 매 시행 때마다 수용된 값을 기록한다.

8단계: 각 시행에서 수용된 값들을 분포의 형태로 나타내고, 그 분포를 요약한다.

아래 표는 Donovan & Michey(2019)의 202쪽에서 전재하였다. MCMC를 10회 시행한 결과를 정리한 것이다.

데이터(data)와 사전확률(prior)은 매번 같지만, 사후확률(posterior)은 매번 바뀌고 있다. 사후확률에서 가 무작위성(randomness)이 들어가는 부분이다. 알고리즘을 시작할 때 를 사후확률분포에서 무작위로 뽑았으며(혹은 임의로 정했으며), 를 중심()으로 하는 대칭분포(여기서는 , 인 정규분포)에서 무작위로 추출한 수이다. 때문에 사후확률 는 베이즈정리(위에서 식 (2))를 이용하여 계산되었지만 무작위성을 지닐 수밖에 없다.

의사결정 과정에서도 무작위성이 한 번 들어간다. 모수(가설)를 람다를 선택할 때 기준으로 작용하는 요소가 균일분포 에서 무작위로 추출한 수이다. 결국 MCMC 수행과정에서 조건부 무작위 추출이 세 번 들어갔다.

이렇게 다소 복잡한 시뮬레이션을 통해서 통계학자들은 사후확률분포를 모르면서 사후확률분포로부터 수많은 모수를 추출하여 사후확률분포를 특정하는 모순(?)을 해결했다. 사후확률분포로부터 모수를 추출한다는 말은 배우는 학생들을 혼란스럽게 만들기 충분하다. 사후확률분포를 모르는데 어떻게 그것으로부터 모수를 추출한다는 말인가? 더구나 베이즈 추론을 통해서 궁극적으로 구하려고 하는 것이 사후확률분포가 아니던가. 베이즈 통계학자들은 몬테카를로 시뮬레이션마르코프 연쇄라는 열쇠를 가지고 베이즈 추론이라는 마법의 문을 열었다. (2020-11-21)

베이즈 통계(번외): Markov Chains

(이 글은 몇 년 전에 포스팅한 (Bayes 학습)(6)마르코프 연쇄-(1)와 (Bayes 학습)(7)마르코프 연쇄-(2)을 합쳐서 재포스팅한 것임. 마르코프 연쇄에 관해서는 (Bayes 학습)(8) 마르코프 연쇄-(3)라는 글이 하나 더 있음)

학부나 대학원 수업에서 나는 마르코프 연쇄(Markov chains)에 관해 배운 적이 없다. 다만 대학원 재학시절 범주형 데이터 분석(categorical data analysis)을 혼자 공부하면서 책에서 스쳐 지나가듯이 읽었을 뿐이다.

그것은 나와는 전혀 관계가 없을 지식이고, 그것을 몰라도 내가 평생 동안 사회학자로서 사는 데 문제가 되리라 예상되지 않았다. 사회학에서는 횡단적 데이터(cross-sectional data)를 다루지 종단적 데이터(longitudinal data)는 거의 다루지 않는다. 그래서 경제학과는 달리 수업에서 시계열 데이터 분석(time-series data analysis)을 별로 가르치지 않는다. 그러니 마르코프 연쇄가 나의 관심에서 벗어나 있었던 것은 전혀 놀랍지 않다.

그러나 세월이 변했다. 지난 수십 년 동안 마르코프 연쇄는 온갖 분야에서 그것의 유용성을 드러냈다. 예컨대 구글의 검색 알고리즘인 페이지 랭크(PageRank)가 마르코프 모형을 사용하고 있고, 데이터 과학에서 마르코프 연쇄는 빼놓을 수 없는 부분이다. 오늘날 마르코프 연쇄 몬테카를로(Markov Chain Monte-Carlo, MCMC) 방법 없는 베이즈 추론은 상상하기 어렵다. 그것은 인공지능(Artificial Intelligence)의 원리인 기계학습(machine learning)에도 응용되고 있다. 이 정도면 데이터과학을 공부하는 학도가 마르코프 연쇄를 제대로 이해해야 함은 이론의 여지가 없어 보인다.

마르코프 연쇄는, 확률변수(random variable)가 어떤 상태(state)에 도달할 확률이 오직 바로 이전 시점의 상태(state)에 달려 있는 경우를 가리킨다. 만약 한 인터넷 사용자가 어떤 웹페이지에 있을 확률이 그 사람이 바로 직전에 어떤 웹페이지에 있었는가에 달려 있다면 인터넷 사용자의 웹페이지 방문은 마르코프 연쇄 모형을 따르고 있다고 말할 수 있다. 또 어떤 시점에서 한 청소년이 부모와 어떤 관계를 갖고 있는가가 그 바로 직전 시점에서 그 청소년이 부모와 어떤 관계를 갖고 있는가에 달려 있다면(더 이전에 그 청소년이 부모와 어떤 관계를 갖고 있었는가는 무시해도 될 정도라면), 청소년과 부모와의 관계는 마르코프 연쇄 모형을 따른다고 말할 수 있다.

마르코프 연쇄를 이해하는 가장 기본적인 개념은 상태(state), 추이(transition), 추이행렬(transition matrix), 추이도형(transition diagram), 의사결정 나무(decision tree), 정상 마르코프 연쇄(stationary Markov chain) 등이다. 그리고 행렬대수(Matrix algebra)에 관한 지식이 다소 필요하다.

마르코프 연쇄는 확률변수의 상태 변화(혹은 추이)에 대한 모형이다. 상태(state)는 물리적 위치, 심리적 상태, 재정적 상태, 경제적 상태, 정치적 상황, 시장 점유율, 사회적 관계 등 어떤 것이든 가리킬 수 있다. 그리고 특정 변수가 가질 수 있는 모든 상태를 상태 공간(state space), 변화가 멈춘 상태를 정상 상태(steady state 혹은 stationary state)라고 한다.

유튜브에 올라온 강의(Patrick JMT)의 사례를 가지고 살펴보자. 오렌지 쥬스(Brand A)를 생산하는 어떤 기업이 광고 캠페인을 전개해서 시장 점유율을 높이고자 한다. 광고를 시작하기 전 Brand A의 시장 점유율이 20%이고, Brand A에 관한 광고를 보고 어떤 사람이 계속 Brand A를 구입할 수도 있고, 다른 Brand 제품(Brand A’라고 하자)을 구입할 수도 있을 것이다. 어떤 사람은 다른 브랜드 제품을 사용하다가 광고를 보고 브랜드 A로 전환할 수도 있고, 그냥 그 브랜드 제품을 계속 사용할 수도 있을 것이다. 광고를 보고 브랜드 A를 마시던 사람이 계속 브랜드 A를 마실 확률이 0.9이고, 다른 브랜드 제품으로 갈아탈 확률이 0.1이며, 다른 브랜드 제품을 마시던 사람이 브랜드 A를 마시게 될 확률이 0.7이고, 그냥 기존의 브랜드 제품을 마실 확률이 0.3이라고 하자.  바로 그것이 소위 추이 확률(transition probability)로 표현된 광고의 효과이다. 이를 행렬로 표시하면,

이  행렬은 광고를 시작하기 전 오렌지 쥬스 시장에서의 Brand A(A)와 여타 제품(A’)의 시장 점유율을 나타낸다. (참고: 행렬 안에는 숫자만 들어가지만, .2와 .8이 무엇을 나타내는가를 보여주기 위해 A와 A’을 넣어서 표시했다. 다음에는 이라고만 표시하겠다.)

이 를 추이 행렬(transition matrix)라고 부른다. 그것은 광고의 효과를 나타내는 확률이기 때문에 광고 기간 동안 동일하다고 가정할 수 있을 것이다. (참고: 이 행렬에도 행(row)과 열(column)이 무엇을 나타내는가를 보여주기 위해 행렬 안에 A, A’를 넣었다. 행은 시작하는 상태를, 열은 도달하는 상태를 나타낸다. .9는 A가 A로 바뀌는(사실 A가 그대로 남는 경우) 확률, .1은 A가 A’으로 바뀌는 확률, .7은 A’가 A로 바뀌는 확률, 그리고 .3은 A’가 A’로 바뀌는 확률을 가리킨다. 이제 간단히 로만 표시하겠다.)

만약 매주 광고 효과를 시장점유율로 측정한다면, 광고가 나간 1주 후 Brand A의 시장점유율은 어떻게 될까? 그것은 아래와 같이 계산할 수 있다.

일주일 후 Brand A의 시장 점유율은 74%이다! 광고를 하고 일주일만에 시장점유율이 20%에서 74%로 오른 것이다. 그 다음 일주일 후에는 시장 점유율이 어떻게 될까?

84.8%가 되었다! 광고 효과가 여전히 놀랍다. 그렇다면 머지않아 Brand A는 오렌지 쥬스 시장을 싹쓸이 할 수 있을까?

광고 후 3주일째 Brand A의 오렌지 쥬스 시장의 점유율은 어떻게 될까? 아래 식에서 보는 것처럼 86.96%이다.

시장 점유율이 여전히 증가하고 있으나 첫 두 주만큼 인상적이지는 않다. 광고효과가 동일하다고 가정하면 광고 후 4주부터 10주째까지 Brand A의 오렌지 쥬스 시장의 점유율은 각각 아래와 같이 예상된다.

Brand A의 시장점유율은 광고 후 5주차에 87.50%(반올림한 결과)에 도달한 이후 10주차까지 미세한 증가가 있으나 반올림하면 여전히 87.50%이다! 즉, Brand A의 시장점유율은 광고 후 5주차에 거의 불변상태에 도달할 것으로 예상된다(이는 대단히 흥미 있는 현상이다). 따라서 Brand A의 시장점유율은 광고 후 초반의 급속한 증가에도 불구하고 그 증가 속도가 빠르게 감소되되기 때문에 결코 100%에 도달하지 못할 것으로 판단된다.

이 사례는 마르코프 연쇄에 있어 정상 상태(steady state, stationary state, invariant state)가 존재함을 보여준다. 마르코프 연쇄에서 정상 상태에 도달하는 과정을 정상 상태에 수렴한다(convergence)고 표현한다.

그렇다면 모든 마르코프 연쇄가 정상 상태의 특성을 갖고 있는가? 그것은 아니다. 추이행렬(transition matrix)이 정칙(regular)인 마르코프 연쇄(그것을 정칙 마르코프 연쇄, regular Markov chains라고 부른다) 같이 특정한 유형의 마르코프 연쇄만이 그러한 속성을 갖고 있다. 어떤 추이행렬의 거듭제곱한 결과가 오직 양의 원소(only positive entries)만을 지닌 행렬일 때 그 추이행렬은 정칙이다.

정칙 마르코프 연쇄는 다음과 같은 속성을 갖는다.

(1)   (는 정상 행렬, 는 추이행렬)   이 공식으로 정상 행렬(stationary matrix)을 구할 수 있다.

(2) 초기 행렬  에 어떤 값이 주어지든 상태 행렬들(state matrices) 는 정상 행렬 에 수렴된다.

(3)추이행렬의 거듭제곱  는 하나의 극한 행렬(limiting matrix) 에 수렴한다. 의 각 행(row)은 정상 행렬 와 같다.

 공식을 이용해서 위 광고의 정상 행렬을 구해보자.

이 식을 과 에 관해서 풀면 다음 두 식을 얻는다.

 —–(1)

 —–(2)

그리고  —–(3)

(1)식과 (2)식 중 하나와 (3)식을 가지면 과 를 구할 수 있다. (1)과 (3)을 가지고 풀자.

(3)의 양변에서 를 빼면, 

이 것을 (1)에 대입하면,

양변에서 를 더하고 0.9를 우변으로 옮기면,

양변을 0.8로 나누면,

 이 된다. 이 값을 (3)에 대입하면, 이 구해진다. 이 값들로 행렬을 구하면,  이다. 이를 소수로 전환하면 이다.

위에서 일일히 행렬 계산을 통해서 구했던 정상 행렬이 공식을 사용해서 훨씬 쉽게 구해졌다. 정상 행렬(stationary matrix). 정상 상태(stationary state), 정상 분포(stationary distribution)라는 개념들은 MCMC에 응용된다. (2020-11-19)

베이즈 통계(번외): 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.

베이즈 통계(12): 모수추정과 신용구간

빈도주의 통계에서 표본 통계(sample statistics, 대개의 경우 표본평균)에 신뢰구간(confidence interval)을 붙여 수행하는 구간추정(interval estimate)이 있듯이 베이즈 통계에도 모수를 구간으로 추정하는 구간추정이 있다. 그런데 베이즈 추정에서는 모수의 점추정값(parameter point estimate)을 중심으로 신용구간(credible interval)을 잡아서 구간추정을 수행한다.

베이즈 추론을 통해서 추정된 퍼라미터를 얼마나 신뢰할 수 있을까? 베이즈 추론의 신용구간을 사용하면 95% 확신을 갖고 퍼라미터가 특정 구간 안에 있다고 주장할 수 있다.

예컨대 어떤 도시에 신생아의 몸무게 분포에 관해 실험을 실시하고 있다고 하자. 신생아의 몸무게 β가 2.8kg부터 3.5kg 사이 어딘가일 주관적 확률이 90%라고 한다면, 는 하나의 90% 신용구간이라고 말할 수 있다. 또한 어떤 사람의 통계학 기말 성적에 대한 95% 신용구간이 70~80점이라는 말은, 그 사람의 성적이 70~80점 사이에 있을 확률이 95%라는 의미이다.

빈도주의 통계에서는 신뢰구간(confidence interval)이 그 역할을 한다. 신뢰구간은, 우리가 100번 표집을 뽑아서 100개의 신뢰구간을 구하면, 그 중 95개가 그 안에 퍼라미터를 포함하고 있음을 의미한다. 퍼라미터는 고정되고 변하는 것은 신뢰구간이니 그런 결과가 나온다.

베이즈 추론에서 신용구간(credibile interval)은 빈도주의 통계의 신뢰구간과 달리 직접적으로 우리가 추정한 특정한 퍼라미터가 신용구간 내에 있을 가능성이 95%라고 주장할 수 있게 된다.

데이터 가 주어졌을 때,  관찰되지 않은 확률변수 의 값을 추정하려고 한다고 하자. 추정된 사후분포에서 다음 조건을 만족하는 구간 를 구할 수 있. 는 유의수준이다.

이 구간이 확률변수 X에 대한 신용구간(credible interval)이다.

베이즈 신용구간은 다음과 같이 정의된다. 관찰값 가 주어졌을 때, 만약 관찰되지 않은 확률변수 X의 사후확률이 구간  안에 존재할 확률이 이라면, 구간 을 확률변수 X에 대한 신용구간(credible interval)이라고 부른다.

그런데, 동일한 신뢰수준의 신용구간은 하나가 아니다. 그래서 최고사후밀도구간(Highest Posterior Density Interval, HPDI)–간략히 최고밀도구간(Highest Density Interval, HDI)라고도 함–을 사용한다.

가 확률변수 X의 밀도함수라고 하자. 그렇다면 HDI(다차원의 경우 HDR, Highest Density Region)는 다음을 만족하는 X의 표본공간의 부분집합 이다.

여기서 는 아래를 만족하는 최대의 상수이다.

예컨대 아래 그림의 각 분포는 95% HDI를 보여주고 있다. 이므로 인 수평선을, 양쪽 그래프의 아래와 위의 면적을 합한 값이 그래프 전체 면적의 95%가 될 때까지 끌어올리면 그 선이  이다. 분포곡선의 양쪽 경계에 해당되는 X 값의 범위, 아래 그림에서  (첫 번째 분포), (두 번째 분포), (세 번째 분포)가 각 분포의 95% HDI이고, 그 구간을 표시하는 양화살표선이 에 해당되는 선이다. 예컨대 첫 번째 그래프에서 양화살표선의 화살표 끝과 분포 곡선이 만나는 점이 이다.

HDI는 정의상 두 가지 특성을 갖는다.

첫째, 단봉분포(unimodal distribution)의 경우 HDI 구간 안에 있는 모든 점들의 사후분포함수 값들은 그 구간 밖에 있는 모든 점들의 사후분포함수값들보다 항상 크다.

둘째, HDI는 가장 짧은 길이의 신용구간이다.

신용구간은 모수 추정에 사용되지만 앞 포스팅에서 소개한 베이즈 인자(Bayes fractor)처럼 가설검정에도 적용된다. 어떤 학자는 베이즈 인자보다 신용구간이 모집단 혹은 모수에 관해 훨씬 풍부한 정보를 준다고 주장한다(Kruschke, 2013).

그런데 신용구간은 베이즈 인자보다 구하기가 어렵다. 베이즈 인자와 달리 사후분포가 구해져야 하기 때문이다. 사후분포가 특정됐다는 것은 사후분포의 퍼라미터들이 구해졌음을 함축한다. 신용구간은 사후분포에서, 주어진(혹은 선택한) 가능성(혹은 그럴듯함, plausibility: 빈도주의 통계에서 신뢰수준에 해당됨) 수준을 대표하는 값들의 범위이다. 주어진 가능성 수준은 모수가 그 범위 안에 들어갈 확률을 가리킨다.

예컨대 95% 가능성(plausibility)을 선택하면 95% 신용구간, 90% 가능성을 선택하면 90% 신용구간을 구한다. 신용구간은 사후분포를 구성하는 값들 중 가장 가능성이 높은(그럴듯한, plausible) 값들만 포함한다. 가능성이 높다는 말은 가장 높은 확률(혹은 확률밀도)을 갖는다는 의미이다. 예를 들어 90% 가능성이란 확률(혹은 확률밀도)가 확률이 높은 순으로 상위 90%에 해당되는 범위가 신용구간이다. 그리고 진짜 모수가 그 범위 안에 들어갈 확률은 90%이다.

신용구간을 좀 다르게 정의해 사용하기도 한다. 빈도주의 통계의 신뢰구간처럼 좌우 꼬리 부분이 동일 확률( equal probability) 를 갖게 하는 방법도 있다. 등꼬리 신용구간(equal-tailed credible interval)이다.

이 등꼬리 신용구간은 HDI에 비해 계산하기 쉽다는 장점을 가지고 있다. 그러나 좌우대칭의 단봉분포가 아닌 비대칭적 단봉분포나 쌍봉분포의 경우에는 신용구간을 가지고 한 분포에서 신뢰할만한 값들을 보여주겠다는 의도에 잘 맞지 않은 속성을 나타내는 약점이 있다(Kruschke, 2015).

신용구간이나 HDI는 먼저 사후분포를 특정해야 계산이 가능하기 때문에 컴퓨터 프로그램을 사용하지 않고는 추정이 거의 불가능하다. 예를 들어 우리나라에서 밤에 8시간 이상 자는 대학생들의 비율(θ)에 관심이 있다고 하자. 한양대학교로부터 27명의 학생을 무작위로 추출하여 물어보았더니 그 중 11명의 학생들이 밤에 8시간 이상 잔다고 응답했다. 이 확률변수는 다음과 같은 이항분포를 따른다.

θ에 대한 사전확률분포가 라면, 공액을 이용해서 사후분포를 구하면 다음과 같다.

이제 θ에 대한 90% 신용구간을 구해보자. 우리는 그것을 폐쇄 형식(closed form)으로 계산할 수 없다. Beta 분포에 대한 확률 계산은 아래와 같이 복잡한 적분을 포함하고 있기 때문이다.

그런데, Beta 함수의 확률밀도함수는 아래와 같으므로,

는 다음과 같은 함수이다.

대학생들의 야간 수면 시간에 관한 간단한 의문을 푸는데 이렇게 복잡한 함수를 계산해야 한다! 실질적으로 계산이 불가능한 것이다. 그래서 우리는 MCMC라는 방법을 가지고 신용구간을 근사적으로 추정한다(approximate). R을 사용하면 신용구간을 쉽게 구할 수 있다. 실제로 R을 사용하여 추정한 θ의 90% 신용구간은 (9.256, 0514)이다. 이제 MCMC와 R(혹은 Python)이 필요한 시간이다.

참고 문헌

Kruschke, John K. 2013. “Bayesian Estimation Supersedes the Test.” Journal of Experimental Psychology, General, vol.142, no.2: 573-603.

——. 2015. Doing Bayesian Data Analysis. Academic Press.

베이즈 통계(11): 가설검정과 베이즈 인자

가설검정은 현대 과학에서 표준적인 연구 절차의 중요한 일부이며, 진리 발견의 주요한 방법 중 하나이다. 베이즈 통계에서는 그러한 가설검정을 어떻게 수행할까?

빈도주의적 가설검정에서는 영가설과 대립가설을 설정하고 영가설이 기각되면 대립가설을 취하고 영가설이 기각되지 않으면 영가설을 채택한다. 비록 영가설이 실제 의미를 갖기보다는 가설 검정의 도구라는 측면이 강하기는 하지만, 논리적으로 영가설과 대립가설은 상호배타적(exclusive)이어야 하며, 영가설과 대립가설의 구분은 포괄적(exhaustive)이어야 한다. 집합적으로 설명하자면, 가설의 집합은 오직 영가설과 대립가설이라는 두 가지 원소로 구성되어 있으며, 영가설과 대립가설의 교집합은 공집합이다.

빈도주의 통계에서는 z-값, t-값, -값과 같은 검정통계량(test statistics)을 계산하고, 그것을 가지고 p-값을 구한 다음, 설정한 p-값이 신뢰수준(통상 95%)의 유의수준(, 통상 0.05)보다 작으면 영가설을 기각하고 그보다 크면 영가설을 채택한다.

빈도주의 통계와 달리 베이즈 통계는 사전확률로 시작해서 사후확률로 끝난다. 영가설과 대립가설 각각의 사전확률, 우도, 사후확률을 구한 다음 그 크기를 비교하여 두 값의 크기에 따라서 두 가설 중 하나를 선택한다. 빈도주의 통계의 검정통계량과 유사한 역할을 하는 것이 베이즈 인자(베이즈 요인이라고도 부름, Bayes factor)이다. 베이즈 인자를 구한 다음 그 값의 크기에 따라 영가설과 대립가설 중 하나를 채택한다. 베이즈 요인은 약간 다른 세 가지 방식으로 정의될 수 있다. 어떤 방식으로 구하든 값은 동일하다.

1) 대립가설에 대한 영가설의 사후확률의 비–사후교차비(odds ratio)–를 계산하고, 대립가설에 대한 영가설의 사전확률의 비–사전교차비(odds ratio)–를 계산한 다음, 사후교차비를 사전교차비로 나눈 값이 영가설을 지지하는 베이즈 인자의 정의이다. 다음과 같이 기호로 표시할 수 있다.

영가설의 사후확률을 , 대립가설의 사후확률을 이라고 하고, 영가설의 사전확률을 , 대립가설의 사전확률을 이라고 하자.

사후교차비: ,    사전교차비:

그러면 베이즈 요인은,

2) 영가설에 대해 사전확률에 대한 사후확률의 비율(영가설에 대한 지지도)을 구하고, 대립가설에 대해 사전확률에 대한 사후확률의 비율(대립가설에 대한 지지도)을 구한 다음, 그 지지도의 비율이 베이즈 인자이기도 하다. 앞 포스팅, 베이즈 통계(10)에서 가설에 대한 지지도를 논리적으로 사용하였다.

3) 베이즈 인자는 대립가설에 대한 영가설의 우도비로도 정의된다.

Jeffreys(1961)는 영가설(H0)을 지지할 때의 베이즈 인자값들을 아래 표와 같이 제시하였다(정윤식 2018: 112에서 재인용).

H0 의 지지도 정도
   0 to 1/2   1 to 3.2 쉽게 판단하기 어려움
   1/2 to 1   3.2 to 10 조건부적으로 지지
   1 to 2   10 to 100 강하게 지지
   > 2   > 100 결정적으로 지지

이면, 데이터가 H0 을 지지하지 않으므로 H1을 채택한다.

앞 포스팅에서 사용한 사례를 가지고 가설 검정을 해보자.

(변수의 정의)

확률변수 X: 교육수준(이산변수). , x: 대졸 미만  x2 : 대졸 이상

영가설과 대립가설을 구성하기 위해 교육수준의 범주를 두 개로 축소하였다.

확률변수 Y: 소득 수준(이산변수). , y1 : 100만원 미만, y2 : 100~200만원 미만, y3 : 200~300만원 미만, y4 : 300~400만원 미만, y5 : 400~500만원 미만, y6 : 500만원 이상

(사건의 정의)

조건 사건(data): 소득이 월 500만원 이상이다

가설 사건(hypothesis):

만약 교육수준이 학력수준을 예측 가능하게 하는 확률변수라면, 어떤 사람이 가장 높은 소득계층에 속한다면, 그는 대졸 이상일 가능성이 높다. 반면에 그가 대졸 미만일 가능성이 낮다. 그렇다면 영가설(H0)과 대립가설(H1)은 다음과 같이 제시될 수 있을 것이다.

H0 : 그의 교육수준이 대졸 미만이다.    H1 : 그의 교육수준이 대졸 이상이다.

학력과 소득의 결합확률표

대졸 미만 대졸 이상 합계
100만원 미만 0.0693 0.0070 0.0763
100~200만원 미만 0.1366 0.0246 0.1612
200~300만원 미만 0.2125 0.0507 0.2632
300~400만원 미만 0.1347 0.0433 0.1780
400~500만원 미만 0.1235 0.0486 0.1721
500만원 이상 0.0845 0.0647 0.1492
합계 0.7611 0.2389 1.00

(2016년 안산시 사회조사 자료)

  • 영가설의 사전확률()과 대립가설의 사전확률():

  • 영가설의 우도()와 대립가설의 우도():

  • 분모(결합확률의 합)

  • 영가설의 사후확률()과 대립가설의 사후확률():

  • 사후교차비를 사전교차비로 나눈 값:

  • 영가설의 사후확률 대 사전확률 비(지지도)와 대립가설의 사후확률 대 사전확률 비(지지도):

  • 우도비(Likelihood ratio):

세 가지 다른 방식으로 베이즈 인자를 구했는데, 그 값이 모두 0.41로 동일하다. 영가설에 대한 베이즈 인자 값이 1보다 작으므로 대립가설을 채택한다.

베이즈 추론에서 베이즈 인자에 기초한 베이즈 모형 비교가 가설검정의 유일한 방법은 아니다. 신용구간을 사용하는 베이즈 모수 추정도 가설검정에 사용될 수 있으며 베이즈 인자 접근보다 풍부한 정보를 제공한다. 다만 신용구간은 베이즈 인자에 비해 계산이 복잡하다. (2020-11-13)

베이즈 통계(10): 가설 검정에 있어 빈도주의와 베이즈 접근의 차이

빈도주의 통계의 가설 검증은 다음과 같은 표준적인 절차를 거쳐서 이루어진다. 1) 연구에서의 작업 가설(working hypothesis)을 검증 대상의 대립 가설(alternative hypothesis)로 설정한다. 2) 대립 가설을 우회적으로 검증하기 위한 영가설(null hypothesis)을 설정한다. 3) 데이터를 수집한다. 4) 영가설을 검증한다. 영가설이 기각되면, 대립가설을 수용하고, 영가설 기각에 실패하면, 대립가설 대신에 영가설을 수용한다.

“가설(hypothesis)은 연구에서 검증될 기본 진술이다. 가설은 전형적으로 두 변수 간의 관계를 진술한다. 가설은 이런 두 변수 간의 관계를 예측하기 때문에 검증가능해야 하며, 또한 이런 예측이 옳은 것인지 그른 것인지는 검증한 결과를 토대로 결정할 수 있어야 한다. 가설은 반드시 명확하게 검증 가능해야 하며, 애매하지 않게 서술되어야 한다.” 그리고 인과적 가설의 경우 원인을 독립변수로, 결과를 종속변수로 정한다. 그리고 그 변수들 사이의 관계는 단순히 “관계가 있다”라고 진술하기 보다는 관계의 방향성(부적인가 정적인가)을 진술하는 편이 훨씬 풍부한 연구 결과를 낳을 수 있다고 본다(Babbie, 2007: 70).

빈도주의 통계에서는 가설은 통상 ‘독립변수(원인) –> 종속변수(결과)‘라는 구조를 갖고 있다. 예컨대 “교육을 많이 받을수록 소득 수준이 높을 것이다.” 여기서 독립변수는 교육 수준이고, 종속변수는 소득 수준이다.

가설은 변수의 특성에 따라서는 조금 다르게 표현될 수도 있다. 예를 들어 성별처럼 범주가 2개인 질적 변수의 경우, “여성이 남성보다 페미니즘을 지지할 가능성이 더 높을 것이다”와 같은 가설이 제시될 수 있다. 여성과 남성이라는 두 범주를 비교하여 예측하는 방식인 것이다.

빈도주의 접근에서 영가설은 독립변수가 종속변수에 영향을 미치지 않는다(관계가 없다)는 명제의 형식을 갖고 있다. 영가설은, 실제로 그러한 믿음이 존재해서 제시된 가설이라기보다는 연구자의 관심사인 대립가설을 검증하는 도구로서의 성격이 강하다.

항상 그런 것은 아니지만 이상이 빈도주의 통계에 있어 가설의 전형적인 모습이다. 기존의 통계학에 익숙한 연구자들은 ‘가설’이라고 하면, 누구나 그러한 모습의 가설을 떠올리게 마련이다. 베이즈 통계에서도 가설이라는 용어가 사용된다. 문제는 베이즈 통계와 빈도주의 통계에서 가설이 지닌 뉘앙스가 좀 다르다는 데 있다. 베이즈 통계에서는 빈도주의 통계에서 당연한 것으로 받아들이는 ‘전형적인’ 가설의 모습이 일반적이지 않다. 이것은 기존의 사회과학 연구에 익숙한 연구자가 베이즈 통계를 배우면서 부딪치게 되는 심각한 개념적 혼란을 초래한다.

베이즈 통계에서 가설은 ‘독립변수 = 특정한 값‘이라는 명제가 더 일반적이다. 독립변수가 어떤 특정한 값을 갖는다는 명제가 가설로 제시되는 경우가 흔하다는 말이다. 가설에 종속변수가 들어있지 않는 것이다!

사실 베이즈 추론에서는 독립변수나 종속변수라는 용어를 잘 사용하지 않는다. 베이즈 통계에서는 흔히 연구자가 어떤 사회 현상의 원인을 추정(예측)하고, 데이터를 사용해 검증한다. 그 추정된(혹은 예측된) 원인이 가설이다. 여기에도 기존 사회과학방법이나 통계학을 배운 사람들이 빠지기 쉬운 함정이 있다. 베이즈 통계에서는 빈도주의 통계와 예측이 반대로 이루어지는 경우가 많다. 종속변수를 예측하는 것이 아니라 독립변수를 예측하는 것이다.

예컨대 페미니즘에 대한 태도와 성별의 관계를 연구한다면, 원인(독립변수)이 되는 변수가 성별이므로 “성별이 여성이다” 혹은 “성별이 남성이다”가 가설이 된다. 데이터(여기서는 페미니즘에 대한 태도)가 수집되기 전에 연구자가 독립변수에 대해 가지고 있는 정보나 믿음(사전확률)이 수집된 데이터를 검토하고서 그 정보나 믿음을 수정한다면, 그것은 데이터에 사용된 확률변수(종속변수)와 가설에 사용된 확률변수(독립변수)가 상호 관계가 있음을 함축한다.

베이즈 통계에서는 인과적 관계나 상관 관계에 대한 진술 없이 그냥 어떤 현상을 예측(추정)하는 가설을 검증하기도 한다. 몇 가지 예를 보자.

어떤 동전이 공정한가 아니면 뒷면이 더 무거운 지를 조사한다면, 가설은 다음과 같이 설정될 수 있다.

H0: 동전이 공정하다(fair).          H1: 동전의 뒷면이 무겁다.

전자담배에 건강에 해롭다는 경고문을 부착하는 것이 건강에 대한 염려를 높이는가에 대해 연구한다면, 다음 세 가지 가설을 고려할 수 있을 것이다.

H0: 경고 부착이 염려에 영향을 미치지 않는다.    H1-1: 경고 부착이 염려를 높인다.     H1-2: 경고 부착이 염려를 낮춘다.

여기서는 내용적으로 볼 때 경고 부착 여부가 독립변수이지만, 가설에서 사용될 때는 변수로 쓰이지 않고 있다. 가설들을 보면 건강에 대한 염려라는 현상(종속변수)만을 세 가지로 예측하고 있다.

어떤 감시 시스템이 감시 대상 시설에 침입자가 있는 경우 경보를 울려야 한다면, 이 때 필요한 가설은 아래와 같다.

H0: 칩입자가 없다.          H1: 침입자가 있다

비슷한 경우가 되겠지만, 센서가 수집한 정보를 가지고 화재 경보를 울려야 하는 경보시스템이 있다면, 센서가 어떤 징후를 감지한 다음 화재 경보를 울리려면 그 시스템은 다음 가설들 중 하나를 선택을 하는 판단을 내려야 할 것이다.

H0: 불이 났다.          H1: 불이 나지 않았다

빈도주의 통계에서는 이와 같은 가설들이 그다지 자주 사용되지 않지만 베이즈 통계에서는 흔히 볼 수 있는 유형들이다. 평생 빈도주의 통계를 사용해 왔던 연구자들이 베이즈 통계에 입문하려면 가설에 대해 유연한 개념을 가질 필요가 있다.

교육이 소득에 미치는 영향을 베이즈 통계를 가지고 연구한다고 하자. 우선 교육수준과 소득수준은 확률변수이다. ‘어떤 사람이 대학 졸업자일 것이다’는 베이즈적 가설의 예가 된다. ‘어떤 사람이 고졸자일 것이다’, ‘어떤 사람이 무학일 것이다’는 베이즈 추론에서 모두 교육수준에 관해 타당한 가설이다.

베이즈 추론에서는 ‘어떤 사람의 소득이 월 500만원 이상이다’, ‘어떤 사람이 고급 외제 승용차를 갖고 있다’, ‘어떤 사람이 서울 강남에 30평대 아파트를 소유하고 있다’는 소득수준에 관한  타당한 데이터가 된다.

만약 어떤 사람의 교육수준에 대한 믿음(추측)이 그 사람의 소득수준을 보고 난 뒤에 바뀌었다면 교육수준이 소득수준과 관계가 있음을 함축한다고 해석하는 것이다. 어느 사회나 구성원들의 학력 통계가 있다. 성인 인구 중 학력별 인구비율이 공개되어 있다. 예를 들어, 전문대 졸업 이상이 50%, 고졸이 30%, 고졸 미만이 20%이다. 어떤 성인 남자의 학력에 대해 추측하는데 그 사람에 대한 정보가 아무것도 없다면, 그 사람이 전문대 이상의 학력을 가졌을 확률은 0.5라고 추정될 것이며, 고졸일 확률은 0.3, 고졸 미만일 확률은 0.2가 될 것이다. 그런데 어떤 경로로 그 사람의 월수입이 5백만원이 넘는다는 사실을 알게 되었다. 그 때 그사람이 전문대 졸업 이상의 학력을 가졌을 확률은 더 이상 0.5라고 추정될 수는 없고 그 확률을 0.7 정도로는 올려야 할 것이다. 만약 실제로 그렇다면 연구자는 소득수준이 학력수준에 상당히 달려있다고 추정할 것이다.

만약 그 사람이 고급 외제 승용차를 탄다는 사실을 알게 되도 마찬가지로 그가 전문대 졸업 이상을 학력을 가지고 있을 것이라는 확률을 0.6이나 0.7정도로 올려야 할 것이다. 마찬가지로 그 사람이 강남에 30평 이상의 아파트를 보유하고 있다는 사실을 알게 되도 마찬가지일 것이다. 어떤 사람의 소득수준 혹은 생활수준이 높으면 우리가 그 사람에 대한 정보가 전혀 없을 때보다 그 사람이 전문대졸 이상의 학력을 가졌을 확률을 훨씬 높게 볼 것이다. 한 사람의 소득 수준(생활 수준)을 결정하는데 있어 학력이 중요한 요인이라고 믿기 때문이다.

베이즈 추론은 이러한 논리를 따른다. 데이터를 보기 전에 가지고 있는 믿음(사전확률, prior)이 데이터를 보고나서 그 믿음이 달라졌는가(사후확률, posterior)를 따져서 사회에 존재하는 법칙을 발견하는 통계적 방법이다.

<신호와 소음>에서 네이트 실버(Nate Silver)는 베이즈 추론의 이러한 특성을 다음과 같이 표현한다.

“나는 예측을 가설검증의 한 형태, 또는 단순하게 말해 진리를 발견하는 수단이라고 생각한다. 베이즈 정리에 따르면 예측은 기본적으로 정보처리 활동의 한 유형, 즉, 새로 나타난 자료를 이용해서 세상에 대해 더 진리에 가깝고 더 정확한 개념을 찾아나가는 과정이다. (실버, 2014: 395, 강조는 원저자의 것).”

예제를 가지고 좀 더 체계적으로 베이즈 추론을 살펴보자. 사람들의 교육수준이 그들의 소득수준을 결정짓는 요인인가를 조사한다고 하자.   

베이즈 추론에서는 먼저 변수와 사건을 정의한다.

(변수의 정의)

확률변수 X: 교육수준(이산변수). , x1 : 중졸 이하, x2 : 고졸, x3 :  전문대졸, x4 :  대졸 이상

확률변수 Y: 소득 수준(이산변수). , y1 : 100만원 미만, y2 : 100~200만원 미만, y3 : 200~300만원 미만, y4 : 300~400만원 미만, y5 : 400~500만원 미만, y6 : 500만원 이상

(사건의 정의)

가설 사건(hypothesis): 학력이 대학 졸업 이상이다

조건 사건(data): 소득이 월 500만원 이상이다

(문제) 어떤 사람의 소득이 월 500만원 이상일 때, 그 사람이 대학을 졸업했을 확률은? 전문대학을 졸업했을 확률은? 고졸일 확률은? 중졸 이하일 확률은? 베이즈 추론에서는 어떤 사람의 소득이 월 500만원 이상이라는 데이터가 주어졌을 때 그 사람이 특정한 수준의 교육을 받았을 가능성을 사전확률과 사후확률의 형태로 구해서 비교하여 교육수준과 소득수준의 관계를 검증한다.

다음 표는 2016년 경기도 안산시청이 수행한 실제 사회조사 자료로부터 가져왔다. 학력과 소득의 교차표이다. 설문조사 표본의 크기는 2,842명이다. 이 중 대졸 이상이 679명, 전문대졸이 436명, 고졸이 1,242명, 중졸 이하가 124명이다. 무작위 표본이니 이 데이터는 안산시 성인 인구를 잘 대표하고 있다고 본다.

데이터: 학력과 소득의 교차표(안산시 사례)

중졸 이하 고졸 전문대졸 대졸 이상 합계
100만원 미만 121 58 18 20 217
100~200만원 미만 119 219 50 70 458
200~300만원 미만 124 366 114 144 748
300~400만원 미만 52 237 94 123 506
400~500만원 미만 40 220 91 138 489
500만원 이상 29 142 69 184 424
합계 485 1242 436 679 2842

(2016년 안산시 사회조사 자료)

이 교차표에서 각칸의 빈도를 총합계(2,842)로 나누면 아래와 같은 결합확률표가 생성된다. 각 칸의 빈도를 총합계로 나누는 것은 각 칸의 빈도에 대한 정규화(normalize) 값을 구한다고 표현할 수 있다. 합계를 정규화한 값들은 주변확률이고, 나머지 각 빈도를 정규화한 값들은 결합확률(혹은 동시확률이라고 부름)이다. 각 열의 결합확률을 모두 더하면 그 열의 주변확률이 나오고, 각 행의 결합확률을 모두 더 하면 그 행의 주변확률이 나온다. 주변확률은 고딕체로 표시되어 있다.

학력과 소득의 결합확률표

중졸 이하 고졸 전문대졸 대졸 이상 합계
100만원 미만 0.0426 0.0204 0.0063 0.0070 0.0764
100~200만원 미만 0.0419 0.0771 0.0176 0.0246 0.1612
200~300만원 미만 0.0436 0.1288 0.0401 0.0507 0.2632
300~400만원 미만 0.0183 0.0834 0.0331 0.0433 0.1780
400~500만원 미만 0.0141 0.0774 0.0320 0.0486 0.1721
500만원 이상 0.0102 0.0500 0.0243 0.0647 0.1492
합계 0.1707 0.4370 0.1534 0.2389 1.00

(2016년 안산시 사회조사 자료)

이 표에서 가장 왼쪽 상단의 확률 값 0.0426은 학력 확률변수의 중학교 이하와 소득 확률변수의 100만원 이하가 동시에 발생하는 확률, 즉, 결합확률이다. 부호로 다음과 같이 표시된다.

이 결합확률은 곱셈법칙에 의하면, 조건부확률과 주변확률의 곱이다.

이를 베이즈 통계의 용어로 표현하면, 우도(likelihood) 곱하기 사전확률이다. 앞 부분이 우도이고 뒷부분이 사전확률이다.

어떤 사람의 소득이 월 100만원 이하일 때 그의 학력이 중졸 이하일 확률을 구한다고 하자. 그것은 다음과 같이 표시되는 사후확률이다.

이 사후확률은 베이즈 정리에 의하면 다음과 같은 식으로 구해진다.

우도사전확률(가설의 주변확률)을 곱해서 구한 결합확률을 정규화 상수인 (데이터의) 주변확률로 나누면 사후확률이 구해진다. 그런데 베이즈 추론에서 그 주변확률이 이 표에서처럼 주어지는 경우는 드물다. 그래서 보통 해당 열(중졸 이하의 열)의 결합확률을 모두 더 해서 구한다. 부호로 표시하면 아래와 같다.

중졸 이하의 주변확률은 해당 열의 결합확률을 모두 더한 값인 0.1707이다. 그것이 여기서 정규화 상수이며, 베이즈 정리에서 분모에 해당된다.

따라서 식 (1)을 다음과 같이 말로 풀 수 있다. 어떤 사람의 소득이 100만원 이하일 때 그 사람이 중졸 이하의 학력을 가졌을 확률은, 소득이 100만원 이하라는 사건과 학력이 중졸이하라는 사건의 결합사건의 확률(결합확률)을 중졸 이하라는 열의 주변확률(혹은 결합확률의 합)로 나누어 준 값이다.

원래 문제로 돌아가자. 어떤 사람의 소득이 월 500만원 이상일 때 그 사람이 대학을 졸업했을 확률은? 문제를 조건부 확률로 표시하면 다음과 같다.

베이즈 정리에 의하면, 이 사후확률은 우도(사후확률의 역확률이다)와 사전확률(가설의 주변확률)의 곱을 데이터의 주변확률로 나누어 주면 구해진다. 식으로 표기하면 다음과 같다.

여기서 가설은 ‘학력이 대졸 이상이다’. 따라서 가설의 주변확률은 다음과 같다.

데이터는 ‘소득이 500만원 이상이다’. 따라서 데이터의 주변확률은 다음과 같다.

사후확률의 역확률인 우도는 ‘대졸 이상일 때 소득이 500만원 이상일 확률’이다. 그것은 다음과 같이 구해진다. ‘대졸 이상’과 ‘500만원 이상’의 결합확률을 ‘대졸 이상’의 주변확률로 나눈 값이다. 혹은 ‘대졸 이상’과 ‘500만원 이상’의 결합 빈도를 ‘대졸 이상’의 주변빈도로 나눈 값이다.

우도, 사전확률, 그리고 데이터의 주변확률 값을 모두 구했으니, 식 (2)에 대입하면 아래와 같다.

이를 확인하기 위해 빈도를 가지고 좌변의 사후확률을 바로 계산하면,

좌변과 우변의 값이 동일함을 알 수 있다.

대학졸업자의 경우 사전확률(0.2389)에 비해 500만원 이상의 비율이라는 조건(데이터)이 주어진 후 사후확률(0.4339)이 거의 두 배 가까이 높아졌다.

동일한 방식으로 500만원 이상의 소득을 올리는 사람이 전문대학을 졸업했을 확률, 500만원 이상의 소득을 올리는 사람이 고등학교를 졸업했을 확률, 그리고 500만원 이상의 소득을 올리는 사람이 중학교 졸업 이하일 확률을 구할 수 있을 것이다.

식 (1)에서 대신 차례로 을 넣어서 사후확률을 계산하면 된다.

전문대 졸업자의 경우는 사후확률(0.1629)이 사전확률(0.1534)에 비해 약간 높아졌랐다.

그런데 고졸자의 경우 사후확률(0.3351)이 사전확률(0.4370)에 비해 눈에 띄게 낮아졌으며,

중졸 이하의 경우 사후확률(0.0684)이 사전확률(0.1707)에 비해 절반 이하로 줄었다.

이상의 발견을 종합하면, 학력 수준이 소득 수준에 영향을 미치고 있음에 분명하다. 소득이 500만원 이상인 사람은 모집단의 학력 분포를 가지고 예측한 것보다 대졸 이상일 확률이 훨씬 높은 반면, 고졸이나 중졸 이하일 확률은 모집단의 학력 분포를 가지고 예측한 것보다 크게 낮다.

베이즈 접근을 이용하면, 동일한 데이터를 가지고도 빈도주의 접근과는 매우 다른 방식으로 학력 수준이 소득 수준에 미치는 영향을  발견할 수 있다. 빈도주의적으로 표현하면, 학력 수준이 올라갈수록 소득 수준이 올라간다는 가설을 검증할 수 있다. (교차표에서는 값을 구하고 그것의 값을 계산하면 영가설이 검증된다. 두 변수가 관계가 강하면 카이자승 값이 크고, 그것의 값은 0.05보다 훨씬 작을 것이다. 그러면 영가설이 기각된다.) 빈도주의 접근에서는 영가설이라는 테크닉을 사용해서 두 확률변수 사이의 관계를 발견하지만, 베이즈 접근에서는 자주 사전확률에 비해 사후확률이 얼마나 변화되는가를 보고서 두 확률변수의 관계를 추정하게 된다. 베이즈 추론의 결과인 사후확률은 사전확률과의 대비해서 해석되어야 한다.

물론 사전확률과 사후확률의 비교가 베이즈 추론에서 유일한 가설 검증 방법은 아니다. 데이터가 영가설 예측(지지)하는 정도와 대립가설을 예측(지지)하는 정도를 비교하는 방법으로도 가설 검증 혹은 가설 선택을 할 수 있다. (2020-11-10)

데이터과학, 베이즈 통계, 그리고 수학

요즘 내 고민 중의 하나는 데이터과학과 사회 통계를 인문사회과학도에게 어떻게 하면 쉽게 전달할까 하는 문제이다. 문제는 수학 지식이다.

그런데 데이터과학과 베이즈통계 등 최근에 대세가 되고 있는 분야를 아무리 둘러봐도 고등학생 시절 반에서 몇 등 정도 공부했던 인문사회과학도가 이해하지 못할 정도의 고난도 수학은 거의 없다. 문제는 세 가지라고 생각된다.

첫째, 수학적 사고에 익숙하지 못하다.수학적 사고에 익숙해지려면 주어진 문제나 자신의 생각을 자꾸 수학적으로 표현해 보아야 한다. 물론 그런 사고를 뒷받침할 수 있도록 수학 공부를 별도로 해야 하겠지만. 학교에서 이러한 습관을 길러주면 가장 좋겠지만, 개인적인 노력으로도 충분히 목표를 이룰 수 있다. 그런데 현실에서는 수학적 사고를 기르기는 커녕 일찍부터 수학에 문을 닫아버리는 경우가 너무 많다. 수학은 이공계 전공자들의 전유물이라고 간주해버리는 것이다. 

둘째, 어느 분야의 지식이라도 기꺼이 배우겠다는 적극적인 태도가 필요하다. 인문계니 자연계니 하는 것은 편의적 구분일 뿐이다. 현실 문제에서 그런 구분이 어디 있겠는가? 현실 문제를 해결하는데는 인문적 사고도 필요하고 자연과학적 혹은 공학적 사고도  필요할 때가 부지기수이다. 인문-자연 구분은 창의적 발상과 효과적인 접근에 방해요소일 뿐이다. 문제는 해결하거나 못하거나 둘 중 하나이다. 문제가 접근하는 사람의 사정을 봐가면서 제기되지는 않는다.

셋째, 인문사회과학도가 알아들을 수 있을 만큼 친절한 강의가 필요하다. 언젠가는 인문사회과학도가 충분히 이해하고 즐길만한 데이터과학이나 베이즈 통계 교재가 나오겠지만 아직은 아닌 것 같다. 이점도 큰 장애요인 중 하나이다. 수학을 사용하되 인문학 혹은 사회과학적 접근을 유지하는 교재가 얼른 출간되면 좋겠다. 그런데 그게 그다지 전망이 밝지 않다. 그런 교재를 쓸 능력을 지닌 젊은 인문학자나 사회과학자는 다른 일에 바빠서 교재를 쓸 의사나 시간이 없고, 의사나 시간이 있는 노학자들은 데이터과학이나 베이즈 통계에 관한 교재를 작성하기는 커녕 새로운 학문을 소화하기조차 어렵다.

필자도 공부해보니 많이 어렵다. 수학 지식도 일천하고 수학적 사고도 별로 없는 사람이다보니 데이터과학이나 베이즈 통계에 대한 공부가 무척 어렵다. 교수직을 수행하면서 짬을 내어 공부하는 정도로는 너무 어려웠다. 다행히 일찍 교수직을 그만 둔 덕분에 시간이 좀 많아져서 집중 학습이 되니 배움의 속도가 확실히 빨라졌다. 효율성이라곤 하나도 없는 독학지만 좌충우돌하면서도 진전은 있다. 이제 공부의 9부 능선 정도는 올라가지 않았나 싶다. 사명감을 갖고 계속 전진하자. (2020-11-07)

베이즈 통계(9): 확률밀도, 연속확률분포, 공액사전분포, 퍼라미터 추정

퍼라미터 추정에 관한 사례를 하나 더 보자. 사전 약속 없이 일반인이 백악관에 들어갈 수는 없다. 그런데 아주 유명한 사람, 예컨대 전설적인 농구 선수인 샤킬 오닐(Shaquille O’Neal)이라도 그럴까? 사전 예약 없는 유명인이 백악관 입장에 성공할 확률을 묻는 질문이다.

실험의 결과가 성공과 실패 두 가지이고, 시행들이 상호독립적이라면, 앞 게시글에서 공부한 이항확률분포를 적용할 수 있으나 이항확률분포는 이산확률변수에만 적용된다. 우리가 다루는 성공 확률은 0부터 1 사이의 어떤 값도 취할 수 있기 때문에 연속확률변수(continuous random variable)이다. 성공 확률 자체가 확률변수인 경우 적절한 분포는 베타확률분포(Beta probability distribution)이다. 이항 분포에서는 성공의 횟수가 확률변수인데, 베타분포에서는 성공의 비율이 확률변수이다. 베타분포하면 야구선수의 타율을 떠올리면 좋다. 베타(beta)와 배트(bat)를 묶으면 기억하기 편하다. (베타분포에 관해서는 확률분포(6): 베타분포 를 참조하시오.)

이산확률변수에서 연속확률변수로의 확장는 심각한 도약이다. 그러나 그것은 반드시 건너야 하는 강이다. 그 강에 놓인 첫번째 허들은 확률밀도와 확률밀도함수라는 개념이다.

과연 섁(Shaq)이 예약없이 백악관에 들어갈 수 있을까? 이 질문에 대한 합리적인 대답은 그렇다 아니다라는 양자택일이 아니라 확률로 표현될 수 있을 것이다. 섁의 백악관 입장이 허용될 확률이 0.01이다, 0.001이다, 0.0001이다, 0.2다, 0.3이다, 0.5다, 0.7이다…0.9999 따위로 추정되는 것이 합리적이라는 말이다. 섁의 백악관 입장이 허용될 확률(성공확률)을 라고 표기하자. 보다 정확히 말하자면, 는 섁의 백악관 입장이 허용되는 것에 대한 우리 믿음(짐작)의 정도이다. 는 우리가 추정하려는 퍼라미터이다. 의 값은 무수히 많을 수 있다. 성공가능성이 전혀 없다는 믿음을 의미하는 0에서부터 100% 성공가능하다는 믿음을 의미하는 1 사이에 존재하는 무수히 많은 수가 모두 퍼라미터가 될 가능성이 있다는 말이다.

이산확률분포의 경우 확률함수는 이항확률분포에서 보았듯이 확률변수의 각 값에 대한 확률을 부여한다. 그런데 연속확률변수의 경우 아무리 작은 범위일지라도 확률변수 값은 무수히 많기 때문에 각 확률변수 값은 거의 0에 가까운 확률을 가질 것이다. 그렇다면 연속확률분포에서 특정한 확률변수 값의 확률은 0인가? 만약 0이라고 한다면 연속확률분포의 면적이 1이 되어야한다는 정의에 문제가 발생한다. 개별확률변수값의 확률을 모두 더하면 1이 되어야 하는데, 개별 확률변수 값의 확률이 0이라면 그 값들의 총합은 1이 아니라 0이 되어 버리는 것이다. 그래서 확률은 0에 아주 가깝돼 정작 0은 아니어야 한다. 그래서 확률밀도함수(probability density function)는 아래와 같이 정의되고 우변이 확률밀도이다.

확률밀도(probability density)는 확률(probability)과 구분하기 위해 물리학에서 밀도라는 개념을 차용하여 만들어진 개념이다. 이산확률분포에서 높이가 확률인 것처럼 연속확률분포에서는 높이가 확률밀도이다. 아래 그림에서 오른쪽 그래프는 이산확률분포의 확률가 높이임을 보여주고, 왼쪽 그래프는 연속확률분포의 확률밀도가 높이임을 보여주고 있다.  ( 대신 라는 적분 기호로 표시되어 있으나 둘 다 0에 가까울 정도로 아주 미세한 크기의 밑변을 가리킨다.)

Probability density function

연속확률함수에서  혹은 는 확률이 아니라 확률밀도이다. 즉, 는 확률변수 의 값이 일 때의 확률밀도이다. 연속확률분포에서는 이산확률분포에서 사용되는 의미의 확률이 없다고 생각해도 무방할 것이다. 연속확률분포에서 확률분포(함수)는 항상 확률밀도를 낳는다. 섁의 성공확률밀도를 베이즈 정리로 표현하면 아래와 같을 것이다. 아직 이 식을 다 이해하지 못해도 상관없다. 곧 설명될 것이다.

좌변은 우리가 추정하려고 하는 사후확률밀도(posterior probability density)이다. 분자와 분모에 파란 글씨로 된 부분은 사전확률밀도이고 빨간 글씨로 된 부분은 우도이다. 우도와 사전확률의 곱은 결합확률이며, 분모에 0부터 1까지의 적분은 해당된 모든 결합확률밀도를 합하라는 지시이다. 이산확률분포를 설명할 때 언급했듯이 분모는 전체 합인 주변확률을 1로 만들어 분수의 값을 확률로 만들어 주는 정규화 상수(normalizing constant)이다. 연속확률변수에서는 주변확률밀도를 1로 만들어 분수의 값을 확률밀도로 만들어 주는 정규화 상수이다. 이산확률변수에서는 가 합을 나타내지만, 연속확률변수에서는 이 합을 표현한다.

베이즈 추론에서 이산확률분포에서 연속확률분포로 넘어가는 두번째 허들은 사전확률의 설정이다. 연속확률변수이니 하나의 사전확률이 있을 수 없고 무수히 많은 사전확률밀도가 존재하니 사전 확률(prior)은 사전확률분포(prior probability distribution)로 제시되어야 할 것이다. 그런데 성공확률의 확률분포로 베타 분포가 사용되니 사전확률분포로 베타확률분포을 채택하면 되겠다. 사전확률밀도가 베타확률분포를 따른다는 명제는 다음과 같이 간략히 표현될 수 있다.

에 아래첨자 0을 붙인 것이 사전확률밀도임을 나타내기 위해서이다. 베타확률분포는 퍼라미터 의 크기에 따라 아래와 같이 다양한 모습을 갖고 있다. 사전확률분포의 모습을 결정하는 퍼라미터인  를 우리가 구하려고 하는 미지의 퍼라미터(unkown parameter)인 와 구분하기 위해 하이퍼퍼라미터(hyper-parameter)라고 부른다.

Beta distribution - NtRand

이렇게 다양한 베타분포 중 우리 문제에서는 어떤 것을 사전확률분포로 채택할까? 두 개가 후보로 떠오른다. 하나는 보라색 그래프인데 그것은 연속균일분포이다. 사실 베타분포에서 하이퍼퍼라미터의 값이 둘 다 1이면 연속균일분포이다. 그 그래프는 0과 1사이에서 확률변수의 확률밀도 값이 모두 동일하다는 의미이다. 앞 게시글에서 균일분포가 비정보적(non-informative) 사전확률을 나타내는데 가장 많이 사용된다고 설명했다. 그런데 베타분포의 경우를 보면 비정보적이라는 말이 상대적이어서 베타분포의 여러 모양 중 가장 비정보적이라고 할 수도 없음을 알 수 있다. 그래프 중 U자 모양인 빨간색 그래프는 하이퍼퍼라미터가 둘 다 0.5일 때이다. 그것은 확률변수의 값이 0에 근접할 때와 1에 근접할 때 확률밀도가 가장 크고, 그 사이 값들에서는 확률밀도가 유사함을 보여준다. 이 그래프는 섁과 같은 유명인은 백악관 출입이 항상 허용될 것이라는 믿음(확률밀도가 1에 가까움)과 섁과 같은 대단한 유명인이라도 백악관 출입은 초청이나 사전 예약 없이 불가능할 것이라는 믿음(확률밀도가 0에 가까움)을 함께 나타내주는 것으로 볼 수 있다. 사실 이 그래프도 균일분포에 못지 않게 비정보적이다. 이 문제에 관해 우리는 둘 중에 후자인 를 사전분포로 채택하겠다. 그것은 아래와 같은 그래프이다.

사전확률분포를 정했으니 이번에는 우도 값을 정해야 한다. 우리가 손에 쥐게 되는 데이터는 시행 중 성공횟수가 될 것이다. 즉, 섁이 한번 시도해서(), 백악관에 들어가는 데 성공하거나(), 실패할 것이다(). 즉, 우도 값은 한번 시도한다면 베르누이 분포, 여러 번 시도한다면 이항분포를 따를 것이다. 즉, 베르누이 분포나 이항분포를 가지면 우도를 계산할 수 있다. 문제는 퍼라미터()가 무한히 많은 수라는 사실이다.  하나의 사전확률이 아니라 사전확률분포가 주어졌을 때 우도를 계산해야 한다. 그래서 우도도 아래와 같은 이항확률함수로 된 확률밀도함수(probability density function, pdf)로 정의되어야 한다.

만약 우리가 얻은 데이터가 섁이 한번 시도해서 백악관에 들어가는 데 실패했다는 것이라면, 일 것이므로 이항확률함수는 아래와 같을 것이다.

이제 사전확률분포와 우도함수를 구했다. 이제 식 (1)에서 보듯이 사후확률밀도를 계산하려면 정규화 상수를 구해야 한다. 그런데 거기에 적분이라는 엄청난 복병이 숨어있다. 적분 계산을 통해서 정규화 상수를 구하는 것은 대단히 번거롭고 심지어 때로는 불가능하기조차 하다. 사실 그것은 오랫동안 베이즈 추론이 널리 사용되지 못한 이유이기도 하다. 그래서 학자들은 적분을 우회할 수 있는 길을 찾아냈다. 그것의 첫번 째가 공액이라는 기법이다.

공액(켤레라고도 부름, conjugacy)이란 사전확률분포를 우도함수와 동일 계열의 확률분포로 설정하는 것을 말한다. 공액으로 설정된 사전확률분포를 공액사전확률분포(conjugate prior probability distribution, 혹은 간단히 conjugate prior)이라고 부른다. 위의 백악관 출입 허가 문제에서는 베타-이항 공액(beta-binomial conjugate)이 적용되었다. 베타 사전분포(beta prior distribution)와 이항 데이터(binomial data)를 결합하면, 베타사후분포를 얻는다. 사전분포와 사후분포가 하이퍼 퍼라미터만 다른 베타분포인 것이다. 이 사례의 경우 미지의 퍼라미터에 대한 우리의 믿음이 데이터를 얻은 후 베타분포의 하이퍼퍼라미터가 달라지는 방식으로 업데이트된 것이다. 이를 공식으로 표현하면 다음과 같다.

우리가 사전확률분포로 가정한 베타분포의 하이버퍼라미터가 이다. 그런데, 섁이 한번 시도해서 실패했으므로, 이다.그러면,

사후확률분포는 아래 그림과 같은 베타확률분포가 될 것이다.

사전확률분포와 사후확률분포의 모습이 사뭇 다르다. 사전확률분포에서는 극단적인 확률변수 값들의 모두 큰 확률밀도(높이가 높음)를 보였으나, 섁이 백악관 진입에 실패했다는 데이터를 얻은 후에 구한 사후확률분포에서는 0쪽에 가까운 확률변수 값들의 확률밀도는 그대로나 1쪽에 가까운 확률변수 값들의 확률밀도는 크게 낮아졌다. 다시 말해 섁이 한번 실패한 후에는 유명인이 백악관에 사전 약속 없이 들어갈 수도 있다는 데 대한 우리의 믿음이 크게 떨어졌다.

공액 덕분에 사후확률분포를 충격적일 정도로 쉽게 구했다! 확률 계산이 항상 이렇게 쉬우면 좋으련만….

만약 우리가 사전확률분포로 을 택한다면, 사후확률분포가 어떻게 될까? 데이터는 동일하다고 하자. 사전확률분포는 균일분포 모습일 것이다. 그렇다면 사후확률분포의 모습은 어떨까? 하이퍼퍼라미터를 계산하면 아래와 같다.

그래프로는 아래와 같다.

사후확률분포가 사선이다. 확률변수 값이 0에 가까울수록 확률밀도가 커지고 1에 가까이 갈수록 확률밀도가 작아진다. 앞에서 구한 사후확률분포와 비교해 보면 확률변수 값이 0에 가까울수록 확률밀도가 커지고, 1에 가까울수록 작아진다는 점에서는 유사하지만, 확률변수 값이 중간 지대에 속할 때는 확률밀도가 좀 많이 다르다. 분명한 점은 동일한 데이터가 주어졌을지라도(즉, 동일한 우도일지라도) 우리가 선택한 사전확률분포에 따라 사후확률분포가 달라진다는 사실이다.

셱이 다시 두 번 더 백악관 진입을 시도했다가(), 결국 한 번 성공했다()고 하자. 그런데 만약 처음 진입을 시도했을 때와 같은 경비라면 시행이 독립적이라고 보기 어려울 것이다. 때문에 매번의 시도가 서로 독립 사건이라고 가정하자. 그러면 사전확률분포가 일 경우 사후확률분포의 하이퍼 퍼라미터는 아래와 같을 것이다.

결과는 마찬가지이겠지만, 한번의 시행으로 업데이트된 하이퍼퍼라미터를 새로운 시행으로 업데이트하는 식으로 접근할 수도 있다. 그러면 1차 업데이트된 하이퍼퍼라미터가 2차 업데이트에서는 사전확률분포의 하이퍼퍼라미터가 된다. 사전확률분포의 하이퍼퍼라미터는 다음과 같다.

이 하이퍼 퍼라미터를 새로운 데이터로 업데이트하면 아래와 같게 된다.

(3)과 (4)의 결과가 동일하다. 이 업데이트 결과를 그래프로 표시하면 아래와 같다.

베타분포가 다시 업데이트되었음을 한 눈에 알 수 있다. 한 번의 성공이 확률밀도의 분포를 상당히 바꾸어 놓았다. 확률변수 값이 0과 1에 근접하면 확률밀도가 거의 0이고, 확률변수 값이 0.35 전후일 때 확률밀도가 가장 크다. 동일한 사전확률분포일 때라도 얻어진 데이터에 따라 사후확률분포(사후확률밀도함수)가 크게 다름을 알 수 있다. 또한 새로운 시행을 통해서 데이터가 계속 수집되면 사후확률분포도 지속적으로 업데이트될 수 있음을 알 수 있다.

새로 구해진 사후확률분포는 위에서처럼 그래프로 제시될 수도 있지만, 모멘트(예컨대 평균과 분산)를 추가하면 좋을 것이다. 베타분포의 평균과 분산은 다음과 같은 공식으로 구할 수 있다.

(4)에 제시된 하이퍼퍼라미터 를 위 공식에 대입하면 아래와 같은 값을 얻는다.

이상 공액이 베이즈 추론의 아주 편리한 지름길을 제공하고 있음을 살펴보았다. 베이즈 추론에 자주 사용되는 공액사전분포(conjugate priors)는 beta prior + binomial data –> beta posterior의 경우 외에도 여러 가지가 있다.

gamma prior + Poisson data –> gamma posterior

normal prior + normal data –> normal posterior

공액분포의 자세한 리스트는 아래의 위키피디아 링크를 참조하기 바란다.

Table of conjugate distributions

공액이 편리한 기법이기는 하지만, 모든 베이즈 추론 문제에 공액사전분포가 적용될 수 있는 것은 아니다. 그래서 다음 포스팅에서는 공액분포 적용 사례를 좀 더 살펴보고 나서 베이즈 정리의 분모에 있는 적분을 우회하는 또 하나의 방법인 시뮬레이션, 그 중 MCMC (Markov Chain Monte Carlo) 방법을 공부하겠다. (2020-11-03)

베이즈 통계(8): 우도와 퍼라미터 추정

앞 게시글에서 이항분포를 소개했다. 이번에는 그것을 퍼라미터와 우도(likelihood)의 관점에서 살펴보자. 이항분포는 두 개의 퍼라미터를 가진다고 했다. 동전을 3번 던졌을 때 윗면이 2번 나왔다. 그렇다면 성공확률()은 얼마일까? 성공확률은 이항분포의 퍼라미터 중 하나이다. 따라서 이 문제는 퍼라미터를 추정하라고 요구하고 있다. (시행횟수 n도 퍼라미터이지만 그것이 궁금할 일은 거의 없을 것이다.) 이 이항분포의 pdf는 다음과 같다.

이 pdf를 가지면 우리는 어떤 성공확률이든 우도를 계산할 수 있다. 위 식에서 성공확률을 넣으면 우도가 구해진다. 만약 성공확률이 0이라면(물론 실제로 그럴리는 없겠지만), 우도는 0이다. 조건부확률로 표현하면, 퍼라미터인 성공확률이 0일 때 동전을 3번 던져 2번 나오는 데이터를 관찰할 확률이 0이라는 말이다. 그렇다면, 성공확률이 0.1, 0.2, 0.3, 0.4,…1일 때의 각 성공확률을 같은 방식으로 추정할 수 있다. 아래는 그렇게해서 얻은 결과를 가지고 구성한 표이다.

성공확률() 우도(likelihood)
0 0
0.1 0.027
0.2 0.096
0.3 0.189
0.4 0.288
0.5 0.375
0.6 0.432
0.7 0.441
0.8 0.384
0.9 0.243
1 0

여기서는 11개의 경우만 제시했지만, 확률은 0부터 1 사이의 어떤 값도 가질 수 있으므로 사실 성공확률 값의 종류는 무한대이다. 퍼라미터가 무한대 존재한다는 말이다. 빈도주의 통계에서는 듣도보도 못한 현상이다.

편의상 두 가지 가설만 존재한다고 가정하자. 동전이 정직하다(p = 0.5이라고 두자)는 가설과 동전이 정직하지 못하다(p = 0.4이라고 두자)는 가설. 그리고 각 가설이 진실일 확률은 동일하다(각 0.5)고 가정하자. 각 가설의 사전확률(priors)이 각각 0.5라는 말이다. 그리고 동전던지기의 경우 우도함수가 이항확률함수이다.

그러면 베이즈 정리를 이용해서 먼저 동전이 정직하다는 가설부터 살펴보자. 동전을 3번 던져 2번 윗면이 나왔을 때 동전이 정직할 확률, 즉, 사후확률(posterior)을 구할 수 있는 사전확률(0.5)과 우도(0.375)가 구해진 것이다. 성공확률()이 0.5일 때 동전을 세번 던져서 두번 윗면이 나올 확률, 즉, 우도는 위 표에서 보듯이 0.375이다.

사전확률과 우도의 곱이 분자이니 쉽게 계산되고 이제 분모만 구하면 된다. 그런데 분모는 각 퍼라미터(가설)의 결합확률을 모두 합한 값이다. 그런데 계산을 간단히 하기 위해 동전이 정직하지 못한 경우 성공확률이 0.4라고 가정했다. 그러면 두 가지 경우만 있으니 분모 값은 아래와 같이 구해질 것이다. 퍼라미터가 0.5일 때 결합확률의 합이므로,

그렇다면, 동전이 정직하다는 가설의 사후확률은 다음과 같이 계산될 것이다.

사전확률은 0.5인데, 사후확률이 0.57이다. 동전던지기를 해서 세 번 중 두 번 윗면이나온다 라는 데이터를 얻고 나니 동전의 정직성에 대한 우리의 믿음이 0.5에서 0.57로 높아졌다.

반면에 동전이 정직하지 못하다는 가설의 경우, 분모는 퍼라미터가 0.5일 때 결합확률의 합이므로 앞의 경우와 동일하다. 따라서 사후확률은 아래와 같이 계산된다.

동전이 정직하지 못하다는 가설에 대한 우리의 믿음은 0.5에서 0.43으로 낮아졌다. 데이터가 수집되어 동전의 정직성에 관한 우리의 믿음이 갱신된 것이다.

다음 포스팅에서는 좀 더 복잡한 사례를 가지고 퍼라미터 추정을 보자. (2020-11-01)

베이즈 통계(7): 함수, 확률변수, 확률함수, 확률분포

먼저 함수에 대해 분명하게 정의하자. 함수(function)는 어떤 변수의 입력값에 대해 유일한 출력값을 관계시키는 수학적 과정이다. 좀 더 세련되게 표현하면, 입력값에 대해 출력값을 매핑(mapping)하는 수학적 과정이다. 함수의 출력값은 종속변수라고 부르는 또 하나의 변수일 수 있다.

What is a Function

함수가 실제로 표시되는 방식은 의 예에서 보듯이 좌변은 입력값()의 함수값(function value) 을 표기하고, 우변은 입력값을 가지고 무슨 조치를 해야하는가를 말해주는 일련의 지시(instructions)를 표기한다. 이 예에서는 입력값을 제곱하라는 지시가 주어져 있다. 만약 그 지시를 따라서 구한 함숫값(function value)이 다른 변수값(예컨대 )으로 간주된다면 그 경우 함수는 다음과 같이 표기될 수 있다.

이 경우 함수는 어떤 변수(흔히 독립변수라고 함)의 값에 대해 다른 변수(흔히 종속변수라고 함)의 값을 일대일로 대응시키는 수학적 과정이다.

확률변수(random variable)는 표본공간의 각 원소에 대해 하나의 실수값을 대응시켜주는 함수이다.  표본공간(sample space)확률실험(random experiment)의 결과로 나오는 모든 사상(events)의 집합이다.

예컨대 두 개의 동전을 던지는 실험을 보자. 실험의 결과가 오직 우연에 의해 결정되므로 그것은 확률실험이다. 윗면(인물 형상이 있는 면)이 나오면 H, 아랫면이 나오면 T라고 하면, 나올 수 있는 실험결과는 로 네 가지일 것이다. 이것의 집합인 가 표본공간(sample space)이다. 이 표본공간의 원소를 숫자로 표현하려면, 윗면의 수(혹은 아랫면의 수)처럼 변수를 규정해주어야 한다. 그러면, 각 원소에는 2, 1, 1, 0이라는 수가 부여될 것이다. 이 때 윗면의 수가 바로 확률변수이다. 그것은 두 개의 동전 던지기라는 확률실험의 결과에 대해 일정한 수를 부여하는 함수이다. 이 예는 함수의 입력값이 문자로 되어 있지만, 만약 표본공간이 숫자로 되어 있다면, 입력값과 출력값이 동일할 것이다.

확률변수의 값은 확률을 갖는다. 여기서 확률은 표본공간에서 특정 원소가 차지한 비율이다. 위 예를 가지고 보면, 확별변수 값의 확률은 다음과 같다.

확률변수의 값(윗면의 수) 표본공간의 원소 확률(해당 원소의 비율)
2 HH 1/4 = 0.25
1 HT, TH 2/4 = 0.5
0 TT 1/4 = 0.25
1.00

이 표를 확률분포표(probability distribution table)라고 부른다. 그런데 확률분포를 나타내는데 있어 확률분포표는 그다지 효율적이 아니다. 확률변수의 값이 많아지면 표를 작성하는 일이 아주 번거로울 것이다.

그래서 확률함수(probability function)가 필요하다. 확률변수의 값에 대응하는 확률을 하나의 함수로 표기할 수 있다면 아주 간명하고 효율적일 것이다.  위의 동전던지기 실험은, 확률실험의 결과가 두 가지(윗면과 아랫면, 성공과 실패)이고, 각 시행은 독립적이며, 성공 확률이 바뀌지 않는다는 특징을 가지고 있다. 이러한 속성을 지닌 확률분포는 이항확률분포(binomial probability distribution)이며, 이항확률분포는 이항확률질량함수(binominal probability mass function, binomial pmf)로 표현된다. 이산변수와 연속변수를 구분하지 않고 확률밀도함수(probability density function, pdf)라고도 표기하므로 이항확률밀도함수(binomial probability density function, binomial pdf)라고 불러도 무방하다(이항확률분포에 관해서는 확률분포(1): 이항확률분포 를 참조하시오). 전에 올린 확률분포들에 관한 글들에서도 그랬듯이 필자는 후자를 따르겠다. 이항확률밀도함수는 아래와 같이 표기된다.

함수값을 대신에 로 표기했다. n번 시행에서 성공 확률이 p일 때 y번 성공할 확률을 의미한다. 여기서 np퍼라미터(parameter, 우리말로 모수라고 함)라고 부른다. 퍼라미터는 확률분포의 모양을 결정짓는다. 즉, 퍼라미터의 값에 따라 확률분포의 모양이 결정된다.

위의 사례를 이항함수 식의 관점에서 다시 살펴보면, 동전이 정직하다고 가정했을 때 성공확률(윗면이 나올 확률) p은 0.5이다. 만약 동전을 두 번 던졌는데 윗면이 2번 나왔다면 성공횟수 y는 2이고, 시행 횟수 n은 2이다. 그렇다면 퍼라미터의 값은  가 될 것이다. 이항함수 공식에 이 퍼라미터 값을 넣으면 아래 식을 얻는다.

이 식만 가지면 앞에서 제시한 확률분포표를 재현할 수 있다.

2 0.25
1 0.5
0 0.25
1.00

퍼라미터의 값을 바꾸면 다른 모습의 확률분포를 얻는다. 예컨대 시행횟수를 3으로 바꾸면, 퍼라미터는  이 되고, 확률밀도함수(pdf)는 아래와 같다.

이 식을 가지고 확률분포표를 구하면 아래와 같다.

3 0.125
2 0.375
1 0.375
0 0.125
1.000

성공확률 p의 값을 변경할 수도 있다. 정직한 동전이니 성공확률이 0.5이지만, 성공률을 낮추기 위해 조작된 동전이라면 성공확률이 0.4일 수도 있다. 그러면 확률밀도함수는 다음과 같을 것이다.

베이즈 추론은 퍼라미터를 추정(estimate)하는 경우가 많다. 베이즈통계를 위해 확률밀도함수가 필요한 또 다른 이유이다. 다음 게시글에서는 베이즈 추론을 통해서 퍼라미터를 추정해 보자. (2020-10-30)