저번 달에 쓴 글인데, 바빠서 까먹고 있다가 이제야 올린다. 올리게 된 계기는 아래의 "브런치 알림" 때문이다.
작가님 글이 보고 싶습니다.. 무려 60일 동안 못 보았네요 ㅠ_ㅠ 지금도 다양한 작가들이 브런치를 통해 책 출간을 하고 다양한 기회를 만나고 있어요, 작가님도 동참하시겠어요?
저 정도로 울어주면 없는 글도 지어내 올려야 하는 게 사람의 도리 아닌가. 앞으로는 열심히 올릴게요.
아래의 글은 11월 3일에 작성한 글이다. 그리고 다소 학문적인 글이다.
가을학기가 한창이다. 대면수업이 재개되어 학교는 활기로 가득하다. 학생들의 에너지가 마스크를 뚫고 돌아다닌다. 이제야 진짜 학교를 다니는 것 같은 느낌이 든다. 물론 바쁜 하루하루는 덤이다.
시카고대 정책대학원의 경우 첫 해는 Core 라고 해서 필수과목을 들어야 한다. 1년 동안 경제학, 정책분석, 통계학의 기본을 배우는 것인데, 말이 기본이지 수준이 결코 낮지 않다. 특히 경제학 제외 모든 과목의 과제는 코딩(R 또는 STATA)으로 제출해야 하는데 가끔은 내용보다 코딩 짜는 게 더 어려울 때가 많다. 데이터 몇 개 주면서 클리닝하고 머징해서 회귀분석하고 그래프 뽑아서 해석하고 제출하라는 건데, 말이 쉽지 중노동에 시간 엄청 잡아먹는 일들이다.
그렇게 1년을 보내고 나니 이제 지겨운 코딩과는 안녕이겠구나 라고 생각했다. 그래서 이번 학기는 최대한 코딩과 멀어보이는 과목들을 신중하게 선택하기로 했다. 이제 맥북에 있는 코딩 프로그램 다 지워야지, 하면서 말이다.
그.런.데.
여전히 난 모든 과제를 코딩으로 제출하고 있다. 피하려했지만 불행하게도 대학원 안에 코딩 안하는 과목이 없는 것 같았다. “Workplace and Family Policy (직장과 가족 정책)” 같은 과목은 정말 코딩과는 담을 쌓고 있을 법한 제목이지만, "코딩 or nothing", "코딩과의 전쟁", "코딩놈들 전성시대" 등이 과목명으로 더 어울릴 정도로 제일 코딩을 많이 하는 과목이었다. 이곳은 그냥 "코딩 천국, 컴맹 지옥"의 본고장이었다. 학생이 열심히 해야지 어쩌겠나.
이번 가을학기 듣는 과목 중에 “The Science of Elections and Campaigns”라는 과목이 있다. 번역하면 “선거와 선거운동의 과학”인데 내가 가장 기대하고 있던 과목이기도 했다. 내가 하는 일과 가장 밀접하기도 했고, 이 과목과 함께 선거 관련 3 과목을 더 들으면 학교에서 “Certificate in Political Campaigns” (선거운동 인증서)를 주기 때문이었다. 어디서도 인정받지 못하는 자격증이지만 혹시 술자리에서라도 써먹을 일이 있을지 몰라 챙겨놓으려 한다.
“The Science of Elections and Campaigns”는 본격적으로 미국 선거와 선거운동을 공부하는 과목이다. 그렇다고 딱딱하게 제도를 설명하는 건 아니고 여론조사, 선거결과 예측, 선거운동 설득과정, 유권자 표심 등을 연구하는 것이다. 따라서 거의 전 과정이 데이터 분석으로 진행된다. 코딩한다는 이야기다.
그런데 이 과목의 중간고사가 좀 재미있었다. 시험 대신에 11월 2일 진행될 Virginia와 New Jersey 주지사 선거 결과를 예측하라고 했다. 자세한 설명도 없었다. 데이터도 알아서 찾고 모델도 알아서 만들라고 했다. 수업시간에 가르쳐 준 방법을 적용하여 스스로 선거결과를 예측해보라고 했다.
이에 내가 생각한 프로세스는 다음과 같았다.
1. 과거 득표율, 경제지표, 정치지표, 여론조사 데이터 수집 (MIT election lab, FiveThirtyEight, Bureau of Economic Analysis)
2. 모형 설정- Model 1: 경제지표 반영(GDP, 실업률 등), Model 2: 정치지표 반영(지난 득표율, 현직 여부 등), Model 3: 여론조사 반영
3. 각 모형들이 과거 선거결과를 얼마나 잘 예측할 수 있는지 비교 분석하여, Mean Absolute Error(MAE: 측정오차)가 가장 적은 모형을 최종 예측모형으로 선택
4. 해당 모형을 통해 11월 2일 주지사 선거 결과를 미리 예측
요약하면, 여러 모형을 만들어 그중에 과거 치러진 선거결과를 가장 잘 예측하는 모형을 선택해 이번 선거결과를 예측해보는 것이다.
내 경우 하나의 모형을 선택하기 보다는 측정오차(MAE) 분석을 100번 정도 반복 실행(for loop)하여 측정오차가 가장 적은 모형으로 몇 번 선정되었는지를 산출해서 가중치를 적용하는 방식으로 진행하였다. Virginia의 경우 Model 1 : Model 2 : Model 3의 100번 중 승리비율이 40:20:40 정도 되었고 이를 가중치로 삼았다. 그리고 각 모형의 회귀분석에서 나온 득표율 예측치를 가중평균으로 구해서 최종 예측치를 산출하였다.
그렇게 해서 나온 결과는 “민주당 득표 비율"{민주당 득표율 / (민주당 득표율 + 공화당 득표율)}” = 0.4813699901714 이었다. 공화당이 이기는 예측결과였다. 여론조사는 거의 5:5로 비등하고 정치지표는 민주당에 유리하였지만 경제지표가 현직인 민주당(지금 Virginia는 민주당 주지사)에 매우 불리하게 나오고 있었다.
숙제 제출일은 10월 27일, 선거를 딱 1주일 앞둔 때였다. 과연 내 예측대로 공화당이 이길까, 예측치는 얼마나 근접할까, 궁금함을 간직한 채 1주일을 보냈다. 그리고 어젯밤 선거결과가 발표되었다.
결과는 내 예측대로 공화당의 승리, "민주당 득표 비율” = 1,610,142 / (1,610,142 + 1,677,436) = 0.489765413930863 로, 내 예측치와는 0.0084 정도의 근소한 차이였다. 물론 장님 코끼리 만지기 식으로 얼치기로 덤빈 것이 우연히 얻어걸린 걸 테지만 기분이 나쁘지는 않았다. 그리고 무척 신기했다. 과거로 미래를 예측할 수 있다니.
선거예측회사 FiveThirtyEight을 세운 Nate Silver는 본인 책에서 이런 말을 한 적이 있다. “미래는 움직이는 과녁이기 때문에 예측이 어렵다. 다만, 예측하는 여러 과정을 통해 우리는 진리를 향해 접근할 수 있다."
그래, 데이터는 이미 답을 알고 있었다. 학교에서 죽어라 코딩 시키는 데는 다 이유가 있었다. 배워서 남주겠나. 하지만 이제 좀 그만...
ps. 참고로, New Jersey는 민주당이 53% 정도로 꽤 쉽게 이길 것으로 예측했는데 박빙이었음. 역시 이건 내 길이 아님.