part 3

우연과 운명 사이

PART1 에서는 관심 변수 속 차이를 확인하고, PART2에서는 그 차이를 설명변수와의 관계로 설명하는 방법들에 대해서 살펴봤습니다. 그러나 지금까지 우리가 간과하고 있었던 부분이 있습니다. 바로 그 차이의 의미입니다. 혹시 이 차이가 어쩌다 나온 차이고 재수 좋게 설명되는 관계인 걸 아닐까요?
  • 10년 넘게 연락이 없던 친구를 길 가다 우연히 만나면 어떨까요? 그 10년 뒤 또다시 그 친구를 우연히 만나게 된다면 어떨까요? 그 10년뒤 또 만난다면? 이 정도면 도저히 그냥 우연이라고 할 수 없어서 "만날 운명이었다"라고 표현합니다. 수많은 사람들이 영향을 주고 받는 미래는 예측할 수 없고 매 순간 우연으로 우리에게 다가옵니다.

  • 데이터 분석에서의 차이도 마찬가지 입니다. 올림픽 대회화 메달 색은 전혀 관련이 없는데, 우연히 리우에서 은메달을 많이 못딴 것은 아닐까요? 아들키를 아빠키로 설명할 수 있다지만, 사실은 그저 1,078개의 가족 데이터에서만 우연히 맞아떨어진 건 아닐까요? 우연이 아니라면 어떻게 증명해 보일수 있을까요? 변수 속의 차이나 데이터 속 변수의 관계가 우연히 아니라는 것을 보이는 과정을 테스트, 우리말로는 검정이라고 합니다. 우연이라고 하기에는 설명이 불가능할 만큼 충분히 큰 차이 매우 밀접한 관계가 있다는 것을 입증하는 것이죠. 그렇다면 얼만큼 커야 충분히 크다고 할 수 있을까요?

  • PART3 에서는 이와 관련된 어려운 이야기를 나눕니다. 충분히 큰지 아닌지를 판단하기 위해서는 기준이 필요합니다. 내 데이터로부터 계산된 값을 비교할 기준이 필요하죠. 그런데 우리에게 데이터는 하나밖에 없고, 비교를 위해선 적어도 2개의 무언가가 필요합니다. 그래서 통계는 표본이라는 개념을 활용합니다. 분명히 우리에게는 가지고 있는 데이터 하나가 전부인데, 통계는 그 외에도 똑같은 데이터가 수없이 많다고 할 겁니다. 어렵지만 이 과정을 거쳐야 우리 데이터가 우연이 아니라 운명이라는 것을 설명할 수 있습니다.


PART3 목차(배울것)

  • 지구는 우주의 티끌 : 표본과 모집단, 통계량 분포, 자연스러운 확률, 유의수준, 필요악 같은 분포, 키의 히스토그램과 정규분포
  • 남자평균 174.9cm, 여자 평균 162.3 cm : 표본평균의 표준편차, 표본평균의 표준편차 계산, t-값과 t-분포, p-값과 t-테스트
  • 관계 검증을 위한 테스트 : t-검정의 활용, 카이제곱분포를 활용한 독립성검정, F-분포를 활용한 분산분석
  • 아빠 키 유전 확률, 25% : 상관계수, 선형회귀모형, 회귀분석


part 2

차이를 설명하는 통계 개념

점심 뭐 먹지? (분산분석)

분산분석? 3개 이상의 집단에 대한 평균차이를 검증하는 분석 방법
  • 회사들이 최근에는 데이터 분석에 많은 관심을 보이고 있습니다. 사람들이 더 매력적인 콘텐츠로 옮겨가는 속도 만큼 회사는 빨리 대처를 해야 하기 떄문입니다.
  • 문제는 사람들이 뭘 좋아할지를 모른다는 것이죠. 도무지 예측을 할 수가 없는 세상입니다.
  • 일단 여러 개를 만들고 사람들의 반응을 살피는 것이죠. 이 과정을 보통 AB 테스트라고 합니다. 광고 배너를 A안과 V안 두 개로 나눈 다음 랜덤으로 사람들에게 노출하고, 어느 쪽 배너가 더 관심을 끄는지 사람들의 반응을 분석하는 테스트 방식 입니다.
  • 수십 년 전 통계학자들은 이미 비슷한 경험을 했고 이 상황에서 아주 적합한 이론들을 만들어 놨습니다. 서로 다른 비료를 뿌리고, 화합물의 원료 비율을 수없이 테스트 하면서 분산분석(ANONA, Analysis Of VAriance) 이라는 아름다운 이론을 만들었습니다.

ABCDEF 테스트

  • 성능 테스트 데이터를 살펴 보겠습니다. 여기 6개의 살충제 A, B, C, D, E, F 가 있습니다.
  • 어느 살충제가 효과가 좋은지 살펴보기 위해서 실험을 하기로 했습니다.
  • 똑같은 수의 벌레가 있는 6개의 방에다가 살충제를 하나씩 뿌리고 몇 마리가 죽는지 확인하는 것입니다.
  • 살충제 하나당 12번의 실험을 반복했습니다.


  • 이번에는 기억에서 가물가물한 상자그림을 그려 보려 합니다. 우리의 관심 변수는 각 살충제를 뿌렸을 떄 '죽은 벌레 수' 입니다.


  • 살충제 A, B, F는 상자그림이 전반적으로 위쪾에 떠 있고, 살충제 C, D, E는 아래쪽에 깔려 있네요.
  • 과연 살충제에 따라 죽은 벌레 수의 차이가 정말 의미 있는 차이일까요?

분산과 분산분석

  • 6개의 살충제 성능 차이를 분석하기에 앞서 잠깐 공부벌레 여섯 친구의 성적을 살펴보겠습니다.
  • 먼저 여섯 친구들이 중간 시험에 받은 점수를 수직선에 표현해 보겠습니다.


  • 파란색 친구들은 집에서 혼자 공부하고, 회색 친구들은 학원을 다닌다고 합니다.
  • 혼자 공부하는 친구들의 평균은 370, 학원을 다니는 친구들의 평균도 370이 나왔습니다. 정확히 전체 평균과 똑같네요.
  • 친구들의 점수 차이는 개개인의 차이일 뿐 학원을 다니는 혼자 공부하든 상관이 없다고 볼 수 있습니다.
  • 하지만 다음과 같은 상황에서는 어떨까요?


  • 회색 친구들은 학원을 다닌다고 합시다. 물론 전체 평균은 변함없이 370입니다.
  • 그런데 혼자 공부하는 친구들의 평균점수는 380점이고, 학원을 다니는 친구들의 평균 점수는 360입니다.
  • '공부 방법'이라는 변수 혹은 조건에 따라 조건부 평균이 다르네요.
  • 혼자 공부하는 세 친구와 학원을 다니는 세 친구를 두 그룹으로 나눠서 평균 점수에 배치하면 그 차이는 더욱 확인히 드러납니다.


  • 혼자 공부하는 세 친구들의 평균 점수가 20점이나 높은 것을 봐서 '혼자 공부하는 것이 고득점과 관련이 있다'고 볼수 있습니다.


  • 요약하자면, 변수를 조건으로 활용하면 차이에 대한 이유는 어느정도 확인할 수는 있지만, 그럼에도 알 수 없는 개인차가 존재한다는 것 입니다. 이것이 분산분석의 핵심입니다.
  • 설명변수는 관측치들이 왜 다른지에 대한 궁금즐을 일부분은 해소해주지만, 끝내 알 수 없는 부분도 있다는 것입니다. 그렇다면 설명 변수가 관측치들의 차이를 얼마나 자세히 설명할 수 있는가에 따라 설명 변수의 유용성을 판단할 수 있습니다. 설명 변수가 우리의 궁금증을 충분히 해결했는지 아닌지가 기준이 되겠죠.
  • 다시 살충제의 성능을 실험하는 방으로 돌아가 보겠습니다.


  • 72번의 실험에서 평균적으로는 9.5마리의 벌레들이 죽었습니다.
  • 그러나 C, D, E 살충제를 사용했을 때 죽은 벌레 수는 채 5마리가 안되고 살충제 A, B, F 를 뿌렸을 떄는 평균적으로 15마리씩 거뜬히 죽었습니다.
  • 물론 살충제 D로 12마리를 죽이기도 했고 살충제 B가 7마리밖에 못죽인 실험도 있지만, 12번의 실험 결과에서 대체적으로 나온 숫자에 비하면 큰 영향을 주지 못합니다.
  • 72개의 숫자로 분산을 계산하면 51.9가 나옵니다. 각 숫자에서 평균 9.5를 빼고 제곱한 다음 모두 더해 (72-1)로 나눠서 계산 했죠.
  • 분산 분석은 (71-1)로 나누기 전의 제곱합을 사용해서 설명할 수 있습니다.
  • 72개의 모든 숫자에서 똑같이 전체 평균 9.5를 뺴서 제곱하고 더하면 3,684가 나옵니다.
  • 이 숫자의 정확한 의미를 알기 어렵지만, '죽은 벌레 수'라는 변수의 차이의 정도로 생각할 수 있습니다.
  • 편의상 '죽은 벌레 수'를 y라고 하면 다음 처럼 수식으로 표현할 수 있습니다.


  • 이번에는 또 다른 제곱합을 계산 하려고 합니다.
  • 관측치들의 실제값이 아니라 살충제라는 자신이 속한 그룹의 평균값으로 대체했습니다. 이 새로운 72개의 값에서 모두 전체평균 9.5를 뺴고 다시 제곱합을 계산 합니다.
  • 특이한 것은 같은 살충제 12개의 관측치는 모두 같은 값을 가지게 된다는 것이죠. 실제로 계산 하면 2,669가 되고 그룹평균으로 바뀐 변수 이름을 yg라고 하면 역시 다음처럼 수식으로 표현할 수 있습니다.


  • 이제 마지막 제곱합 입니다. 실제값과 그룹평균의 차이를 제곱하고 합하는 것이죠.
  • 계산은 조금 복잡하지만 수식으로 표현하면 다음처럼 간단하게 나타낼 수 있습니다. 값은 1,015가 됩니다.


  • 조금씩 다르긴 하지만 지금까지 3개의 제곱합을 계산했습니다. 그런데 세 제곱합 사이에는 신묘한 관계가 있습니다. 두 번쨰와 세번쨰 제곱합을 더하면 정확하게 첫 번쨰 제곱합과 같죠!
3,684 = 2,669 + 1,015
  • 믿기지 않겠지만, 실제로 계산하면 정확히 일치하는 것을 확인할 수 있습니다. 그렇다면 숫자말고 수식으로 살펴 볼까요?


  • 첫 번째 제곱합은 우리의 관신 변수의 분산, 바로 정보량입니다. 그런데 이 분산은 정확히 2개로 나눠지는 데요 두 번쨰 제곱합이 의미하는 그룹에 따른 차이와 세번째 제곱합이 의미하는 알수 없는 개인차 입니다. 두 번째 제곱합은 각 관측치의 실제값 대신 그룹의 평균을 사용해서 계산했습니다. 즉, 전체 평균에 비해서 각 그룹의 평균이 얼만큼 차이가 큰지를 계산하는 것이죠.
  • 그럼 이 값은 관심 변수의 정보 중에서 그룹에 따른 차이로 설명할 수 있는 부분이 됩니다. 세 번째 제곱합은 다릅니다. 실제값에서 그룹 평균을 뺐는데요. 바로 그룹 차이로는 설명할 수 없는 나머지 부분을 의미합니다. 각자 의미를 가지고 있는 3개의 제곱합이 실은 이렇게 아름다운 관계를 가지고 있습니다.
  • 중학교때 배운 피타고라스의 정리 c^2 = a^2 + b^2과 닮은 것을 알 수 있습니다. 또 한 '데이터 공간(c^2)이 다른 변수들로 설명되는 공간(a^2)과 전혀 관련이 없어 알 수 없는 공간(b^2)으로 나눠진다' 라는 공간의 개념도 담겨 있습니다. 이와 같이 정보를 의미하는 관심 변수의 분산이 어떻게 분해되는지 살펴본다고 해서 분산분석이라는 이름이 붙었습니다.
  • 물론 이것이 분산분석의 끝은 아닙니다. 분산 분석의 목적이 무엇인가요? 그룹에 따라서, 콘텐츠에 따라서 결과에 충분히 큰 차이가 있는지 없는지를 판단하는 것이죠. 그런데 문제는 우리가 아직까지 '충분히 큰 차이'에 대한 개념을 배우지 못했다는 겁니다. 지금까지 계산한 세 제곱합으로 바로 판단할 수는 없습니다.
  • 물론, 관심 변수의 분산 중에서 글부을 나누는 역할은 한 설명 변수로 설명할 수 있는 부분이 크면 클수록 그룹에 따른 차이가 크다고 볼 수는 있겠지만, 도대체 얼마나 커야 할까요? 그 답은 이어지는 PART3에서 찾아봅시다.


part 2

차이를 설명하는 통계 개념

아낌없이 주는 의사결정나무

  • 데이터의 차이를 확인하고 설명하기 위해선 조건부 확률, 조건부 평균을 구헤야하는 건 알지만, 방법을 생각하는 건 참 어렵습니다.
  • 관심변수는 하나밖에 없다지만, 설명 변수는 여러개일 수도 있어서 도무지 어떤 변수를 어떻게 활용해야할지 막막합니다.
  • 그러나 너무 걱정할 필요는 없습니다. 통계학자들이 데이터를 효과적으로 분석히기 위한 많은 도구를 만들어 놨으니까요.

모자이크 그림

  • 의사 결정 나무 모현을 살펴보기 전에 분할 정복 전략을 살펴 봅시다.
  • 전체 데이터를 한눈에 파악하고 차이를 잡아내는 것은 어려운 일입니다.
  • 그래서 데이터를 여러 개의 작은 부분으로 쪼개고, 나눈 부분별로 분석하는 방법을 분할정복(Divide and conquer) 이라고 합니다.
  • 분할 정복 개념을 살펴보기 위해 목숨이 위태로운 비극정인 상황 속에서도 여자와 어린 아이들은 먼저 구한 이야기로 깊은 감명을 준 타이타닉 호의 인명 피해 데이터를 한번 살펴 봅시다.


  • 타이타닉 호에는 2,201 명이 타고 있습니다. 빙산에 부딪친 타이타닉 호는 침몰했고 711명만 살아남았습니다. 이 중에는 남자도 있고 여자도 있고 성인도 있고 아이도 있었습니다. 비싼 돈을 주고 1,2 등석에 탄 사람, 3등석에 탄 사람 그리고 선원도 있었습니다.
  • 2,201명의 승객을 좌석등급, 성별, 연령 구분에 따라 정리하고 생존 여부를 데이터로 정리했습니다. 변수가 4개라서 단순한 교차표로 표현하긴 어렵지만 교차표를 묶어서 정리해봤습니다.
  • 교차표를 보면 연령, 성별, 좌석 등급에 따라 생존자와 사망자 수를 확인할 수 있습니다. 예를 들면, 1등석에 탄 성인 여자 중에서 140명은 생존했고, 4명은 사망했습니다. 선원은 모두 성인이며 그중 남자는 670명이 사망하고 192명만 살았습니다.
  • 이렇게 교차표에서 좌석등급, 성별, 연령에 따라 몇 명이 생존했고 사망했는지 확인할 수 있습니다.
  • 그렇지만 역시 숫자로 하나하나 표현하는 것은 데이터를 한눈에 보기가 어렵기 때문에 그림으로 표현해 봅시다.


  • 사각형의 폭은 좌석등급에 타고 있던 사람들에 수에 비례에서 결정됩니다.
  • 그림만 봐도 3등석 탑승자와 선원이 1, 2 등석 탑승자보다 많다는 것을 확인할 수 있습니다. 이렇게 큰 사각형을 좌석 등급에 따라 작은 사각형으로 나눈 다음, 다시 각 등급을 나타낸 사각형을 성별에 따라 가로로 2등분합니다.
  • 생존 여부에 따라 사각형을 가로로 나누고 생존자는 파란색, 사망자는 회색으로 표현해 보겠습니다.
  • 회색과 파란색을 묶은 총 16개의 사각형들은 좌석등급, 성별, 연령 구분의 조합으로 만들어진 작은 그룹들입니다.
  • 각 그룹에서 파란색 상자의 비율이 높으면 생존자가 더 많고, 회색의 비율이 높으면 사망자가 더 많은 것을 의미합니다.
  • 전해 듣던 대로 여자와 아이들 그리고 좌석등급이 높은 사람들의 생존율이 확연히 높은 것을 눈으로 확인할 수 있습니다.
  • 그러나 한가지 의문이 남습니다. 이게 최선일까요? 예를 들면, 3등석 여자 승객을 살펴보면, 아이와 성인의 생존율에 큰 차이가 없습니다. 그 두 사각형을 합쳐도 큰 문제가 없죠.
  • 만약 나눠진 그룹들끼리 큰 차이가 없다면 굳이 나눠서 설명할 필요가 없을 겁니다. 그렇다면 두 그룹의 차이를 보다 명확하게 볼 수 있는 방법은 없을까요? 바로 이떄 필요할 것이 의사결정나무 모형입니다.

의사결정나무 모형

  • 히스토그램이나 막대그래프를 그려보면 관심 변수 속 관측치들이 서로 다른 값을 가지는 것이 보입니다. 그리고 데이터 분석을 통해 그 차이를 다른 변수들로 설명하려고 합니다.
  • 여러개의 설명 변수는 다양한 조건을 만들고 이 조건에 따라 관심 변수가 차이가 있다는 것은 확인할 수 있지만, 변수가 많이질수록 가능한 조건의 수도 너무 많아집니다.
  • 이를 설명하기 위해서 시작한 분석인데, 큰 차이도 없는 조건들까지 다 살펴보는 것은 무의미합니다.
  • 앞서 모자이크 그림의 예제와 같이 타이타닉 호 탑승자의 생존율의 차이를 설명하기 위해서 세 개의 설명 변수로 조합 가능한 16개의 조건을 모두 살펴볼 필요는 없다는 것이죠.
  • 그래서 휼륭한 통계학자들은 모든 설명 변수가 아니라 중요한 변수들만 선택해서 차이를 설명하는 다양한 통계 모형(Statistical Model) 을 만들었습니다.
  • 모형의 알고리즘을 이해하는 것은 어렵지만, 원리를 이해하고 잘 활용하면 손쉽게 정보를 얻을 수 있습니다. 그중에서 직관적으로 이해할 수 있는 의사결정나무 모형(Decision tree) 에 대해 살펴봅시다.
  • 의사결정나무가 가지를 뻗는 방식을 그림으로 살펴보면 다음과 같습니다.


  • 예를 들어 초등학교에서 안경을 쓴 학생의 비율이 30%라고 합시다. 학년을 기준으로 고학년과 저학년을 나눠봤더니, 고학년 중에서 안경 쓴 학생의 비율은 29% 였습니다.
  • 반면, 성별을 기준으로 나눠봤더니, 남학생들의 비율은 40% 여학생들의 비율은 20%가 되었습니다. 그럼 '학년'과 '성별' 중에서 어느 변수가 '안경을 쓸 확률'을 더 잘 설명할까요?
  • 당연히 더 큰 차이를 만들어 내는 '성별'입니다
  • 의사결정나무 모형은 이렇게 그룹끼리 더 큰 차이를 만드는 변수를 찾아줍니다. 심지어 한 번이 아니라 계속해서 가지를 뻗고, 또 변수를 찾습니다.


  • 최적의 조건으로 나뉜 각각의 그룹에서 또 다시 조건을 찾습니다. 더 작은 2개의 그룹을 만들 최적의 조건을 찾으면, 전체 관측치를 더 잘게 나누죠.

  • 그냥 나눠지는 것이 아니라 더 큰 차이를 보이는 그룹별로 나누어 차이는 점점 벌어집니다.

  • 그리고 이후 적절한 순간이 오면 가지치키를 해서 의미 없는 잔가지를 덜어내죠.

  • 타이타닉호에 탑승했던 2,201명 중 생존율이 높았던 사람들은 누구일까요?

  • 앞서 모자이크 그림에서 다뤘듯이 타이타닉 호의 탑승자들을 좌석등급, 성별, 연령으로 구분해서 16개의 그룹으로 나눌 수도 있겠지만, 굳이 복잡하게 16개 그룹을 다 쓸 필요는 없습니다.

  • 이번에는 좀 더 간단하게 분석 도구 R에서 구현된 의사결정나무 모형을 써써 최적의 조건을 찾아보겠습니다.


  • 의사결정나무 모형이 찾은 최적의 조건은 '성별=남자'입니다.
  • 이조건과 일치하는 사람들은 왼쪽으로, 나머지는 오른쪽으로 이동합니다.
  • 제일 왼쪽 남자 어름 그룹은 생종율이 20%로 가장 낮네요. 이 이후로 나무는 더 이상 가지를 뻗지 않았습니다. 더 이상 가지를 뻗어 봤자 큰 차이가 없다고 판단한 것입니다.
  • 의사결정나무 모형은 3개의 설명 변수로 나눌 수 있는 16개의 그룹을 모두 만드는 대신 5개의 그룹을 만들었습니다.
  • 남자 어른의 생존율은 20%로 가장 낮았고 1, 2등석의 여자와 여자 선원, 아이의 생존율은 93%, 100%로 매우 높은 것을 보여줍니다. 당연히 더 많은 그룹을 쓸수록 더 세부적인 생존율 차이를 확인할 수 있겠지만, 의사결정나무 모형은 의미 있는 차이를 보여주는 5개의 그룹만으로 생존율의 차이를 효율적으로 나타냈습니다.
  • 이를 활용해 여러 작은 그룹들을 만들고 그룹에 포함된 관측치들이 어떤 확률을 계산했죠. 바로 '조건부 확률'입니다.
  • 비록 의사결정나무 모형 자체를 구현하는 알고리즘은 상당히 복잡하지만, 결과는 직관적이고 이햐하기가 쉽죠. 통계학 때문에 통계를 두려워할 필요는 없습니다.
  • 이처럼 유용한 도구를 잘 사용하고 좋은 알고리즘을 만든 통계학자에게 감사한 마음만 가지면 됩니다. 다음으로는 조금 오래된 또 다른 통계학자들의 노력의 산물을 살펴 봅시다.


+ Recent posts