들어가는 글: 프로그래머가 데이터를 처음 만나면 '기능'을 먼저 코딩하려는 경향이 있습니다. 하지만 데이터를 다루는 사람은 그렇게 하면 안되고 내가 다룰 데이터가 어떤 특징(속성)을 가졌는지 먼저 아는 것이 중요합니다.
프로그래밍을 하면 가장 먼저 다루는 것이 (변수)이고 각 변수는 데이터 타입(data type)을 가집니다. 오늘은 프로그래밍적으로 생각하는 것이 아니라 데이터의 관점에서 데이터가 가진 다양한 속성에 대해 알아봅니다. 기초 단어 공부한다고 생각하시고 편하게 따라오시면 됩니다.
가장 손쉽게 생각할 수 있습니다. 만약 어떤 정책에 대한 설문조사를 한다면 그 데이터는 대부분 문자 형태가 됩니다. 반대로 어떤 정량적 처리를 하려면 그것을 숫자로 바꾸게 됩니다. 문자는 대소 비교도 어렵고 정렬도 힘들거든요.
(엄밀하게 얘기하면 전혀 다른 얘기지만..) 문자열 vs 숫자는 조금더 고상한 얘기로
정성적(qualitative) vs 정량적(quantitative) 라고도 부릅니다. 어려운 단어라고 생각하지 마시고 어떤 데이터가 문자열로 오면 정성적이고 숫자로 오면 정량적이라고 생각하시면 됩니다.
(연구소의 연구에서는 수량적이고 계량적인 연구를 정량적 연구라고 하고 반대로 심층 인터뷰나 포커스 그룹에 의해 어떤 연구 주제를 연구하는 것을 정성적인 연구라고 합니다. 둘다 의미가 있는 연구 형태입니다)
이제 정량적인 연구를 좀더 파고 들어볼까요?
사실 통계를 배우면 가장 먼저 나오는 얘기이기도 한데 세상을 이루는 데이터는 크게 연속형과 이산형(범주형) 데이터로 구별할 수 있습니다. 그것을 좀더 쪼개면 척도(scale)라고 해서 4가지로 분류할 수도 있습니다.
연속형 데이터에는 무게, 길이, 높이, 시험 점수 등이 있습니다.
프로그래밍으로 다루는 대다수의 데이터는 여기에 속합니다. 그래서 보통 data라고 하면 연속형 데이터라고 생각하기 쉽습니다. 하지만..
반대로 이산형 데이터도 중요합니다. 이산형 데이터는 범주형 데이터라고도 부르고 예를 들면
성별(남/여) , 종교(천주교, 불교, 기독교 등) , 지역(서울, 대구, 대전 등) 등이 있습니다.
데이터 분석을 할 때 (연속형 데이터)만 중요할 것 같지만 사실은 데이터의 특징을 잡을 때는 이런 이산형 데이터도 충분히 모아서 대상을 다양한 각도로 해석할 수 있는 것이 중요합니다.
또한 이산형 데이터를 코딩(coding)해 놓으면 왠지 연속형 데이터인 것처럼 둔갑할 수도 있기 때문에 더욱 주의해야 합니다. 예를 들어
- 서울 = 10
- 대전 = 20
- 부산 = 30
이렇게 코딩해놓으면.. "이거 연속형 데이터 아니냐?" 이렇게 착각할 수도 있거든요.
내가 분석하려는 데이터가 있다면 목적하는 결과를 만들기 전에 데이터의 생김세를 잘 파악해두는 것이 중요합니다. 자세한 내용은 "연속형 데이터" , "이산형 데이터"로 검색하시면 많은 자료가 나와 있습니다.
이것은 제가 실제로 경험했던 사례입니다. 물건 A와 물건 B의 성능이 비슷하게 나오는지 분석는 업무를 진행한 적이 있었습니다. 물건 A는 단위가 농도의 단위인 ppm으로 나오고 물건 B는 단위가 없이 지수(index)로 결과가 나왔습니다.
이 두 가지를 비교할 수 있을까요?
시계열 데이터이니까 동일 장소에서 A와 B를 함께 가동하면 둘 다 데이터는 나옵니다. 저는 사실 둘의 경향성을 보고 싶었거든요. 가능할까요? 잠시만 생각해보세요.
.. (잠시 생각해보시고)
정답은 비교할 수 없습니다. 경향성을 비교한다는 것은 상관분석을 한하는 것인데 단위가 서로 다르거나 한쪽이 없으면 다른 방법을 통해서 맞는 단위로 (추정)을 한후에만 비교가 가능합니다. 정확한 내용은 상관분석의 공식을 보고 설명할 수도 있겠으나 적어도 제가 아는 한에서는
단위가 맞지 않으면 비교는 불가합니다. 프로그래머는 숫자에만 정신이 팔려있기 때문에 단위가 있는지 맞는지 서로 다른지에 대한 주의하지 않을 수 있고 이는 분석 오류로 이어질 수 있습니다.
어떤 데이터가 유효한지(valid) 아니면 유효하지 않은지(invalid)에 대해서는 각 대상의 물리적 특성에 따라 달라질 수 있습니다.
예를 들어 몸무게만 봐도 같은 사람을 평지에서 측정하는 것과 엘레베이터에서 재는 몸무게가 다르고 무중력 상태에서 측정하는 몸무게는 또 다릅니다. (측정이 가능한지는 모르겠네요.. 제가 과알못이라 ㅎㅎ)
또한 측정 장비에 따라 (초기화 시간)동안에는 0이라는 값이 나오거나 쓰레기 값이 나올 수도 있고 어떠한 경우에는 측정 장비에서 만들어내는 값이 불완전할 수도 있다는 것을 알려주기 위해서 accuracy_rate 등의 데이터가 함께 나오기도 합니다. 측정자가 판단하라는 것이죠. 그 데이터를 믿을 수 있는지 없는지 말입니다.
제가 아는 한 '데이터 분석'을 잘하는 사람은 통계를 빠삭하게 알거나 인공지능을 화려하게 다루는 사람이 아닙니다. 제 블로그 1화에서도 말씀드렸듯이
1) 데이터는 (일방적으로) 주어지는 것도 아니고
2) 데이터는 깨끗하지도 않으며
3) 데이터는 거짓말을 할 수도 있기 때문에
내가 다루려는 데이터의 속성이 무엇인지 최대한 사전에 알고 있는 것이 중요합니다. 그래야 숫자에만 현혹되지 않고 좀더 통찰력(insight)을 가지고 원하는 결론에 도달할 수 있습니다.
당연히 데이터를 다루는 다양한 기법들을 알고 있으면 (저도 그러고 싶습니다 T_T.. 통계도 잘 모르고 도구도 엑셀에서 그래프 정도 그리는 수준이고 파이썬도 이제 배우고 있는 중이고 R이나 SPSS, Minitab, Matlab 과 같은 도구도 잘 모르는 걸요..)
좋지만~
그보다 중요한 것은 나오는 데이터에 현혹되지 않을 만큼의 도메인 지식이 중요합니다.
그래서 경영에서 (경영 컨설턴트)의 논리에만 의존하지 말고 (현장 경영)을 하라는 격언이 있기도 하구요.
세상을 데이터로 바라보는 것은 재미있는 것 같아요.
데이터로 세상을 바라보는 것에는 (경제학)이 큰 줄기를 이루고 있는 것 같은데요.
다음 화에서는 경제 관련된 데이터를 가지고 몇 가지 얘기해보도록 하겠습니다.
긴 글 읽어주셔서 감사합니다.
2018.3.1
[참고 자료]
제가 통계학 전공이 아니기 때문에 관련 내용은 인터넷을 참고했습니다.