추세선(Trend line)의 매력(3)

추세선이 가격의 변동 방향을 가리키는 수단으로 사용될 때는 앞에서 소개한 관계나 패턴을 발견하는 일반적 도구와는 다소 다른 모습으로 사용된다. 뭐, 크게 복잡한 내용은 없다. 누구든 몇 가지만 인지하면 추세선을 바로 실전에 사용할 수 있다.

  1. 추세선은 시간의 흐름에 따라서 가격이 움직이는 방향을 가리킨다.
  2. 추세선은 시간적으로 최소한 두 지점을 연결한다.
  3. 가격의 변동 방향이라는 관점에서 추세선은 크게 세 가지가 있다: 하락 추세선(downtrend), 상승 추세선(uptrend), 보합(혹은 횡보: sideway). 하락 추세선은 곰 추세(bearish trend), 상승 추세선은 황소 추세(bullish trend)라고도 불린다.
  4. 고점(highs)연결하여 구성한 추세선을 저항(resistance) 선이라고 부르고, 저점(lows)을 연결하여 구성한 추세선을 지지(support) 선이라고 부른다.
  5. 가격의 흐름이 상승에서 하락, 반대로 하락에서 상승으로 바뀌는 것을 반전(reversal)이라고 부른다.

이상을 다음과 같이 그림으로 표시할 수 있다.

위 그림은 상승 추세(uptrend)를 보여주고 있다. 그래프의 상부 꼭지점(고점이라고 부른다)들을 연결하여 붉은색 추세선이 만들어졌는데 그것은 저항(resistance) 선을 나타낸다.  그래프의 하부 꼭지점을 연결하여 파란색 추세선이 만들어졌는데 그것은 지지(support) 선을 나타낸다.

아래 그림은 하락 추세(downtrend)를 보여주고 있다. 상승 추세의 경우와 방향만 다를 뿐 추세선을 그리는 방법은 동일하다.

아래 그림에서 보듯이 상승 추세는 황소의 뿔처럼 생겼다고 해서 황소선(bullish trend)이라고 부르고, 하락 추세는 곰의 등처럼 생겼다고 해서 곰선(bearish trend)라고 부른다.

아래 그림은 저항선과 지지선의 의미를 보여준다. 그래프에서 저항선을 넘어서 가격이 상승한 경우가 두 번 있다. 그 경우 우리는 그 가격이 다시 하강하리라 예상한다. 주식의 가격이 저항선을 넘어서 오르면 저항(?)을 받아서 다시 떨어지게 된다는 의미에서 이름이 저항선이다.

반대로 지지선 아래로 주식의 가격이 여러 차례 떨어졌다. 그 경우 가격이 다소 상승하리라는 예상이 가능하다. 무언가가 받쳐주고 있는 것처럼 말이다. 그래서 이름이 지지선이다.

주식 가격은 캔들스틱 차트와 추세선이 함께 사용되는 경우가 흔하다. 캔들스틱 차트는 다섯 가지 정보를 가지고 작성된다. 몸통(real body)이라고 부르는 부분은, 가격이 떨어졌을 때는 시가(opening price)가 맨 상단이 되고, 종가(closing price)가 맨 하단이 된다. 가격이 올라갔을 때는 종가가 상단, 시가가 하단이 된다.

아래 그림에서 가격이 떨어진 경우는 붉은 막대로 표시되고 가격이 올라간 경우는 초록색 막대로 표시되었다. 그 둘을 하얀색과 검정색으로 표시할 수도 있으나 중요한 점은 색으로 가격 하락과 가격 상승을 구분한다는 것이다. 몸통에 해당되는 막대를 보면 윗쪽과 아래쪽에 가는 선이 그려져 있다. 윗선(wick, 심지)의 끝은 장중최고가를, 아랫선(tail,  꼬리)의 끝은 장중최저가를 표시한다. 이렇게 해서 막대와 가는선은 특정한 장(예컨대 1일장)의 시가, 종가, 최고가, 최저가, 그리고 가격의 상승(혹은 하락)이라는 주요 정보를 모두 보여준다. 이 캔들스틱을 연결하여 추세선을 그리기도 한다.

아래 그림은 캔들스틱차트를 가지고 추세선을 그린 사례이다. 추세선을 그리는 두 가지 방법이 있다. 하나는 캔들스틱의 심지끝(장중최고가)을 연결해서 그리는 방법, 다른 하나는 몸통 상단(가격하향 추세인 경우 시가, 붉은색 몸통의 상단)을 연결하여 그리는 방법이다. 어느쪽을 선택하든 일관성을 유지해야 한다. 아래 그림에서 하얀색 번호 1과 2를 연결한 추세선을 보면 X 표가 된 시점을 지나가면 더 이상 유효하지 않다. 만약 그 이후의 시점들에도 유효한 추세선을 그리려면 숫자 1을 노란색 숫자 2와 연결해야 한다. 어느 지점을 연결해서 추세선을 그리느냐는 분석자의 판단에 달려 있다. 

이상으로 간략히 가격 추세선과 캔들스틱차트를 살펴보았다. 이 정도의 지식을 갖고 주식변동 차트를 관찰해도 어느 시점에서 주식을 사고 팔 것인지를 결정할 수 있다. 문제는 국면이 하락 추세일 일부인지, 상승 추세의 일부인지, 아니면 하락 추세 중의 일시적 상승 국면인지 혹은 상승 추세 중 일시적 하락 국면인지, 아니면 하락 추세에서 상승 추세로 돌아서는 반전 국면인지에 대한 판단에는 불확실성과 리스크가 따른다는 점이다.

그래프는 그런 판단에 약간의 도움이 되는 것 뿐이다. 주식 투자의 성패는 올곧이 투자자의 판단과 선택에 달려 있다.

이상으로 추세선에 대한 소개를 마친다. 추세선(혹은 추세선 분석)은 전문적인 통계 지식 없이도 누구나 사용할 수 있는 도구이다. 특히 엑셀은 아주 손쉽게 추세선을 그릴 수 있게 해준다.

추세선(Trend line)의 매력(2)

선형적합에 가장 널리 사용되는 방법은 OLS(Ordinary Least Sqaures, 최소자승법)이다. 간단히 말하자면, 독립변수의 각 값에서 직선에 의해 예측된 점으로부터 관측점까지의 거리를 제곱하여 더한 값을 최소화(최소자승의 의미)하는 추세선이다.

위 그림은 어떤 음향기기 대리점에서 광고횟수에 따른 음향기기 판매액의 변동을 기록한 것이다. 왼편 상단의 표를 보면, 첫 주에는 2회 광고를 냈고, 50달러의 매출을 올렸다. 둘째 주에는 5회 광고를 냈고, 57달러의 매출을 올렸다. 3주차에는 1회 광고에 41달러, 4주차에는 3회 광고에 54달러의 매출을 올렸다.

위 그림의 오른편에는 이 데이터가 그래프로 표현되어 있다. 이 그래프는 주차는 무시하고 광고횟수와 매출액의 관계를 보여주고 있다. 그래프를 보면 1회 광고를 냈을 때 41달러 매출을 올리기도 하고 38달러 매출을 올리기도 했다. 2회 광고를 냈을 때 50달러를 올리기도 하고 46달러를 올리기도 했다. 3회 광고를 냈을 때는 54달러를 올리기도 했고, 48달러를 올리기도 했다.

엑셀에서 이 그래프에 추세선을 그렸더니 파란색 점선이 나타났다. 수식으로 표현하니  이다. 그냥 눈으로 봐도 이 추세선은 광고횟수(x)와 매출액(y) 사이의 관계를 잘 대표하는 것 같다.

이 추세선으로 예측된 y 값을 구하려면, 위 식에 1, 2, 3, 4, 5를 각각 넣으면 된다. 아래는 그렇게 해서 구한 예측된 매출액, 그리고 그것과 실제 매출액과의 차이인 오차가 제시되어 있다. 그 오차를 제곱하여 더한 값이 오차제곱의 합 75.95(달러)이다.

이 값은 ‘최소자승’의 정의상 자승값 중 최소이기 때문에 다른 어떤 직선을 그려도 오차제곱의 합이 이보다 작을 수는 없다. 이 추세선은 회귀선(regression line)이라고도 불리는데 구하는 과정은 다음과 같다.

오차(error)란, 주어진  값에서 실제로 관찰된  값과,  라는 방정식(직선의 식)을 통해서 추정된 의 값(), 즉,

과의 차이()를 말한다.

아래 그림에서 별로 표시된 것은 관찰값이고 회귀-추세선의 예측값으로부터 거리–중괄호로 표시된 부분–가 편차(오차, deviation, error)이다.

이 오차의 제곱을 모두 더하여 얻어지는 수, 즉, 오차제곱의 합(sum of squared errors, SSE),

를 최소화한다는 기준을 만족시키는 식 (1)의  (절편)와 (기울기)을 구하는 것이다.

식 (2)에 식 (1)을 대입하면,

이 식을 최소화하는 와 를 구하기 위해서는 두 미지수에 대해 편미분을 하고 각각을 0으로 놓고 풀면 된다.

먼저 절편 에 대해 식 (3)을 편미분해 보자.

이 식의 양변을 -2로 나누고 시그마에 관해 정리하면,

여기서 이므로, 그것을 좌변에 놓고, 나머지 항을 우변으로 이항한다.

양변을 으로 나누면,

여기서 는 의 평균 이고, 는 의 평균 이므로, 결국

가 된다.

다음 기울기 에 대해 편미분 하자.

이 식의 양변을 -2로 나누고 괄호를 풀면,

식 (6)을 식 (7)에 대입하고 정리하면 약간의 복잡한 계산을 거쳐서 아래 식을 얻는다.

데이터를 가지면 (8)을 풀 수 있고, 거기서 얻은 기울기 의 값을 (6)에 대입하고 데이터로부터 X의 평균과 Y의 평균을 구해서 대입하면 절편 를 구할 수 있다.

도출 과정에 합성함수의 편미분, 시그마의 편미분이 포함되어 있어 다소 복잡한 수학적 표현이 되었다. 다행히 그 도출과정을 모두 이해하지 못한다고 하더라도 엑셀에서 데이터를 가지고 좌표상에 분포를 표시한 후에 아래 그림처럼 추세선 옵션 창에서 선형 추세선과 ‘수식을 차트에 표시하기’를 선택하면 그것을 손쉽게 구할 수 있다. 만약 선형(직선) 추세선이 데이터를 적절히 요약하지 못한다고 생각되면, 지수, 로그, 다항식, 이동평균 등 다양한 모습의 추세선을 적합할 수 있다.

현실에서 추세선은 주식, 암호화폐, 금, 선물 등의 투자에 널리 활용된다. 그 때 추세선은 해당 상품의 가격 변동의 방향을 의미한다. 근본은 통계학에서의 추세선과 다르지 않지만 개념과 용어가 다르기 때문에 다음 포스팅에서 간략히 소개하겠다.

추세선(Trend line)의 매력(1)

대학에서 통계학 수업을 수강하면, 대체로 한 달 이내 그래프(graph)를 배우게 된다. 아마도 그래프가 데이터를 요약하기 간편하고 프리젠테이션에 효과적인 도구이기 때문이 아닐까 생각한다.

그렇다고 통계학에서 그래프가 좋은 대우를 받았던 것은 아니다. 수식과 숫자에 약한 초보자 혹은 비전공자에게 통계적 발견을 소개하거나 통계분석 결과를 집약해서 보여주는 도구 정도로 간주되는 게 보통이었다. 한 마디로 통계에서 그래프는 부수적인 수단 혹은 주변적 도구에 불과했다. 탁월한 통계학자였던 John W. Tukey는 예외라고 할 수 있겠지만, 그 마저도 그래프를 데이터를 탐색해서 가설을 끌어내는 수단 정도로만 생각했다(Exploratory Data Analysis를 참조하시오).

사실 결코 그래프가 수식이나 숫자만큼 엄격하고 치밀한 표현 수단일 수는 없을 것이다. 더구나 거의 항상 한 줌에 불과한 표본(sample) 데이터를 손에 쥐고 모수(parameters)를 추정해야 했던 통계학자들에게 데이터의 그래프적 표현이란 기껏해야 데이터를 탐색하거나 분석 결과를 전달하는 수단에 불과했을 것임에 분명하다.

그러나 데이터의 시각화(data visualization)–그래프를 그리는 것을 요즘은 이렇게 표현한다–는 그것이 지난 단점(엄격하지도 치밀하지도 못하다)에도 불구하고 빅데이터 시대에 각광받는 분야가 되었다. 아마도 강력한 두 가지 매력 때문일 것이다.

첫째는 직관성이다. 특히 두 변수의 관계나 한 변수의 시간에 따른 변화를 보여주는 데 그래프보다 더 직관적인 도구는 없을 것이다. 상관계수처럼 숫자 하나로 보여줄 수 있지만 그것은 범주형 변수(categorical variable)에는 사용할 수 없고, 교차표(cross-table)처럼 하나의 표로 보여줄 수도 있지만 수치형 변수의 경우 정보를 잃으면서 범주형 변수로 변환해야 하는 약점이 있다.  특히 하나의 변수가 시간에 따라 변해가는 모습을 직관적으로 느끼게끔 보여주는 데는 그래프가 최고임에 틀림없다.

위 그래프는 통계청에서 다운로드 받은 데이터를 가지고 엑셀로 그린 것이다. 우리 경제가 약 65년 동안 세 해(1980년, 1998년, 2008년)를 제외하고 눈부시게 성장했음을 이보다 더 잘 나타낼 수 있는 방법이 있을까 하는 의문이 들 정도 인상적이다.

둘째는 소음 제거 능력이다. 이는 엄격하지 못하다는 단점이 장점으로 작용하는 점이다. 두 변수 사이의 관계나 어떤 변수의 변동 패턴을 파악하는 데 있어서는 디테일이 장애 요인이 되곤한다. 디테일에 집착하면 데이터 마이닝에서 말하는 과적합(overfitting)의 함정에 빠지게 된다. 디테일을 반영한 모형(model)은 그 모형을 훈련시키는 데 사용한 학습 데이터에는 대단히 잘 적합하겠지만 일반성이 떨어져서 모형의 예측력이 약하게 된다는 말이다.

 

위 그래프는 2010년 3월 10일부터 5월 12일 사이 약 두 달 동안 인텔주식의 가격이 어떻게 변동했는 지를 보여준다. 붉은 색의 선은 엑셀에서 3차 다항식을 적용해서 추세선을 그린 것이다. 그래프 메뉴에서 추세선 서식 –> 추세선 옵션 –> 다항식 3차수를 선택하면 그려진다. 그 추세선이 주가의 변동을 썩 잘 나타내주고 있다고 생각되지는 않지만 다른 추세선에 비하면 상대적으로  우수한 편이다.

그래프의 직관성과 소음제거능력이라는 두 가지 장점은 빅데이터에서 특히 빛이 난다. 데이터의 양이 많아지면 신호(signals) 대 소음(noises)의 비율이 높아지고, 그 때문에 직관적으로 변수 사이의 관계를 추정하거나 하나의 변수에 존재하는 패턴이나 트렌드를 찾기 어렵게 된다. 그래프는 거칠기는 하지만 과감하게 데이터에 숨겨진 패턴을 드러내 준다.

그러한 장점을 지닌 그래픽 기법 중 하나가 바로 추세선(trend line: 영어 표현 그대로 트렌드 라인이라고도 부름)이다. 위 사례에서처럼 추세선이 다차 함수 행태를 취할 수도 있지만 대체로 1차나 2차 함수이다.

특히 1차함수 직선이 자주 사용된다. 데이터의 숨은 패턴을 잘 보여주는 직선을 데이터가 분포된 좌표에 표시하는 것을 선형 적합(linear fitting)이라고 부른다. 선형적합은 두 변수(혹은 그 이상의 변수들)로 구성된 데이터의 추세선을 그리는데 가장 널리 사용되므로 포스팅을 바꾸어 소개한다.

어떻게 하면 교차표를 잘 만들 수 있나?

통계를 사용한 보고서에서 가장 많이 사용되는 기법 중 하나는 교차표(cross-table: 분할표, contingency table라고도 부름)이다. 교차표는 사회과학 전공자들이 대학이나 대학원에서 익혀두면 평생 요긴하게 써먹을 수 있는 통계 지식이다.

그런데, 학생들은 물론이고 전문가들이 작성한 논문이나 보고서(보고서의 부록으로 제시하는 교차표가 아니라 본문에 삽입되는 교차표)에 담긴 교차표를 보면 아쉽다는 생각이 들 때가 많다. 그래서 교차표를 작성할 때 유용하게 적용할 수 있는 몇 가지 원칙을 소개한다.

논문이나 보고서에서 학생들은 흔히 엑셀, SPSS, 파이썬 같은 소프트웨어가 생성하는 교차표를 그냥 옮겨 놓는다. 물론 좀 재치있는 학생들은 그것을 약간 다듬어 보기 좋게 만들거나 보다 신기한 모양의 그래프로 바꾸어 놓기도 한다. 진실은 통계 소프트웨어가 쏟아내는 교차표를 그냥 가져오는 경우가 최악(?)이지만 외양을 바꾼다고 교차표의 품질이 크게 개선되지는 않는다는 사실이다. 문제가 그보다 더 근본적인 수준에서 발생하기 때문이다. 그점들에 관해 한번 살펴 보자.

정보성과 전달력 사이의 균형 잡기

기본적으로 교차표는 범주형 변수(categorical variables)들의 관계를 나타내 주는 도구이다. 수치형 변수와 달리 범주형 변수는 비교적 소수의 범주(category) 혹은 계급(class)으로 구성되어 있다.

예컨대 성별은 남녀 2개, 대학 학년은 1,2,3,4학년 4개, 인종은 대체로 황인, 백인, 흑인 3개, 종교는 좀 많아서 흔히 불교, 유교, 개신교, 천주교, 유대교, 이슬람교,  기타 7개의 범주로 되어 있다. 설문조사에서 자주 사용되는 리커트 척도는 ‘매우 반대’, ‘반대’, ‘보통’, ‘찬성’, ‘매우 찬성’과 같이 5개의 범주로 구성된다.

수치형 변수라고 교차표를 적용할 수 없는 것은 아니다. 원래 측정은 수치형으로 했더라고 얼마든지 범주형으로 전환할 수 있다. 다만 수치형 변수를 범주화(그룹화라고도 한다)하면 정보를 잃는다.

예컨대 가구소득은 흔히 수치형 척도를 사용해서 측정된다. 설문조사 응답자에게 해당 가구의 평균적인 월별 수입을 만 단위까지 직접 기재하게 한다. 연구자가 거주지역(대도시, 중소도시, 농촌)에 따른 소득의 차이를 보여주고자 한다면, 거주지역별 소득 평균을 표나 그래프로 만들어 제시할 수도 있겠지만, 거주지역과 가구소득의 교차표를 만들어 그 두 변수들 사이의 관계를 보여줄 수도 있다. 그런 경우 가구소득을 범주화해야 교차표를 만들 수 있다. 수치형 변수를 사후적(측정후)으로 범주화하는 것이다.

물론 사람들이 가구 소득을 정확히 모르거나 알려주는 것을 기피하기 때문에 현실에서는 아예 정확한 측정을 포기하고,  ‘100만원 미만’, ‘100만원 이상 300만원 미만’, ‘300백만원 이상 500만원 미만’, ‘500만원 이상 700만원 미만’, ‘700만원 이상’처럼 범주를 제시하여 응답자가 선택하게 하기도 한다. 이는 원래 수치형으로 존재하는 변수를 범주형으로 측정하는 경우이다.

연구자는 교차표에 들어가는 각 변수(특징)의 범주를 몇 개로 할 것인가를 결정해야 한다. 성별과 같은 변수는 범주의 수가 2개로 고정되어 있지만 그것은 예외적인 경우이다. 수치형 변수의 볌주화에 있어서 당연히 그것은 중요한 선택이지만, 다수(3개 이상)의 범주로 측정된 범주형 변수인 경우에도 왕왕 재범주화는 중요한 결정이 되곤 한다.

2개의 변수로만 구성된 2차원 교차표의 경우는 비교적 여러 개의 범주들을 무리없이 사용할 수 있지만, 3개, 4개 혹은 그 이상의 변수들로 구성된 다차원 교차표의 경우 변수들의 범주 수는 과감히 줄일 수밖에 없다.

예컨대 성별, 교육수준, 출신계층에 따른 직업적 성취를 보고자 한다면, 성별 2개, 교육수준 2개(대졸, 대졸 미만), 출신계층 3개(상층, 중간층, 하층), 직업적 성취 4개(생산직, 서비스직, 사무직, 경영자)만으로 구성해도 48개의 칸(cell)을 갖는 복잡한 교차표가 된다. 조금만 디테일에 욕심을 내면 교차표 칸의 갯수는 금방 100개가 넘어가고 직관적 해독이 불가능한 교차표가 될 것이다.

꼭 기억해 둘 점은, 복잡한 교차표 분석을 수행하는 경우(그 경우 로그선형 모형 같은 수학적 모형과 그것을 구현하는 알고리즘이 패턴을 찾아내거나 관계를 드러내준다)를 제외하고 교차표는 직관적인 커뮤니케이션(의사소통)을 위해서 만든다는 사실이다. 직관적 커뮤니케이션! 이 점을 놓치면 교차표는 목표와 방향을 잃고 만다.

실제 사례를 하나 보자. 아래 표는 kiva.org라는 국제적인 소액대출(micro-financing) 사이트가 공개한 대출 데이터이다. 그것은 약 67만 건의 큰 데이터셋으로 아래는 MS 엑셀에 불러들여서 보기 편하게 숨기기(인스턴스 11부터 671,185까지는 숨겨져 있음)를 해놓은 결과이다.

<그림 1> Kiva.org의 대출 내력 데이터셋

이 데이터셋은 대출에 관련된 20 가지 변수를 담고 있는데, 이 그림에는 대출 일련번호, 대출신청액(funded amount), 대출액(loan amount), 대출이 시행된 활동(actor), 대출이 시행된 부문(sector), 대출 사용 용도(use), 대출이 시행된 국가(country)와 지역(region)이 보인다.

엑셀의 피벗테이블 기능을 이용하면 손쉽게 아래와 같은 교차표를 만들 수 있다.

<그림 2> 엑셀의 피벗 테이블로 작성한 교차표(범주화 전)

대출 부문(sector)과 대출액(loan amount)의 교차표인데, 대출 부문은 범주형(15개 범주) 변수이고 대출액은 수치형 변수(25 달러부터 10만 달러까지)이다. 대출액을 범주형으로 변환하지 않으니 좀 말도 안되는 교차표가 생성되었다. 숨기기 기능을 사용했기 때문에 열의 처음과 끝 부분을 볼 수 있지 그렇지 않으면 한꺼번에 교차표 전체를 보는 것은 애시당초 불가능했을 것이다. 이렇듯이 교차표 분석을 하려면 수치형 변수는 먼저 범주화를 해야 한다.

25 달러부터 10만 달러까지 분포하는 대출액을 몇 개의 범주로 어떻게 범주화할 것인가? 이 데이터는 소액 대출에 관한 것이다. 판단 기준이 무엇이냐에 따라 다르기는 하지만 5만 달러나 10만 달러를 소액으로 간주하기는 어려울 것이다. 5천 달러 정도면 소액 대출의 상한선으로 볼 수 있을 않을까? 그렇다면 5천 달러 이상을 하나의 범주로 묶고, 5천 달러 이하를 그룹화(엑셀 용어)하자. 그런데 급간(clas range)을 어느 정도 크기로 할까? 1천 달러로 하면 5개의 범주가 생성된다. 그런데 개도국에서는 500 달러도 큰 돈이다. 5백 달러를 급간으로 해서 10개의 범주를 생성하는 것이 어떨까? 그렇게 해서 생성한 교차표가 아래에 있다.

<그림 3> 대출액을 범주화하여 재작성한 교차표

15_by_11의 교차표가 생성되었다. 교차표에 사용된 변수들의 이름도 붙이고 단위도 표시했다. 이 표를 보면, 전체 대출 건수의 거의 절반이 500 달러 미만임을 알 수 있다. 만약 1,000 달러를 급간으로 삼았다면 그 사실을 모를 뻔 했다.

각 부문별 대출액별 빈도 분포를 보기 위해 행합계비율로 필드 표시를 바꾸어 보자.

<그림 4> Kiva.org의 마이크로파이낸싱 내력(2016. 3~2018.3): 대출규모별 대출건수의 대출 부문별 비율(%). 데이터 출전: Kaggle.com.

‘필드 표시’에서 행합계비율을 선택했더니 위의 교차표를 얻었다. 이 표를 잠깐 들여다보면, 전체 대출 건수의 49.24%가 500 달러 미만이었고, 74.89%가 1천 달러 미만이었다. 대출 부문별로는 개인 용도의 경우 500 달러 미만이 압도적으로 많았으며, 소매업, 운수, 식품, 예술 부문에서도 500 달러 미만의 대출이 절반 정도를 차지했다. 반면에 도매업, 연예, 교육 부문은 70% 이상의 대출이 500 달러 이상이었다.

이 사례에서 보듯이 교차표를 통해서 제시하려고 하는 것은 두(혹은 그 이상) 변수들의 관계에 대한 데이터 기반의 증거이다. 그것은 최대한 정확한 사실이어야 한다. 정보손실의 관점에서만 보면, 가장 바람직한 범주화(categorization)는 변수들의 최대한 상세한 범주를 유지하는 것이다. 변수의 측정을 지나치게 단순화하면–예컨대 범주의 갯수를 크게 줄이면–많은 정보 손실이 발생하게 된다.

그러나 정보손실을 줄이기 위해 디테일에 집착하면 정보전달에 있어 세 가지 문제가 발생할 수 있다. 1) 이상치(outliers), 측정 오류 등 같은 소음(noise)이 두드러져서 데이터로부터 신호(signals)를 판별해 내기 어려워질 수 있다. 2) 범주가 너무 많아져서 구조적 영(structural zeros)이나 극소수의 빈도만 있는 칸이 늘어나게 된다. 이 현상은 데이터가 적거나 데이터가 편중되어 있는 경우에 발생할 가능성이 높다. 3) 교차표의 칸이 너무 많아져서 교차표가 크게 복잡해지고 그에 따라 직관성이 떨어지게 된다. 

만약 위 사례에서 부문 대신 국가별 대출 분포를 교차표로 만들면, 나라 수만도 120 개국이 넘기 때문에 표를 만드는데 당장 문제가 생긴다. 행이 127개이고 열이 10개라면 교차표에는 총 1,270 개의 칸이 존재하기 때문이다. 그렇다면 분석에 포함될 나라의 수효를 적절하게 줄여야만 할 것이다. 한 가지 방법은 대륙별로 가장 대출 건이 많은 2-3개의 국가만 포함시키고 나머지 국가들은 모두 ‘기타’라는 잔여범주(residual category)로 처리하는 것이다. 그렇게하면 나라(country)는 한 열 개 남짓의 범주로 줄어들 것이다.

그런데, 만약 분석에 포함될 국가 수를 다섯 개 이하로 줄이거나 다섯 개 이하의 범주(‘대륙’이 하나의 사례가 될 수 있다)로 범주화하면 커다란 정보 손실이 발생할 가능성이 대단히 크다. 분석 목적에 따라 정도의 차이가 있겠지만 말이다. “아프리카, 아시아, 중남미, 기타”로 나누었다고 상상해 보라. 만약 분석 목표가 국가별 대출 분포라면 그런 범주화는 심각한 정보 손실을 수반할 것임에 분명하다.

이 사례에서 보듯이 교차표를 작성하는데 전달력에 집착하면 정보성이 떨어지고 정보성을 지나치게 우선시하면 전달력이 저하되는 득실교환(trade-off) 현상이 발생한다. 득실 교환 문제를 해결하는 일반적인 원칙은 없다. 그 때 그 때 연구자의 사려 깊은 대처가 필요한 문제이다.

교차표 작성에 고려되어야 할 한두 가지 원리만 추가하다면, 우선 완결성(completeness)을 들 수 있을 것이다. 교차표는 그것만 보아도 그 표의 속성과 내용을 충분히 파악할 수 있어야 한다. 직관적인 표제, 변수 이름, 그리고 출전, 수집일, 수집 기관 등을 담은 주석이 필요하다. 위 <그림 4>는 완결성이 높은 모습의 교차표이다.

다른 하나는 교차표가 창저적(彰著的, revealing)이어야 한다는 것이다. 즉, 교차표가 변수들의 관계에 관해 흥미 있는 사실을 드러내주어야 한다는 말이다. 예컨대 <그림 4>를 보면, 교육(education) 부문의 건당 대출액이 주택(housing)이나 제조업(manufacturing) 부문보다  상대적으로 크다는 사실이 흥미롭다.

교차표가 아무리 객관적이고 과학적인 의사소통 도구라고 해도 신기하고 예쁘다는 점이 나쁠 수는 없다. 문제는 그것 때문에 교차표가 원래 목표했던 의사소통에 실패한다면, 교차표는 목표와 방향을 잃은 셈이다.

이 간략한 포스팅이 교차표 혹은 표 작성이 도움이 되길 바란다(2019/03/17, 윤영민)

Excel, 흔한, 그러나 편하고 강력한 데이터 분석 tool

세 해째 통계와 데이터과학 수업에 마이크로소프트 엑셀을 사용하면서 여러가지로 느끼는 게 많다. 아쉬운 점이 없지 않지만 이렇게 좋은 도구가 또 있을까 싶다. 어차피 업무에서 엑셀을 사용하니 소프트웨어를 구입해야 하는 비용 부담도 없고, 배우기 쉬울 뿐 아니라 업무에 필요한 기능을 대부분 갖추고 있다. 대규모 데이터를 다루는데 불편하고 종종 찾는 기능이 없어 당황하곤 하지만 말이다(비주얼 베이직 프로그래밍을 할 수 있다면 그런 경우가 훨 적을 것이다). 뭐 값비싼 다른 통계 전문 패키지를 사용한다고 해서 그런 불편이 없는 것도 아니니 그것이 꼭 엑셀만의 문제라고 할 수는 없다. 파이썬이나 R로 스스로 프로그래밍을 하지 않은 다음에야 피할 수 없는 문제이리라.

그렇게 놓고 보면 엑셀을 배우는데 들이는 투자는 가성비가 아주 높다. 그래서 데이터 분석에 엑셀을 어떻게 사용할 수 있는 지를 조금 소개해 볼까 한다.

먼저 미래 예측에 대한 기능을 보자. 미래 예측이라면 거창한 것 같지만 사실 현업에서는 알게 모르게 늘 하는 일이다. 다음 달(혹은 다음 분기나 내년도 좋다) 매출이 얼마나 될까? 투자액에 따라 성과가 얼마나 달라질까? 다음 주 A기업의 주가는? 향후 6개월 간 A기업의 주가는 어떻게 변할까? 뭐 그런 의문에 대해 답하는 일이 미래 예측에 다름 아니다.

놀랍게도 그 정도의 예측은 엑셀 가지고 훌륭히 해낼 수 있다. 내 수업에서 다룬 시나리오 예측, 선형회귀 모형 예측, 시계열 예측을 소개한다.

대학에서의 통계 교육

금년에 처음으로 기초 통계와 중급 통계를 두 학기에 걸쳐서 가르쳤다. 기초 과목에서는 기술통계를, 중급 과목에서는 추리통계를 다루었다. 기술통계에서는 데이터의 개념과 측정 수준 등에서부터 확률분포까지 수업했고, 추리통계에서는 기술통계를 복습하고 확률이론, 모수 추정, 가설 검증, 분산분석, 상관분석, 회귀분석까지 수업했다.

통상 사회과학 전공에서는 한 학기에 그 모든 내용을 다루는데 그것은 학생들과 교수자 모두에게 버거운 일이다. 두 학기로 나누어서 수업을 하니 절대 다수의 학생들이 수업에 따라 올 수 있도록 지도할 수 있었다. 거의 매주 퀴즈를 보고 다수의 학생들이 수업 내용을 이해하지 못한다고 판단이 들면 몇 번이고 반복해서 강의했다. 한 학기에 몰아서 할 때는 상상할 수 없었던 현상이다.

세상에 관한 몇 가지 진실(1): 일과 잉여

매월 급여 명세서를 읽을 때마다 나는 화를 누르기 쉽지 않다. 정부가 가져가는 세금 때문이다.

오해하지 말라. 세금이 많아서가 아니다. 내 몸에 빨대를 꽂고 있는 잉여들, 세금 도둑들 때문이다.

세상에 관한 가장 중요한 진실은 “쓸데없는 일은 ‘일’이 아니라 ‘잉여’다” 라는 명제이다. 적어도 정부 부문에 관한 한 “쓸데없는 일”는 형용모순이다. 쓸데없는 일은 일이 아니다.

정부에 관해서 ‘쓸모’에 대한 판단 기준은 딱 두 가지이다. 하나는 국민 혹은 주민의 입장에서 도움이 되는가, 둘째는 그 일을 직접 수행하는가이다. 이 두가지 기준을 충족하지 않으면 잉여이다.  실내에서 하는가 실외에서 하는가, 기획인가 집행인가 따위와는 근본적으로 관련이 없다.

(일과 잉여의 구분에 대한 예시)

1. 환경미화

일: 동네 쓰레기통에 버려진 쓰레기의 수거 행위

잉여:  쓰레기를 치우라고 지시하는 행위, 쓰레기 수거를 민간 업체에게 용역을 주고 관리하는 행위

2. 재난 예방

일: 태풍이 몰아 닥칠 때, 취약 지역, 취약 가구를 방문하여 피해가 일어날 요인을 줄이는 작업

잉여: 면사무소 안에서 확성기를 통해서 피해 방지에 유념하라고 방송하는 행위

3. 사회복지

일: 취약 가구를 방문하여 노약자를 살피고 도와주는 행위

잉여: 사회복지정보시스템을 개발하기 위해 외부 업체에 용역을 주는 행위

4. 교육

일: 학생을 지도하는 행위

잉여: 교사나 학교 운영을 감독하는 행위

5. 범죄 예방

일: 동네와 마을 순찰을 도는 행위

잉여: 마을 CCTV 설치와 관리 업무를 외부업체에게 용역 주는 행위

6. 정책 수립과 예산

일: 정책을 기획하고 예산을 수립하는 행위

잉여: 정책 기획과 예산 수립을 용역화 하는 행위

몇 가지 사례를 보았다. 어떤 공무원의 업무가 일인가 잉여인가를 판단하는 업무는 잉여이다. 그것은 머슴(공무원)의 역할이 아니라 주인(국민 혹은 주민)의 역할에 해당된다.

우리나라 정부는 수백년 묵은 잘못된 공무원 제도 때문에 발생하는 잉여가 너무 많다. 왕정과 독재정은 오래 전에 종식되었지만 그 시대에 형성된 관료 제도와 문화가 온존되어 왔다. 더구나 안정성 중심의 관료체제는 21세기 급속히 변화하는 세상과 너무 맞지 않다.

지금과 같은 신분보장=정년보장이라는 등식이 성립되는 직업공무원제도 아래에서는 세상이 빨리 변할수록 정부 내에 잉여의 비중이 급격히 증가한다. 신분보장=정년보장이 신분보장=임기보장이라는 원칙으로 바뀌어야 한다. 약간의 예외를 둘 수는 있겠지만 공무원제도의 기본틀이 임기제 혹은 계약제로 바뀌어야 한다는 말이다.

그렇지 않으면 우리 정부는 ‘용역’ 국가로 전락해 버릴 것이다. 현재도 정부의 일 중 상당 부분이 용역화된다. 공무원은 용역 관리자이고 외부 업체가 실제 일을 수행하는 방식이다.

용역을 법으로 금지해야 한다.  대신에 그 정책이 꼭 필요하다면 그 정책을 잘 수행할 수 있는 사람들을 공무원으로 채용해야 한다. 아예 해당 정책을 수행하는 부서 전체를 모듈식으로 꾸릴 수도 있을 것이다.

그것은 현재의 관료 체제에서는 불가능한 대안이다. 하지만 법적으로 한 가지만 손질하면 가능하다. 정년보장이라는 제도를 없애고 모든 공무원을 임기제 혹은 계약제로 바꾸는 것이다. 만약 전문성이 필요해서 장기 계약이 필요한 경우라면 그런 자리는 보수를 낮게 책정하고, 반대로 계약 기간이 짧은 자리는 보수를 더 많이 주어서 보상에 균형을 맞춰야 할 것이다. 지금처럼 이긴자가 다 가져가는 방식으로는 정부의 잉여를 줄일 길도, 효율적인 정부를 실현할 길도 없다.

인간의 지식은 쉽게 업그레이드되지 않는다. 반드시 많은 노력을 들여서 학습을 해야 새로운 지식을 얻을 수 있다. 그러나 빠르게 변하는 세상에서는 그런 업그레이드에 한계가 있다.  인간은 언젠가 여러가지 이유로 적응 불능 상태에 빠지게 된다. Fortran과 DOS를 배워서 컴퓨터를 시작한 기술자에게 AI 개발 업무를 맡긴다고 상상해 보라. 그냥 그것은 불가능하다.

정부 내에서 그 불가능을 가능으로 만드는 요술 방망이가 바로 ‘용역’이다.  용역 관리자는 얼마든 변신이 가능하다. 심지어 자신이 용역을 내주는 업무를 제대로 이해하지 못해도–실제로 그런 경우가 흔하다–용역을 관리할 수 있다. 업무 수준이 엉터리일 것이 불을 보듯하고 벤더(vender)들의 손바닥에서 놀아날 가능성이 매우 높지만 말이다.

용역 관리를 감독하는 사람은 없다. 왜냐면 감독자들도 그 업무를 이해하지 못하기는 마찬가지이기 때문이다. 거기에 거대한 용역 비즈니스가 발생한 공간이 존재한다.  그 공간에서 잉여로 가득찬 용역 정부가 탄생하는 것이다.

일하는 공무원은 많아도 무방하다. 비용은 좀 많이 들지만 국민, 주민이 편해진다.

그러나 잉여는 과감히 제거되어야 한다. 아마도 그러면 정부 예산의 3분의 1정도, 잘하면 절반 정도는 절약 가능할 것이다.  그것은 이 나라에서 천년 래의 사회혁명이 될 것이다.

우리 나라에는 두 종류의 사회계급이 존재한다. 공무원과 일반인이다.  헌법에는 이 나라의 주인이 국민으로 되어 있지만, 현실에서 이 나라의 주인은 공무원이다. 머슴이 주인 자리를 차리하고 있는 것이다! 엄청난 모순이다. 그들은 제 위치에 돌려보내고 국민이 주인 자리를 차지하는 것이 21세기의 진정한 혁명이다. (2018-08-25)

대학 사회통계 입문, 무엇을, 어떻게 가르칠 것인가?

introductory social statistics에 대한 이미지 검색결과

1) 가장 중요한 점은 학생들에게 “나도 통계를 할 수 있다”는 자신감을 심어주는 일이다. 사회과학 전공자들 중 수포자가 많다. 그들도 통계학이 중요하다는 사실은 안다. 도전할 자신이 없을 뿐이다.

대학 수업이 그들에게 새로 출발할 기회를 주어야 한다. 중고등학교에서 배운 지식을 전제로 가르치기보다는 필요한 부분은 중고등학교 수준부터 더 쉽고 자상하게 가르치는 게 바람직하다. 단, 한 명이라도 더 통계에 흥미를 느끼게 해야 한다.

기초통계 정도는 4년제 대학 학생이면 누구나 충분히  잘 배울 수 있고 사용할 수 있다. 통계를 포기하면 학생들이 좋은 직장의 절반을 포기해야 함을 명심하자. 

2) 초급 통계에서 가설 검증이나 회귀분석까지 다루지 않아도 될 것이다. 학생들 다수를 수업에 따라오게 하면서 한 학기에 그것까지 하기는 무리이다. 그래야 진도에 여유가 있다. 그리고 사실 현업에서 가설 검증나 회귀분석까지 하지 않아도 기술통계만으로도 업무를 충분히 멋지게 처리할 수 있다. 빅데이터 시대에는 특히 그렇다.

3) 매주 퀴즈를 시행한다. 퀴즈는 학생들이 꾸준히 공부하게 하는 방법이며, 또한 교수자가 학생들이 지난 주 수업을 잘 이해했는 지를 파악하는 효과적인 방법이기도 하다. 만약 다수의 학생이 전주의 수업을 이해하지 못했다고 판단되면 보충 수업을 해서 학생들의 이해를 끌어올려야 할 것이다.

수강생의 10%가 퀴즈에 실패하면 학생들 자신의 책임이 클 지 몰라도 수강생의 30% 이상이 퀴즈를 맞추지 못하면 교수자의 잘못이라고 판단하는 게 옳다. 철저히 준비해서 다시 가르쳐야 한다.

교수자 자신의 지식을 전달하는 것이 교육은 아니다. 교육은 학습자가 목표로 하는 지식과 능력을 습득했을 때 완성된다.  다수의 학생들이 교수자의 강의를 알아듣지 못하면 그것은 전적으로 교수자의 실패이다. 인터넷을 뒤져보면 통계를 쉽게 가르치는 데 보탬이 되는 자료가 수두룩하다. 선진국의 학교들에서 한 명의 학생이라도 더 알아듣게 하기 위해서 얼마나 다양한 자료를 사용하는 지 모른다.

통계 교육에서는 특히 시뮬레이션 방법이 효과적이다. 웹사이트나 유튜브에서 시뮬레이션 자료를 찾든 지 아니면 스스로 개발해야 할 것이다.

4) 테크니컬한 부분의 설명에만 그쳐서는 안된다. 학생들이 현실의 맥락에서 그것의 쓰임새를 인식하면서 수업에 임하도록 유도해야 한다. 학생들은 지식의 현실 적용가능성을 절실히 느낄수록 더 열심히 공부한다. 통계 수업에서 학생들의 학습 동기와 몰입은 크게 두 가지에 의해 좌우된다. 그것은 해당 지식의 필요성에 대한 인식지식 습득에 대한 자신감이다.

5) 기술통계를 제대로 활용하는 능력을 기르는데 정성을 기울여야 한다. 간단한 통계라도 정확히, 능숙하게 사용할 수 있게 해주어야 한다. 이상치(outlier)를 발견하는 박스플롯, 분포의 모양을 추정하는 히스토그램, 두 변수의 관계를 보여주는 산포도, 이동평균이나 기하평균, IQR, 사분위수, 백분위수, 확률변수, 확률분포, 조건부 확률, 베이즈 정리, 이산확률분포, 연속확률분포, 이항분포, 정규분포, 표준정규분포, z-값, 상관계수 등을 제대로 이해하고 현실 문제를 해결하는 데 사용할 수 있게 훈련시켜야 할 것이다.

6) SPSS나 SAS 같은 통계전용 프로그램 대신에 MS 엑셀을 사용하는 편이 다수의 학생들에게 도움이 될 것이다. 그리고 학생들이 엑셀 사용에 흥미 있어 한다는 사실도 중요하다. 교수에게 편한 도구가 아니라 학생들에게 유익한 도구를 채택해야 한다.

엑셀은 편리하고 유용할 뿐 아니라 SPSS로 할 수 있는 어떤 통계 분석도 가능하다. 마치 SPSS를 써야 전문적인 통계 분석을 할 수 있는 것처럼 행동하지 말자. 그것은 진실이 아니다. 엑셀에 추가 프로그램을 덧붙이면 모든 기초 통계 기법을 구현할 수 있다.

7) 학생들이 스마트폰 앱을 사용하는 방법에도 익숙하게 해주면 좋다. 엑셀, Probability Distributions 앱은 아주 유용하다. 학생들이 훗날 직장에서 바로 바로 통계 지식을 사용할 수 있으면 주위 동료나 상급자들에게 깊은 인상을 심어줄 수 있을 것이다.

클라우드 컴퓨팅 서비스와 스마트폰 앱만 잘 사용하면 즉시 업무에 관련된 공공 데이터를 불러와서 스마트폰으로 분석할 수 있다. 스마트폰에 모니터나 빔프로젝터를 연결하면 금상첨화이다.

8) 한편으로는 학생들이 초급 통계를 실제로 적용할 수 있게 훈련하고, 다른 한편으로는 학생들이 중급 과목을 잘 따라갈 수 있도록 기초를 다져주어야 한다. 조건부 확률과 베이즈 정리는 중급 이상에서 예측분석(predictive analytics)을 하는 데 필수적인 기초이다. 베이즈 정리에 확률분포만 결합하면 훌륭한 예측분석이 가능하다. 학률변수와 확률분포는 학생들에게 다소 어려운 주제이지만 좋은 사례들과 시뮬레이션 기법을 적절히 사용하면 효과적인 교육이 될 수 있다.

9) 끝으로 현실에서 가져온 연습 문제를 최대한 많이 풀어야 한다. 교수자에게 쉽지 않은 일이지만 학생들을 위해서는 생생한 실제 사례를 하나라도 더 소개해야 한다.  (윤영민, 2018-06-28)

확률변수와 확률분포(3)

이제 연속확률분포를 살펴보자. 확률변수가 실수이기 때문에 연속확률분포는 유형도 많고 적용 범위도 다양하다. 자주 사용되는 연속확률분포로는 균일확률분포(uniform probability distribution), 정규확률분포(normal probability distribution), 지수확률분포(exponential probability distribution),  분포( distribution),  분포(chi-squared distribution),  분포( distribution), 베타 분포(Beta distribution), 감마 분포(Gamma distribution), 멱함수 분포(power law distribution, Pareto distribution) 등이 있다.

균일확률분포는 단위 구간당 발생확률이 동일한 경우이다. 얼핏 보기에 그런 확률이 무슨 소용이 있을까 싶지만, 사실 아주 유용한 경우가 있다. 어떤 현상에 대한 정보가 매우 제한되어 있다면 그 현상을 균일확률분포로 가정할 수 있다. 어떤 현상에 대한 우리의 무지를 확률적으로 표현하면, 확률변수의 단위 구간당 발생 확률이 동일하다가 될 수 있다는 말이다. 균일확률분포는 베이지안 통계에서 매력적인 사전 확률분포(prior probability distribution) 후보이다. 지금까지 학교에서 주로 가르쳤던 빈도주의 통계학(frequentist statistics)에서는 별로 대우받지 못했던 균일확률분포의 위상이 베이지안 통계의 부상과  함께 달라지게 된 것이다.

표본값에서 모수를 추정하는 추리 통계학(inferential statistics)에서 정규확률분포가 차지하는 중요성이야 말할 나위도 없다. 표집분포(sampling distribution)가 정규분포를 이룬다는 점은 모수 추정을 가능하게 하는 핵심적인 이론적 근거 중 하나이다.

정규확률분포에서 확률변수를 표준화하면 표준정규확률분포가 된다. 아래는 정규확률밀도함수이다.

이 정규확률함수를  를 통해 를 로 정규화하면 평균이 0, 표준편차가 1인 표준정규확률밀도함수를 얻는다.

표준정규확률분포는 “bell curve”라고 불리며, 그것의 데이터 분포가 알려져 있다. 아래 그림에서처럼 어떤 현상이 표준정규확률분포를 이룰 경우 전체 데이터의 68.2%가 평균을 중심으로 1 표준편차 범위 내에 있으며, 전체 데이터의 95.4%는 2 표준편차의 범위 내에, 전체 데이터의 99.7%는 3 표준편차의 범위 내에 있다.

 

standard normal distribution에 대한 이미지 검색결과

이 밖에 통계적 추론에는 카이자승분포, t분포, F분포가 자주 사용되고, 베이즈 추론에는 베타와 감마 분포가 자주 사용된다. 그 분포들에 대한 설명은 생략한다.

예제를 하나 보자. 국내 대기업의 주식형 펀드에 대한 평균 수익률은 2009-2011년 3년간 14.4%였다. 3년간 수익률이 표준편차 4.4%로 정규확률분포를 따른다고 가정하자. 개별 대기업 주식형 펀드의 3년간 수익률이 적어도 20%일 확률은?

해제:   (Probability Distributions app. 이용)

(윤영민, 2018-06-19)