연구를 시작하려면 통계보다도 선행되어야 하는 작업이 데이터를 모으는 일입니다. 통계는 나중에 누군가에게 부탁하더라도 데이터만큼은 직접 모아야 하죠. 그리고 데이터를 모으는 과정에서 가장 활용도가 높은 프로그램은 단연 마이크로소프트 사의 엑셀입니다. 그런데 같은 프로그램을 사용해도 사람마다 데이터를 담는 방식은 밤 하늘의 별만큼이나 다양합니다. 선의의 도움을 주려던 통계 전문가가 기겁하는 부분이죠. 실제로 데이터 분석과정에서 가장 귀찮고 하기 싫으면서 시간도 가장 많이 잡아먹는 과정이 엉터리로 기재된 엑셀 내 데이터를 통계 프로그램에서 사용하기 쉽도록 다듬는 일입니다. 그래서 저는 이번 글에서 엑셀을 이용해서 이후 있을 통계 작업에 방해가 되지 않도록 데이터를 담는 방법을 이야기하려고 합니다.
첫 번째: 머리글을 두 줄 이상으로 만들지 마세요
머리글(header)은 엑셀 파일 첫 번째 줄에 각 칸의 이름을 쓰는 공간을 말합니다. 학번, 나이, 성별 등을 이곳에 쓰죠. 그런데 위 예제를 보시면, 성적을 중간고사와 기말 고사로 나누어 입력하는 과정에서 두 줄을 쓰는 것을 알 수 있습니다. 이러면 나중에 머리글을 사용할 때 무척 번거롭습니다. 통계 프로그램은 대부분 머리글을 기본 한 줄로 해석하기 때문이죠. 위와 같은 데이터를 모을 때는 아래처럼 하시는 편이 나중에 통계 처리할 때 유리합니다.
두 번째: 열 이름이나 데이터 내부에는 최대한 한글을 피해 주세요.
한글을 쓰면 절대 안 되는 건 아닙니다. UTF-8이나 EUC-KR로 인코딩(encoding)을 하고, 다시 파일을 읽을 때도 인코딩을 맞추어 주면 한글 깨짐 현상을 해결할 수 있죠. 하지만 제가 방금한 이야기가 외계의 언어처럼 들리신다면 이해하려 하지 마시고, 그냥 모든 문자를 영어로 통일해 주세요. 여러분을 컴퓨터 전문가 과정으로 안내하는 게 아니라, 컴퓨터가 약한 연구자를 통계 전문가로 만드는 게 이 책의 목표이기 때문입니다. 영어로 열(column) 이름을 작성하실 때는 단어 사이를 띄어쓰기하면 안 됩니다. 예를 들어 기말 고사 점수를 ‘final test’라고 이름을 바꾸게 되면, 그 항목을 컴퓨터가 변수로 불러올 때 ‘final’과 ‘test’라는 두 단어로 인식해 우리가 원하는 열을 찾지 못하는 일이 발생합니다. 그렇다고 한 단어로 무작정 작명을 하면, 나중에 규모가 큰 연구에서는 연구보다 작명에 더 많은 시간을 보내기 일쑤죠. 쉬운 팁을 하나 알려 드리면, 띄어쓰기가 필요한 단어는 ‘final_test’처럼 사이에 언더바(underbar)를 넣어서 사용하거나, ‘finalTest’처럼 두 단어를 붙여서 쓰되 두 번째 단어의 첫 알파벳을 대문자로 써서 단어와 단어를 구분하면 됩니다. 또한 열 이름을 길게 작명하는 일에 부담을 갖지 마세요. 코딩을 전문으로 하는 프로그래머들은 훨씬 더 긴 단어로 변수 이름을 설정하기도 합니다. ‘the_easy_way_to_make_column_name’ 이렇게 말이죠. 이런 식으로 변수 이름을 설정하면, 논문을 제출(submission)하고 첫 리뷰가 올 때까지 한동안 열어 보지않았던 코드라도 당황하지 않고 다시 사용할 수 있습니다. 본인뿐만 아니라, 누군가에게 코드를 공유했을 때도 별다른 추가 설명 없이 이해되도록 작성하는 것이 멋진 코드를 만드는 팁이기도 하고요.
세 번째: 성별과 같은 범주형 변수는 0, 1이 아니라 M, F처럼 문자로
표시해 주세요. 연구자에 따라서는 0과 1로 쓰기를 권하는 분도 있습니다. 회귀분석을 위해 더미 변수를 설정할 때 0과 1로 표현하는 경우가 많기 때문인데요. (무슨 이야기인지 모르셔도 괜찮습니다. 이해가 안 되더라도 그냥 제가 말씀드리는 대로 하시면 되니까요) 문제는 0과 1로 구분되는 결과, 이를테면 사망/생존과 같이 결과가 둘로 나뉘는 경우에 발생합니다. 이런 경우 회귀 분석을 위해서는 로지스틱 회귀모형을 적용해야 하는데요. 0과 1을 범주형 변수(문자)가 아닌 연속형 변수(숫자)로 회귀 분석을 시행해도 결과가 아무런 오류 없이 잘 나오거든요. 초보 연구자들은 이 결과를 또 자랑스럽게 받아 적게 되고요. 그래서 저는 범주형 변수는 꼭 문자로 데이터를 모으시라고 권합니다.
네 번째: 열 이름 안에 결괏값의 단위를 적지 마세요.
나중에 데이터를 살필 때 편하려고 결괏값의 단위를 포함해서 열이름을 짓는 경우가 있습니다. 하지만 단위에는 (, ), ^, %, $ 같은 특수 기호가 자주 들어갑니다. 특수 기호들은 통계 프로그램 안에서 특수한 임무를 담당할 때가 많죠. 그래서 여러분도 모르게 특수 명령이 실행되는 사례가 발생합니다. 알고 시킨 일이라면 멈추기라도 할 텐데, 모르고 시킨 특수 명령은 멈추기도 어렵습니다. 곤란한 일이 없으려면 처음부터 피하시는 게 상책입니다. 결괏값은 엑셀이 아닌 다른 메모장에 정리해 두시길 권해 드립니다.
다섯 번째: 하나의 시트에는 하나의 표만 담아 주세요
간혹 하나의 시트(sheet) 안에 여러 개의 표(table)가 담긴 엑셀 파일을 보곤 합니다. 대개 원본 데이터 파일이 있고, 그 안의 값들을 가지고 함수(function)를 이용해서(참조한다고 표현하기도 합니다) 새로운 표를 구성하는 경우죠. 대개 연령대별 합계를 구하거나, 성별 평균값 등을 정리할 때 이렇게 작업을 많이 하는데요. 이런 상황은 통계 처리에서 정말 쥐약입니다. 컴퓨터가 각각의 엑셀 파일을 자동으로 처리할 때 첫 번째 규칙이 맨 윗줄을 각 열의 이름으로 이해하고, 두 번째 줄부터는 열의 관찰값으로 이해하는 겁니다. 만약 중간에 새로운 표가 있다면 컴퓨터는 무척 당황하겠죠. 그래서 엑셀 작업을 할 때 늘 하던 식으로 맨 밑줄 또는 맨 우측 줄에 합계나 평균을 넣으면 절대 안 됩니다. 그런 건 통계 프로그램에서 작업하시면 훨씬 더 쉬우니, 서두르지 마시고 잠시 미뤄두세요.
이 정도 원칙만 지켜서 엑셀 파일 작업을 하셔도 통계 작업전에 쓸모없이 허비하는 처리 시간을 대폭 단축하실 수 있을 겁니다. 통계 전문가에게 도움을 요청할 때도 센스 있다고 좋은 이야기를 들으실 거고요. 실제로 빅 데이터를 다루는 사람들은 늘 정돈되지 않은 파일을 정리하는 데 대부분의 시간을 보냅니다. ‘주판이나 계산기를 두드리는 것도 아니고 컴퓨터로 분석하니, 빅 데이터 분석가는 놀면서 돈 버는 거 아냐?’라고 생각하실지도 모르겠는데, 아닙니다. 빅 데이터 분석 업무의 대부분이 막노동입니다. 데이터 막노동을 하는 전국의 여러분께 저 또한 막노동을 하는 한 사람으로서 경의를 표합니다.
(이 글은 필자가 쓴 『R 통계의 정석』 (사이언스북스, 2021년) 11~16쪽의 내용을 발췌, 정리한 것임을 밝힙니다.)