노년과 시간-성찰적 삶

“우리에게 건강한 삶이 5년밖에 더 허락되지 않는다면, 아니 좀 넉넉하게 잡아서 10년 더 주어진다면, 오늘 무엇을 하며 지낼까, 또 어떻게 살까?”

젊은이라면 거의 하지 않을 그런 상상을 노인은 수시로 떠올리며 산다. 시간의 가치가 올라가니 경제학적 의미의 기회비용에 대한 성찰이 노인에게는 일상이 된다. 매일매일 소중한 오늘이 후회없는 하루가 되려면 오늘 해야할 일을 신중하게 선택해야 하는 것이다.

노인의 시간-성찰적 관점에서 일에 대해 판단하는 기준은 두 가지이다. 첫째, 꼭 해야할 일인가. 무엇을 더 할 것인가가 아니라 무엇을 뺄 것인가에 대한 판단이 중요하다. 생활비 지출을 최대한 줄이고 단순화하듯이 시간의 사용에 있어서도 거품을 최대한 제거해야 한다.

퇴직 이후 첫번째 도전은 불필요한 지출을 줄이는 작업이었다. 몇 달 동안 거품빼기를 하고나니 지출 규모가 크게 축소되었다. 예컨대 통신비가 매월 30만원 이상 나갔는데, 지금은 10만원 아래가 되었다. 결합상품 서비스를 이용하고, 무선 이용은 와이파이에 국한하고 집에 들어오는 인터넷의 대역폭을 축소했다.

이제 불필요한 시간 사용을 줄이는 작업에 나섰다. 가장 큰 부분은 오지랖을 줄이는 일이었다. 나 자신이 이거저기 불필요하게 참석(?)하는 일이 이렇게 많은 줄을 모르고 살았다. 나는 세상 걱정, 나라 걱정, 마을 걱정은 물론이고 직업적 습관처럼 온갖 사람들을 가르치려 들었었다. 이제 모두 놓아주는 것이 그들을 위한 길이라는 것을 깨달았다.

둘째, 설령 필요하다고 생각되는 일일지라도 그것이 정말로 가치있는 일인가를 따져야 한다. 많은 시간이 투입되는 일일수록 더욱 더 냉철하게 그 일의 가치를 뜯어봐야 한다. 예컨대 프랑스 여행을 계획한다면 프랑스어를 배우는 데 상당한 시간을 쓸만한 가치가 있을 것이다. 프랑스인들은 영어 사용을 꺼려하니 프랑스를 두루두루 살펴보려면 프랑스어를 약간이라고 할 수 있는 것이 아주 좋다. 그런데 컴퓨터 언어는 어떨까. 아무리 쉬운 언어라도 그것에 익숙해지려면 적어도 몇 달은 집중해서 공부해야 할텐데, 이 나이에 새 컴퓨터 언어의 습득이 그만한 가치가 있을까 의심스럽다.

지난 몇 달 동안 베이즈 통계를 공부하느라 많은 시간을 썼다. 4년 전에 시작해서 잠시 공부하다가 포기했던 아쉬움을 떨치지 못하고 결국 다시 시작해서 이제 가장 어려운 고비를 넘은 것 같다. 지금부터는 베이즈적 관점에서 실제 문제들을 분석하면서 베이즈적 사고를 정착시킬 단계이다. 아마도 그 단계가 완성되려면 최소한 몇 달은 더 걸릴 것이다.

삶은 매듭을 잘 지어야 한다. 살다보면 매듭을 짓고 넘어가야 할 일이 적지 않다. 그때 그때 매듭을 잘 지어야 아쉬움이 덜 남는다. 어떤 일을 벌여놓고 매듭을 짓지 못한 채 시간이 흘러가 버리면 거기에 들어간 시간들이 대부분 가치를 잃는다. 짧은 인생에서 너무 아쉬운 대목이 되어 버린다. 시작했다고 모든 일을 끝낼 필요는 없겠지만 비중이 제법 되는 일들은 잘 마무리해줘야 된다. 노년에는 그럴 자신이 없는 시도는 아예 하지 않은 것이 어떨까 한다. 노인이 되니 기왕에 벌여놓은 일을 매듭짓기도 쉽지 않다.  (2020-11-29)

고창에 대한 새로운 발견

둘째가 스트레스를 너무 받아 주말에 푹 쉬고 싶다고 해서 일요일 오후 아내와 셋이서 고창을 다녀왔다. 집에서 30분 남짓 드라이브하니 선운사에 도착했다. 몇 년만에 가보니 선운사 초입에 멋진 공원이 생겨 있었다.

아점을 먹으러 상하농장을 가다가 ‘퍼핀’이라는 이탈리아 레스토랑을 발견(?)했다. 경기도 이천에 살 때 시내에 ‘퍼핀’이 있다 없어졌는데 혹시나 그 퍼핀과 무슨 관계가 있나해서 들어가 보았다. 짜임새 있고 제법 규모가 있는 레스토랑이었다.

까르보라나의 맛에 다소 실망했지만, 다른 음식들은 먹을만 했다. 선운사 뿐 아니라 바닷가에서 가까워 다시 찾을만하다고 생각했다.

식사를 하고 하전마을에 들려 방파제 위를 걸었다. 엄청난 뻘밭이 펼쳐져 있었다. 우리나라에 바지락을 가장 많이 생산하는 곳이라고 했다. 서쪽 건너편에는 곰소항이 있었다. 다음에 다시 와서 곰장어와 바지락국수를 먹기로 하고 서둘러서 풍천으로 갔다.

풍천은 풍천장어가 나는 개천이다. 선운사로 들어가려면 풍천장어길을 지나야 한다. 풍천은 자연스러운 모습을 잘 보존하고 있어 보기가 좋았다. 장성의 개천들도 그랬으면 좋으련만.

해가 지기 전에 마지막으로 고인돌 유적지를 향했다. 30-40분밖에 둘러보지 못해 크게 아쉬웠다. 단순히 고인돌 몇 개 있을 것으로 상상하고 갔는데 엄청나게 큰 유적지 겸 지질공원이었다.

고창은 참으로 놀라운 지역이다. 선사 유적, 역사 유적, 멋진 산들, 바닷가, 풍천장어, 바지락, 복분자, 청보리밥 등 참으로 많은 자원을 갖고 있는 지역이다. 그리고 군수가 지역을 잘 보전하고 가꾸는 것 같다. 가는 곳마다 감탄이 솟아나게 만든다.

고인돌 선사유적지에서 집에까지 24km에 불과했다. 집에서 백양사 가는 거리, 광주의 첨단 단지에 가는 거리와 비슷했다.

앞으로 한동안 고창을 구석구석 둘러봐야겠다. 놀랍도록 매력적인 고장이 이렇게 가까이 있다니. (2020-11-24)

베이즈 통계(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 수행과정에서 조건부 무작위 추출이 세 번 들어갔다.

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

이 포스팅에서는 수학 사용을 최소화하면서 MCMC를 최대한 말로 쉽게 설명하려고 시도하였다. 필자는 베이즈 통계에 입문하는 인문사회과학도가 이 정도만 MCMC를 이해하면 충분하지 않을까 생각한다. 샘플링하는 방법이나 의사결정하는 방법에 적용하는데 있어 메트로폴리스 외에도 여러가지 알고리즘이 있지만 그것들은 베이즈 추론에 좀 더 익숙해진 후에 천천히 익혀도 늦지 않을 것이다. (2020-11-21)

말보다 글을…

젊은 시절 나는 참 말 많은 사람이었다. 밤을 꼴닥 새우면서 대화를 나눴던 기억이 심심치 않을 정도이다. 남의 얘기를 차분하게 듣기보다 내 생각을 말하기 바빴다. 사람들이 얼마나 싫었을까 생각하면 지금도 소름이 돋을 정도이다.

오십 살이 넘어서야 겨우 남의 말을 경청하기 시작했다. 부끄러운 자화상이다.

그리고 그 즈음부터 말하는 대신 글을 쓰기 시작했다. 말하고 싶은 충동을 느끼면 글을 썼다. 그러면서 말수가 크게 줄어들었다. 글 쓰는 양이 늘수록 말수는 줄어든 것 같다.

대체로 노인은 말이 많다. 그러나 그것이 꼭 나쁘다고 말할 수는 없다. 노인이 되면 일과 행동이 줄어드는데 말조차 하지 못하면 정신 건강에 문제가 생길 수도 있다.

요즘은 매일 글을 쓴다. 젊은 시절 글쓰기를 취미를 가졌던 것이 얼마나 다행인지 모르겠다. 말을 안 해도 대화 욕구를 상당부분 충족시킬 수 있으니 말이다.

글을 써서 책을 내거나 매체에 출판할 생각이 아니라면 글을 잘 쓰고 못 쓰고는 그다지 중요하지 않다. 생각과 글이 따로 놀지 않으면 되는데 쓰다보면 글이 생각을 따라잡게 된다. 그리고 편집을 통해서 거기에 약간의 질서만 부여하면 충분히 자신의 생각과 느낌을 전달하는 글이 된다.

독자가 단 몇 명에 불과한 들 어떠하랴. 자기 자신만이 독자일 수도 있고 독자에 아내가 추가되거나 가족이 추가될 수도 있겠지만, 가족 독자마저도 기대하지 않는 것이 좋다. 실망할 가능성이 크기 때문이다. 읽히는 것보다 쓰는 것이 목적이어도 무방하지 않겠는가. 쓰는 행위 자체가 충분히 즐거운 것을. 물론 운이 좋아 독자가 하나 둘 생긴다면 더 기분좋은 일이겠지만.

은퇴 후에 생활이 참 많이 바뀌었다. 은퇴 전에 별로 안하던 행동을 하는 것이 적지 않다. 성찰과 글쓰기는 그 중 하나이다. 앞만 보고 달리고 그나마 시간에 쫓겨 주위를 돌아보지도, 나를 돌아보지도, 이것저것에 대해 차분히 성찰하지 못하고 살았는데, 지금은 주위가 눈에 들어오고, 나 자신과 인생이 눈에 들어온다. 그렇게 해서 얻는 생각과 느낌을 글로 쓰니 이보다 좋은 일이 없지 싶다.

오늘도 온전히 내가 하고 싶은 것을 하고 살 수 있음에 감사한다. 지구를 다녀간 얼마나 많은 사람들이 단 몇 년 아니 단 몇 달만이라도 그렇게 살 수 있기를 바랬겠는가. (2020-11-20)

베이즈 통계(번외): 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). 소프트웨어를 사용하면 신용구간을 쉽게 구할 수 있다. 통계패키지인 STATA를 이용해서 추정한 θ의 90% 신용구간 HDI는 (0.249, 0.503)이다. 아래 그림은 STATA로 위 사례를 분석한 결과이다. 이제 MCMC를 소프트웨어로 구현할 시간이다.

참고 문헌

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.

관계와 대화, 무엇이 먼저일까

우리네 삶에서 대화보다 더 소중한 것이 있을까? 인간에게 있어 대화 욕구는 물욕, 권력욕은 물론이고 식욕이나 성욕보다 더 근본적이다. 그래서 미하일 바흐찐과 마틴 부버는 인간을 대화적 존재라고 주장했을 것이다.

많은 사람들에게 대화는 공기만큼이나 흔하고 당연히 주어지는 것이다. 그러나 어떤 이유로든 대화의 기회를 잃고–살다보면 누구나 그런 때가 오지 않나 싶다–나면, 사람들은 대화가 얼마나 소중한 것인지 느끼게 된다.

대화의 상실은 많은 노인들이 겪는 어려움이다. 노인이 되면 대화와 관련해서 두 가지를 깨닫게 된다. 첫째는 대화의 상대가 아주 소수라는 사실이고, 둘째는 상대에 따라 나눌 수 있는 대화가 제한되어 있다는 사실이다.

나는 아는 사람이 많아 걱정이 없다고 생각한다면 그것은 심각한 착각이다. 아는 사람이 ‘대화’의 상대가 되는 것이 아니다. 사업이나 업무로 만난 사람과는 인간적인 대화를 나누는 것이 거의 불가능하다. 사업상 혹은 직업상의 동료나 파트너가 아무리 많아도 그들이 당신의 ‘인간적’ 혹은 ‘사적’ 대화 상대가 되어줄 가능성은 없다고 보면 된다. 나는 그렇지 않아라고 생각한다면 그것은 착각이나 오해일 뿐이다.

관계의 전환이 불가능하다는 말이다. 특히 관계가 비대칭일수록 그러하다. 은퇴하면 전직과 현직의 관계는 필연적으로 비대칭적이 된다. 사회적 위상, 정보, 재력, 체력 등 어느 것 하나 전직이 현직과 대등하거나 더 나을 수는 없다. 은퇴자는 과거를 빨리 잊어버리는 것이 좋다. 인간적인 측면에서 과거가 은퇴자에게 힘이 되어줄 수 가능성은 없다. 업무상으로도 그럴 가능성이 높지만 특히 인간적인 측면에서 그러하다.

당신의 연락처 명단에서 인간적인 혹은 사적인 대화가 가능한 사람만 남기고 모든 사람을 제거하면 과연 몇 명이나 남을까? 아마도 아주 소수일 것이다. 그것 자체가 크게 염려할 일은 아니다. 누구나 그러하니까 말이다.

그런데, 그 소수마저도 각각의 상대와 나눌 수 있는 대화의 주제가 제한적이다. 대화 주제를 잘못 꺼내면 그 소수의 ‘친구’나 가족, 이웃마저도 멀어질 수 있기 때문이다. 현직 시절의 화려했던 추억, 즐겁거나 슬픈 가족 이야기(대개 자식 자랑), 자신이 가진 부동산이나 주식이 오른 소식, 해외여행이나 값비싼 취미생활 등은 은퇴자의 무료한 일상을 채워줄 대화 소재이기도 하고, 입이 근질근질하여 자제하기 어려운 이야기 재료이기도 하지만, 친구를 멀어지게 할 가능성이 높은 대화 주제이기도 하다.

다양한 대화 주제를 함께 할 수 있다는 측면에서 배우자만한 상대가 없다. 그러나 그 배우자마저도 항상 당신에게 마음을 열고 있다고 쉽게 단정할 수 없다. 그 동안 어떻게 살았는가에 따라 다르겠지만 당신의 배우자는 당신이 아닌 다른 대화 상대를 선호할 수도 있다. 그리고 설령 다정한 사이일지라도 그 배우자가 언제까지나 당신 곁에 있지도 않을 것이다.

그래서 은퇴자에게는 누구와의 대화에서든 절제와 조심성이 필요하다. 은퇴자는 말을 꺼내기 전에 혹시나 내가 하는 말이 상대를 거북하게 하거나 부담스럽게 하지는 않을까 하는 생각을 몇 차례 해보는 습관을 가지면 좋다. 그래도 간혹 ‘선’을 넘을 것이고 ‘친구’는 기꺼이 그 실수를 양해해 줄 것이다. 하지만 ‘선’을 자주 넘으면  ‘친구’들의 인내도 바닥나게 된다.

대화가 관계를 만드는 것이 아니다. 그 역이 더 진실이다. 관계가 존재해야 대화가 가능하다. 대화가 가능한 상대를 오래 옆에 두려면 사려깊지 못한 대화로 그 관계를 위협하는 처신을 하지 않아야 할 것이다. (2020-11-18)

기억력 감퇴

일평생 장기 기억은 내 지능에서 가장 취약한 부분 중 하나였다. 내 기억력은 평범했다. 시험을 치루거나 연구하는데 어려움을 초래할 정도로 약하지는 않았지만 그렇다고 기억력이 좋아서 시험을 치거나 일을 하는데 남보다 유리했던 적은 없었을 정도로 그저 평범한 수준이었다.

그런데 이제 그 기억력마저도 점차 약해지고 있음을 느낀다. 새로 들어오는 입력이 뇌 속에 저장되기가 무척 어렵다. 특히 숫자나 이름 같은 단편적인 것들이 그러하다. 순간 순간 좌절을 느낄 때가 자주 있지만 그나마 다행스럽다고 스스로 위로해야 하나. 아직 생활은 다소 불편하지만 공부에 크게 지장을 초래할 정도는 아니니 말이다.

내 두뇌를 5년쯤 더 쓸 수 있을까? 그래도 칠십까지는 지금처럼 공부를 할 수 있었으면 좋겠는데, 지나친 욕심인가.

기억력이 약해진 반면 이해력은 좋아졌는지 다행히 배움이 힘들지는 않다. 다만 치매가 걱정이다. 치매가 오지 않았으면 하지만 누가 알겠는가.

치매가 찾아올 때까지는 공부를 즐기자. 지금 이렇게 공부를 할 수 있는 것만도 축복이 아니겠는가. 60대 초반이나 그 전에 치매가 찾아온 학자들도 드물지 않으니 말이다.

50대 초반에 나는 국내에서 녹내장 최고 권위자라는 의사로부터 60전에 시력을 잃게 될 가능성이 높다고 진단을 받았다. 그런데 아직 양쪽 눈을 잘 쓰고 있다.

두뇌도 그렇게 될 수 있을 것이다. 뭐 그렇지 않다고 하더라도 어쩌겠는가. 세상에 앞당겨서 미리 걱정할 일은 없다. 그저 하루 하루 감사하면서 열심히 살면 그만이다. (2020-11-15)

베이즈 통계(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)