Excel로 하는 미래 예측(2): 시계열 예측

미래 예측에는 다양한 유형이 있을 것이다. 우선 미래를 하나의 가능성으로 바라보는 경우 — 예측(forecasting)과, 미래를 여러 가지의 가능성으로 바라보는 경우 — 시나리오 플래닝(scenario planning)이라는 유형으로 나눌 수 있을 것이다. (미래 예측에 관한 본 블로그의 다른 글을 참조할 것) 그리고 예측은 단기 예측장기 예측으로 나눌 수 있을 것이며, 예측 변수(predictors)가 몇 개냐에 따라서 나눌 수도 있다. 예측되는 표적 변수(target)의 과거 데이터만을 가지고 하는 시계열 예측(time sceries forecasting)과, 하나 이상의 예측 변수를 사용하는 지도학습 모형 예측(supervised learning model forecasting)으로 나눌 수도 있을 것이다. 그 밖에도 선형예측(linear forecasting)비선형 예측(non-linear forecasting), 시뮬레이션(simulation)실데이터 예측(real data based forecasting)으로 나눌 수도 있을 것이다.

이번 포스팅에서는 엑셀을 가지고 표적 변수의 과거 데이터만으로 수행하는 시계열 예측을 시도해 보자. 시계열 예측은 특정한 변수의 값이 과거의 시간의 흐름에 따라 어떻게 변화했는지를 알고 있다는 가정 아래 그 변수가 미래에 가질 값을 예측하는 데 관심을 둔다. 때문에 시간적 요소가 중요하다. 예컨대 주가나 날씨가자주 그러한 방법으로 예측된다.

시계열 예측에는 데이터 추동 예측(data-driven forecasting)과 모형 추동 예측(model-driven forecasting)이 있다. 데이터 추동 예측은 예측 변수와 표적 변수 사이의 구분이 없는 시계열 분석 방법이다. 예측변수는 동시에 표적 변수이다. 데이터 추동 예측에는 평균화(averaging) 또는 평활화(smoothing) 같은 기법이 사용된다. 모형 추동 예측은 독립변수와 종속변수를 포함한다. 그런데 독립변수가 시간(time). 가장 간단한 방법은 다음과 같은 형식을 지닌 선형회귀모형이다.


위의 식에서 y(t)는 시간 t에서의 표적변수의 값이다. 학습용 데이터가 주어지면 미래의 y 값을 예측하기 위해서 계수 a와 b를 추정한다.

먼저 데이터 추동 예측부터 알아보자. 엑셀로 구현하기 전에 개념적인 설명이 필요하다.

기본 개념: 시계열 예측에서는 시구간(time period)이라는 개념이 중심이다. 시구간은 문제에 따라 초, 일, 주, 월, 분기, 년 따위의 단위를 갖는다. 그리고 시구간에 대응하는 데이터 계열(time series)인 이 있고, 또한 시계(horizon)에 대한 예측(forecast)으로 라고 표기하며, n 이후 h번째 시구간에 대한 예측을 의미한다. 보통 h=1인데 그것은 마지막 데이터 포인트 직후의 시구간을 말한다. 그러나 h는 1보다 클 수 있다. 끝으로 주어진 시간 t에 대하여 예측 오류(forecast error)  가 있다.

(1) 단순 예측(naive forecast): 계열의 다음 시구간에 대한 예측 즉, 은 계열에서 마지막 데이터 포인트 와 같다고 추정된다. 식으로 표시하면,

(2) 단순 평균: 다음 시구간의 데이터 포인트를 계열의 모든 데이터 포인트의 평균으로 계산한다.

1월부터 12월까지 월간 데이터가 있다면, 다음 해 1월(n+1)의 값을 예측하기 위하여, 간단하게 1월(n=1)부터 12월(n=12)까지의 값을 평균한다.

(3) 단순이동평균(simple moving average, SMA): 단순 평균은 한 시점에서 측정치들의 평균을 가리키나 시간이 들어간 측정치들의 평균에는 이동평균을 사용한다. 시간이 흐름에 따라 측정치가 어떻게 변화되었는지를 알고 싶기 때문이다. 동일한 시구간을 잡아서 각 기간에서의 측정값들의 평균을 구한다. 이것을 단순이동평균이라고 부른다. 2일 이동평균, 5일 이동평균, 10일 이동평균, 50일 이동평균 등등. 시구간이 짧아지면 원 데이터와의 차이가 없어진다. 

만약 5일 이동평균을 계산한다면, 첫 4일은 이동평균이 없고, 5일째 되는 날 측정값의 첫 이동평균을 갖는다. 그 다음부터는 하루씩 더해진 날짜들에 해당되는 측정값들의 이동평균을 갖게 된다. 만약 25일 동안의 5일 이동평균을 구하면, 20개의 이동평균을 갖게 될 것이다.

(4) 가중이동평균(Weighted Moving Average, WMA): SMA에는 항상 현재의 측정값과의 차이가 존재한다. 이 차이를 줄이는 대안이 WMA이다. 어떤 경우에는 가장 최근의 값이 이전의 값들보다 더 큰 영향을 미친다. 대부분의 지수적 증가가 이러한 효과 때문에 발생한다. 다음 구간의 예측은 다음과 같은 모형으로 계산할 수 있다.

위 식에서 이며, 일반적으로 이다. 

(5) 지수이동평균(Exponential Moving Average, EMA): EMA는 WMA의 한 유형이다. EMA에서는 가중승수(weighting multiplier)를 사용한다.  가중승수는 로 구할 수 있다. n은 시구간의 크기이다. 만약 2일 이동평균이라면 가중승수는 2/3(2+1)이다. 시구간이 길어지면 가중승수가 작아진다.

EMA는 다음 공식으로 구할 수 있다.

  • EMA={(금일 종가 – 어제의 EMA)*가중승수}+어제의 EMA

이 식을 곰곰히 살펴보면, 어제 범한 예측오류(금일 종가 빼기 어제의 EMA)에 가중 승수를 곱하고, 그것을 어제의 예측값(EMA)에 더해 오늘에 대한 예측(EMA)로 사용한다는 의미이다.

  • 최초 EMA = 첫 계산 기간의 SMA

(6) 지수 평활화(exponential smoothing): 평활화(smoothing)의 정신은, 어떤 변수의 매일 매일의 변동에는 신호와 소음이 함께 포함되어 있기 때문에 트렌드를 발견하기 위해서는 소음을 제거함이 바람직하다는 것이다. 그런 의미에서 앞에서 서술한 이동평균들도 평활화 기법이다. 그런데 지수 평활화는 아예 평활화를 이름으로 달고 있다.

 지수평활화는 다음 시구간의 값을 예측하기 위해 이전 시구간의 예측값을 사용한다. 그런데 이전 시구간 예측에서 예측오류가 났으면 그 오류를 다음 시구간 예측에 일정 정도 반영해 주는 방법이다. 만약 예측이 지나쳤으면 이번 예측에 일정한 값을 감해서 다음 번 예측에 투입하고, 예측이 낮았으면 이번 예측에 일정한 값을 더해서 다음 번 예측에 투입한다.

 

(1)식을 아래와 같이 바꾸어 쓸 수 있다. 그러면 다음 시구간 값()이 전년도의 예측값()에, 전년도의 예측오류()에 가중치()를 곱한 값을 더한 결과라는 점이 분명해진다.   

지수평활화를 이용해서 월간 예측을 한다면, 2월의 예측값을 구하기 위하여 1월의 실제값뿐 아니라 1월에 대한 예측값을 사용한다.  위의 식에서 가중치  는 일반적으로 0과 1 사이의 값을 갖는다. 가 0에 가까우면 다음 시구간의 예측값은 이전 예측값과 유사하고, 가 1에 가까우면 다음 시구간의 예측값은 이전 실제값과 유사해 진다. 가 1이라면 위에서 소개한 단순예측이 된다. 에 대한 일반적인 값은 경험적으로 0.2부터 0.4 사이의 값이다.

엑셀을 사용해서 데이터 추동 예측 다섯 가지 방법(단순 평균 제외)을 하나의 사례에 적용해 보자. 아래 엑셀 자료는 어느 기업이 13개월 동안 달성한 월별 매출액(단위 백만원)이다. 

단순예측은 금월 매출액을 다음 달 예상 매출액으로 잡는다. 12월의 실제 매출액 720억4천5백만원(B3)이 1월의 예상 매출액(C4)가 되었으며, 1월의 실제 매출액(B4)은 2월의 예상 매출액(C5)가 되었다. 이하 마찬가지이다.

D열에 있는 3월 이동평균(SMA(3))은 12월, 1월, 2월의 실제 매출액을 평균하는 값(=AVERAGE(B3:B5))으로 63,304.33(D6)이다. 4월 SMA(3)(D7)은 (=AVERAGE(B4:B6))이고, 5월 SMA(3)(D8)은 (=AVERAGE(B5:B7)이며, 이하 동일한 방식으로 계산된다.

E열의 3월 가중이동평균(WMA)을 구하는 데는 세 개의 가중치가 필요하다. 시구간의 첫월에 대한 가중치는 0.2, 둘째월에 대한 가중치는 0.3, 셋째월에 대한 가중치는 0.5이다. 현재에 가까워질수록 더 큰 가중치를 주고 있다. 3월 WMA(3)(E6)은 (=B5*$E$19+B4*$E$18+B3*$E$17)로 계산된다. 4월 WMA(3)(E7)은 (=B6*$E$19+B5*$E$18+B4*$E$17)로 구할 수 있다. 이하 동일한 방식으로 계산된다.

F열의 3월 지수이동평균(EMA)을 구하려면 먼저 가중승수를 구해야 한다. 시구간이 3이므로 가중승수는 2/(3+1)=0.5이다. 첫번째 EMA(3) 값(F6)은 3월의 SMA(3) 값과 동일하다. 두번째 EMA(3) 값(F7)은 (=0.5*(B7-F6)+F6)로 구해진다. 실제값에서 예측값을 뺀 예측오류에 가중승수 0.5를 곱하고 그것을 예측값에 더하면 된다. 세번째 EMA(3) 값(F8)은 (=0.5*(B8-F7)+F7)로 구하면 된다. 이하 동일한 방식으로 계산된다. 

G열의 지수평활화(exponential smoothing)를 구하려면 가중치 Alpha가 필요하다. 여기서는 임의로 Alpha=0.3이라고 하자. 첫번째 지수평활화의 1월 예측값(G7)은 12월의 실제 매출액을 가져온다. 2월 예측값(G5)은 ( =$G$17*B4+(1-$G$17)*G4)로 구해진다. 3월 예측값(G9)은 (=$G$17*B5+(1-$G$17)*G5)로 구할 수 있다. 이하 동일한 방식으로 구해진다.

이 서로 다른 예측 평활화들을 어떻게 평가할까? 한 가지 방법은 오류를 비교하고 가장 작은 오류를 낸 기법이 이 데이터에 가장 잘 맞는 방법으로 간주될 수 있을 것이다.

통계학의 분산분석이나 회귀분석에서 오류를 실제값과 예측값의 차이(즉, 오차)의 제곱(보다 정확히는 오차 제곱의 평균)을 이용하여 모형 검정값을 측정한다. 마찬가지로 시계열 예측에서도 오류의 크기를 예측오류의 제곱의 평균(Mean Squared Errors, MSE)로 측정할 수 있다. 위 다섯가지 예측 평활화의 MSE가 아래와 같다.

MSE의 크기가 SMA(3)가 가장 크고(95,175,919), EMA(3)가 가장 작음(23,599,945.7)을 알 수 있다. 즉, 이 사례에서는 EMA(3)가 가장 정확한 예측값을 내고 있다는 것이다. 흥미 있는 사실은 금년도 실제 매출액으로 내년도 매출액을 예상하는 단순예측의 성능도 그다지 나쁘지 않다는 점이다.

Excel로 하는 미래 예측(1): 가상분석(What-If Analysis)

미래 시나리오(scenarios) 자체가 ‘이론(theory)’ 없이 데이터만으로 고안될 수는 없다. 예컨대 내년도 경기 전망 시나리오는 경제 이론에 기반해서 만들어지고 남북한 관계 시나리오는 정치 이론에 기반해서 만들어 진다. 아직까지 어떤 컴퓨터 소프트웨어도 그러한 시나리오를 개발하지 못한다. 언젠가 도메인 이론, 시나리오 개발 방법론, 그리고 데이터를 충분히 입력해주면 AI가 그러한 시나리오를 개발해 낼 수 있겠지만 아직 시나리오 개발은 인간의 영역이다.

하지만 일단 시나리오가 주어지면 그것에 기반한 예측은 엑셀로 구현된다. 엑셀 상단 메뉴 중 ‘데이터’ 하위 메뉴에 가상분석(what-if analysis)을 이용하면 된다.

어떤 서점이 있다고 하자. 그 서점에 A라는 책 100권이 들어왔다. 그 책은 모두 정가에 팔릴 수도 있고 일부가 세일 가격에 팔릴 수도 있다. 그에 따라 기대 수익이 달라질 것이다. 만약 60%가 정가에 팔리고 그 때 권당 수익이 3천원이며, 나머지 40%가 세일 가격에 팔리고 그 때 권당 수익이 1천원이라면 A를 판매한 총수익은 22만원일 것이다. 그런데 정가에 판매되는 비율을 70%, 80%, 90%, 100%로 올리면 총수익이 어떻게 달라질까? 이러한 다양한 시나리오를 엑셀을 가지고 보여줄 수 있다.

먼저 기본 정보와 계산식을 가지고 데이터 시트를 작성한다(아래 그림 참조). 그림에서 C6 셀에는 =B3*C3을 넣고, C7 셀에는 =B3*(1-C3)를 넣는다. 총수익이 표시되는 D9에는 =(C6*D6)+(C7*D7)을 넣는다. 그런 다음 상단 메뉴에서 데이터-가상분석-시나리오 관리자를 연다.

위 창이 열리면 오른편 상단의 추가 단추를 눌러서 시나리오를 정의한다. 먼저 60%가 정가로 팔리는 시나리오를 “60% 정가”로 이름 붙이자. 변경 셀은 $C$3를 넣는다. 고정주소로 표기하자. 그리고 확인 단추를 누르면 변경 셀에 해당하는 값을 입력하라는 메시지가 뜬다. 0.6을 넣고 확인. 그러면 아래 그림처럼 60% 정가라는 시나리오가 정의되어 있을 것이다.

동일한 방식으로 70% 정가, 80% 정가, 90% 정가, 100% 정가 시나리오를 추가한다. 그러면 아래처럼 다섯가지 다른 시나리오가 정의될 것이다.

위 창에서 표시를 누르면 선택된 시나리오에 따라 계산 총수익이 표시된다. 예컨대 70% 정가를 선택하고 표시를 누르면 원래의 데이터 시트가 아래처럼 변할 것이다. 70%가 정가에 팔리면 총수익이 24만원이 된다.

이 시나리오들에 의해 예상되는 총수익을 한꺼번에 보여줄 수 있는 기능이 ‘요약’이다. 시나리오 관리자 창에 있는 요약 버튼을 누르고 시나리오 요약 창이 뜨면 보고서 종류를 선택하고 결과 셀에 $D$9을 넣는다. 그러면 아래 그림처럼 새 시트에 요약 보고서가 뜰 것이다. 정말 사용이 쉽다.

내친 김에 가상분석에 있는 ‘목표값 찾기’도 사용해 보자. 그 기능은 여러가지로 사용될 수 있지만 여기서는 위 사례에서 수익 28만원이 나려면 몇 %를 정가에 팔아야 하는가 하는 문제에 답을 찾아보자. 목표값 찾기를 클릭하여 나타난 창에 아래 그림과 같이 해당 값을 넣는다.

그러면 원 데이터 시트에서 C3 셀이 90%로 바뀔 것이다. 정가로 90%를 팔아야 28만원이 남는다는 말이다.

가상분석에서 다른 하나의 기능은 ‘데이터 표’이다. 이는 엑셀에게 계산식을 알려주고 입력값을 변경하면 결과값이 어떻게 달라지는 지를 보여달라는 명령이다. 예컨대 가격이 100원인 품목를 판매한다고 하자. 다양한 판매 개수에 따른 매출액을 제시할 수 있다. 5개를 팔면 500원이 나오는 계산식 =B1*B2을 E2에 넣는다. 그런 다음 계산을 원하는 품목 B의 개수를 D 열에 나열한다. 이제 D2부터 E6까지를 모두 선택한다. 메뉴에서 데이터-데이터표를 연다. 그리고 아래 그림처럼 B 품목의 개수가 있는 셀인 $B$1을 열에 넣는다. 그러면 원 데이터 시트의 E3부터 E6에 각 개수에 따른 판매액이 표시된다.

이상으로 엑셀의 가상분석(What-If Analysis)의 세 가지 기능을 살펴보았다. 이는 간단하지만 현업에 유용한 기능으로 생각된다. 이제 엑셀에 있는 좀 더 심각한 미래 예측 기능에 대해 알아보자.

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

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

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

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

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

대학에서의 통계 교육

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

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

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

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)

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

앞 포스팅에서 확률변수가 무엇인지를 알아보았다. 이제 확률분포와 확률함수에 관해 살펴보자.

확률변수는 이산적 확률변수(discrete random variable)와 연속적 확률변수(continuous random variable)로 나눌 수 있다. 이산적 확률변수는 0, 1, 2, 3과 같은 정수의 값을 가지며, 연속적 확률변수는 소수점의 값을 포함하는 실수의 값을 가진다. 확률변수가 그 두 가지 중 어느 것에 속하는가에 따라 확률의 의미와 계산 방법이 크게 달라진다.

이산적 확률변수는 확률변수의 각 값이 발생 확률을 갖지만, 연속적 확률변수는 특정 값의 발생 확률은 0이다. 연속적 확률변수는 확률변수가 특정 구간에 속할 확률만을 계산할 수 있다.

예컨대 필자가 가르치는 사회통계 과목은 상대평가이다. 그 과목에서 어떤 학생이 A+를 받을 확률은 10%, A0를 받을 확률은 15%이다. 등급(letter grade)은 이산적 확률변수이다. 그러나 그 학생이 기말시험에서 90점을 받을 확률이나 80.5점을 받을 확률은 모두 0이다. 취득점수(score)는 연속적 확률변수이다. 만약 확률을 계산하고 싶으면,  90점 이상 받을 확률(), 80점 이상 90점 미만을 받을 확률() 처럼 확률변수의 구간을 정해주어야 한다.

이산확률변수은 확률변수의 확률과 확률분포를 생성하는 확률함수를 갖는다. 반면에 연속확률변수는 확률변수의 구간 확률과 확률분포를 생성하는 확률밀도함수(Probability Density Function, PDF)를 갖는다.

이산확률변수가 이루는 이산확률분포에는 이항확률분포(binomial probability distribution), 포아송 확률분포(Poission probability distribution), 초기하 확률분포(hypergeometric probability distribution), 기하확률분포(geometric probability distribution) 등이 있다. 

이항확률분포는 이항실험(binomial experiment)과 연관되어 있다. 이항실험은 네 가지의 특성을 갖고 있다. 

  1) 실험은 n개의 동일한 시행으로 구성된다.

  2) 각 실험은 두 가지 결과를 가진다. 그 결과를 성공, 실패라고 부른다.

  3) 성공 확률은 p이며 반복실험에서 변하지 않는다. 

  4) 각 실험은 독립적으로 행해진다.

위에서 1번을 제외한 세 가지 특성을 가진 실험을 베르누이 시행(Bernoulli Trial)이라고 한다. 베르누이 시행을 반복하면 이항실험이 된다. 이항확률함수는, 

    여기서  = n회 시행에서 성공의 횟수가 x일 확률; x = 성공횟수; n = 시행 횟수;  p = 각 시행에서 성공이 일어날 확률; 1-p = 각 시행에서 실패가 일어날 확률;

이항확률분포의 기대값과 분산

포아송분포는 이항분포와 성격이 비슷하나, 시행횟수 n이 크고, 사건의 발생(성공) 확률 p는 매우 작은 경우에 사용된다. 포아송 확률함수는,

여기서  = 구간에서 x회 발생할 확률; (람다) = 구간에서 발생횟수의 기대값 또는 평균(이다); 

포아송 분포의 기대값과 분산


초기하 확률분포도 이항분포와 관계가 있다. 성공할 확률이 매회 동일할 경우(상호 독립적인 사건)는 이항분포를 이용하고, 동일하지 않을 경우(상호 종속적인 사건)는 초기하분포를 이용한다. 즉, 같은 실험에서 복원추출을 하는 경우나, 표본추출을 하는 모집단의 크기가 무한한 경우는 이항분포를 사용하고, 비복원추출인 경우나 모집단의 크기가 작은 경우는 초기하분포를 사용하여 확률을 구한다.

기하확률분포는 단 한번의 성공을 위해 실패를 거듭해야 하는 경우에 사용한다. x-1번까지는 계속 실패를 하고, x번째에 비로소 성공할 확률은 다음과 같이 구할 수 있다.

몇 가지 사례를 보자.

(이항확률분포) 한 개의 동전을 4번 던졌을 때 앞면이 나오는 횟수가 2회일 확률은 얼마인가?

n = 4, x = 2, p = 0.5

실제 계산은 스마트폰 앱 Probability Distributions로 수행할 수 있다. 답은 0.37500 이다.

(포아송확률분포) 주중 아침 15분 동안 자동차를 탄 채로 은행 서비스를 받기 위해 창구에 도착하는 자동차 대수에 관심이 있다고 하자. 과거의 자료로 볼 때 15분 동안 도착하는 자동차는 평균 10대이라고 하자. 경영자가 15분 동안에 5대가 도착할 확률을 알고 싶어한다. 그 확률을 계산해 보자.

, x = 5.

(초기하 확률분포) 온타리오 전기는 전기 퓨즈를 생산한다. 한 박스에는 12개의 퓨즈를 넣는다. 검사자는 박스에 들어있는 12개의 퓨즈에서 무작위로 3개를 뽑는다. 박스에 5개의 불량품이 있을 경우 검사자가 3개의 퓨즈 중 불량품 1개를 뽑을 확률은 얼마인가?

N(모집단의 갯수) = 12, n(시행횟수) = 3, M(모집단에서 성공원소의 갯수) = 5, x(성공 횟수) = 1

(기하확률분포) 한 개의 동전을 던져서 앞면이 나올 확률은 1/2이다. 동전을 던질 때 다섯 번째 비로소 앞면이 나올 확률은 얼마인가?

(윤영민, 2018-06-18)

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

학생들에게는 ‘확률’이라는 표현이 다소 혼란스럽다.  사실 그것은 배우는 학생들이 아니라 통계학자들 때문이다.

확률은 때로 probability를 의미하고, 때로 random을 의미한다. 그 두 단어가 서로 밀접하게 관련되어 있지만 동의어는 아니다. 확률(probability), 확률 분포(probability distribution), 확률 함수(probability function)의 경우는 확률이  probability를 의미하고, 확률적(stochastic) 혹은 확률 변수(random variable)의 경우는 확률이 randomness(무작위)를 의미한다. 전자인 probability는 어떤 현상이 발생할 가능성을 표현한 수치이고, 후자인 random 혹은 stochastic은 우연적 혹은 무작위적이라는 뜻이다. 이러니 학습자들이 충분히 혼란스러워할만 하다.

우리가 어떤 현상을 확률적이라고 말하면, 그 현상이 우연적으로 결정되는 현상, 다시 말해, 인위적으로 결정될 수 없는 현상임을 의미한다. 동전 던지기나 주사위 던지기가 확률적 현상의 가장 흔한 사례가 될 것이다. 동전 던지기의 결과는 누군가의 의지나 기분 혹은 음모에 의해 결정되지 않는다. 주사위 던지기의 결과도 마찬가지이다.

확률 변수(random variable)에서 확률은 그런 의미이다. 수학에서 변수(variable)란 2개 이상의 값을 가질 수 있는 문자를 말한다. 변수는 흔히  등으로 표현된다. 변수의 반댓말은 상수(constant)이다. 상수는 하나의 고정된 값만 갖는 문자이다. 흔히 로 표시된다.

random variable에 대한 이미지 검색결과

그런데, 확률 변수는 특별한 속성을 지닌 변수이다. 즉, 확률 변수의 값은, 어떤 결과가 나올 지 정해져 있지 않은 어떤 과정–그것을 확률 과정(random process) 혹은 통계적 실험이라고 한다–을 통해 결정된다. 동전 던지기를 상상하면 된다. 때문에 확률 변수의 각 값은 특정한 확률을 갖고 있다. 예컨대 하나의 동전을 던졌는데, 앞면이 나올 확률(그것은 0.5이다), 혹은 두 개의 동전을 던졌는데, 두 개 모두 앞면이 나올 확률(그것은 0.25(0.5*0.5)이다)처럼 말이다.

여기서 두 개의 동전을 던지는 경우만 생각해 보자. 동전 던지기는 바로 확률 과정이고, 그 결과인 앞면의 갯수는 확률변수이다. 동전 던지기의 결과는 정해져 있지 않으면 누군가의 의지나 기분에 따라 결정되지 않는다. 그리고 앞면의 갯수(라고 하자), 즉, 확률변수의 값은 이다. 그리고 각 값은 특정한 확률을 갖고 있다.  앞면이 두 개가 나올 확률 는 0.25, 한 개가 나올 확률 은 0.5, 하나도 나오지 않을 확률은 은 0.25이다. 그리고 그 세 값의 확률을 더하면 1.0이다.

‘어떤 학생이 기말시험에 대비해 공부할 시간’은 변수이지만 확률변수는 아니다. 그것은 그 학생의 의지나 기분에 의해 좌우될 수 있기 때문이다. 어떤 자동차 세일즈맨이 하루에 파는 자동차 댓수는 확률변수일 것이다. 자동차의 판매 결과가 본인의 의지로 결정되지 않기 때문이다.

세상사에는 확률변수가 많다. 다시 말해 결과가 우연에 의해 결정되는 사회 현상이 많다. 그리고 사람들은 때로 우연에 희망을 걸기도 한다. 복권이 잘 팔리는 이유가 그 때문 아니겠는가. (윤영민, 2018-06-13).

조건부 확률, 곱셈법칙, 베이즈 정리(4)

(예제 3) 사십 대 여성이 정기 건강 검진의 일환으로 유방 엑스레이를 찍었다. 일주일 뒤 그녀는 유방암 검사 결과가 양성으로 나왔다는 통보를 받았다. 유방암에 관한 가족력도 없고 또 징후도 없는 그녀가 진짜로 유방암에 걸렸을 확률은 얼마일까? 

미국에서 사십 대 여성 1만명 가운데 대략 40명이 유방암을 가지고 있다(유방암 발병 확률은 40/10,000이다). 그리고 유방암 환자가 유방 엑스레이 검사에서 양성 반응이 나올 확률은 80%이다. 그러면 그 40명 가운데 32명이 양성 판정을 받는다(그 확률은 32/40이다). 또한 유방 엑스레이 검사에서 양성 반응이 나올 확률은 10%이다(그 확률은 1,000/10,000이다).

(풀이)

사건의 정의: B = 유방암 발병, P = 유방암 엑스레이 양성 결과

주변 확률:

조건부 확률: 

문제는  로 표시할 수 있다.

식 (1)의 우변에 있는 확률들의 값이 모두 있으므로 식 (1)에 대입한다.

이 결과를 말로 풀어 보면, 유방암 엑스레이 검사 결과가 양성이 나온 40대 여성이 실제로 유방암에 걸렸을 확률은 0.032, 즉, 3.2%밖에 되지 않는다.

 

(예제 4) 이메일의 스팸을 걸러내는 소프트웨어에는 베이즈 이론이 적용된다. 영어로 된 스팸메일에서 가장 많이 나타나는 단어가 shipping!이다. 스팸 메일 중 shipping!을 포함하는 메일의 비율은 0.051이고, 스팸이 아닌 메일에서 shipping!을 포함하는 메일의 비율은 0.0015이다. 그리고 많은 메일 중에서 10%가 스팸 메일이다. 만일 메일이 shipping!을 포함하고 있다면 스팸일 확률은? 만일 메일이 shipping!을 포함하고 있음에도 불구하고 스팸이 아닐 확률은? 만일 메일이 shipping!을 포함하고 있다면 스팸이라고 판명해야할까?

(풀이)

사건의 정의: Shipping = 메일에 shipping!이라는 단어가 포함됨, Spam = 스팸 메일

이 문제를 푸는 데 있어 첫번째 관문은, 여기서 “스팸 메일 중 shipping!을 포함하는 메일의 비율”이라는 표현을 확률적으로 정확히 번역해 내는 일이다. “그것은 “어떤 메일이 스팸일 때, 그 메일이 shipping!을 포함할 확률”로 번역된다. 아래와 같은 조건부 확률인 것이다.

조건부 확률: 

주변확률: 

원래의 문제는 다음과 같이 표시될 수 있다.

문제 풀이의 두 번째 관건은, 분모가 되는 shipping의 주변확률을 구하는 것이다. 주변확률은 관련된 결합확률들의 합이다. P(shipping)과 관련된 결합확률은 아래처럼 두 가지이다.

우변의 결합확률 각각을 곱셈법칙을  이용해서 주변확률과 조건부 확률의 곱으로 바꾼다.

이제 주변확률 을 구할 준비가 되었다.

위 식 (1)의 좌변에 해당 확률 값을 대입한다.

이 결과를 말로 풀어보면, 어떤 메일에 shipping!이라는 단어가 들어 있을 때 그 메일이 스팸일 확률은 0.7907이고, 스팸이 아닐 확률은 0.2093이다. 따라서 만약 어떤 메일에 shipping!이라는 단어가 들어 있다면 스팸이라고 분류하는 것이 좋을 듯하다. 그런 메일 중 약 80%가 스팸이기 때문이다. (윤영민, 2018-05-25)

조건부 확률, 곱셈법칙, 베이즈 정리(3)

(예제 2) 서로 다른 두 납품업체(공급자 1과 공급자 2)로부터 원자재를 공급받는 제조회사가 있다. 현재 공급자 1로부터 65%의 원자재를 구매하고, 공급자 2로부터는 35%를 구매한다. 한편 그 동안 두 업체로부터 납품 받은 원자재의 품질은 아래와 같다.

 좋은 품질 비율(%)나쁜 품질 비율(%)
공급자 1982
공급자 2955

그런데, 제품 생산 과정에서 어떤 원자재가 불량으로 나타났다. 그 원자재가 공급자 1로부터 왔을 확률은 얼마이고, 공급자 2로부터 왔을 확률은 얼마인가?

(풀이)

사건의 정의: A1 = 공급자 1로부터 납품 받음, A2 = 공급자 2로부터 납품 받음, B = 나쁜 품질의 원자재, G = 좋은 품질의 원자재

이 문제는 데이터(정보)가 주변확률과 조건 사건의 조건부 확률(즉, 우도)로 제한되어 있기 때문에 결합확률표와 조건부 확률 공식을 사용하지 못하고 베이즈 정리를 이용해서 풀어야 한다.

이 문제 풀이의 첫 번째 관건은  표에 있는 데이터를 어떻게 해석할 것인가이다. 예컨대 공급자 1이 좋은 품질의 원자재를 납품할 확률은 98%이다. 이 진술은, 공급자가  1일 때(조건), 좋은 품질의 원자재일 확률(조건부 확률)이 0.98임을 말한다. [공급자가 1이면서 좋은 품질의 원자재를 납품할 확률(즉, 결합확률)을 의미하는 것이 아님에 유의. 실제로 결합확률이 그렇게 높이 나올 가능성은 거의 없음. 결합확률은 주변확률의 곱이기 때문이다.] 즉,

이 문제 풀이의 두 번째 관건은 주변확률, 를 구할 수 있느냐이다. 사실 베이즈 응용 문제에서, 분모에 들어가는 조건 사건의 주변확률을 구하는 것이 자주 풀이의 관건이 되곤 한다.

문제를 베이즈 정리 형식으로 표현해 보자. 어떤 원자재가 불량(나쁜 품질)일 때, 그 원자재가 공급자 1로부터 왔을 확률은 다음과 같이 표시할 수 있다.

우변에서 우리는, 임을 알고 있으니,  분모에 있는 B의 주변 확률을 구하면 된다. 주변 확률은 해당되는 결합확률을 모두 더한 값이다. 즉,

이다.

그런데 곱셈법칙에 의하면,

이 값을 식 (2)에 대입하면,

우리는 식 (2)의 우변에 확률값을 모두 알고 있다. 그 값들을 대입해서 를 구하자.

다시 식 (1)로 돌아가서 확률값들을 대입한다.

즉, 원자재가 불량일 때, 그것이 공급자 1로부터 왔을 확률은 0.426이다. 그렇다면 공급자 2로부터 왔을 확률은 1-0.426 = 0.574가 될 것이다. (윤영민, 2018-05-25)