많은 경우 연구는 내 예상대로 흘러가지 않고. . . 영아 대상으로 하는 연구면 도중애 애기가 울어서 실험이 중단되고, 설문조사를 통해 하는 연구면 많은 사람들이 문항을 체크하지 않은 채 넘겨버리기 일쑤다. 그리고 그 결과는 당연히 missing data! 결측치이다. 이 결측치는 어떻게 다루어야 하는걸까?
결측치에 대해서 어떻게 다루어야 할 지 결정하기 전에 가장 먼저 해야할 것이 내 연구와 데이타에 대해 생각해보아야 한다. 여러 이유로 결측치가 생길 수 있다. 예를 들어 여성의 출산에 대해 연구를 한다고 했을 때 여성의 입장에서 생각하지 않고 출산지도(feat. 박근혜 정부)같은 걸 들이민다면 당연히 기분이 나빠 제대로 설문에 응하지 않거나 할 수 있다 (여성은 애기를 낳는 기계가 아님을 명백히 밝힌다). 아무튼! 왜 결측치가 나왔는지에 대한 이유 역시 우리가 어떻게 결측치를 대할지에 영향을 미칠 것이다. 결측치가 생기는 이유는 무수히 많지만 몇개만 일단 알아보자.
- 참여자가 수치스럽거나, 부끄럽거나, 두려운 느낌을 받아 대답하지 않겠다고 결정한 경우. 성적으로 보수적인 집단이 있을 때 개방적인 다른 집단을 기준으로 측정한 설문을 들이미는 경우, 혹은 (내가 실제로 본건데) 청소년 집단을 대상으로 성적으로 너무 심한 문항을 포함한 척도를 통해 측정하고자 하는 경우.. 혹은 중국처럼 정부의 사찰..? 혹은 감독이 심한데, 거기서 정치적 견해를 물어보는 경우 사례는 무수히 많다.
- 참여자가 실수로 질문을 넘겨버린 경우.
- 참여자가 실수로 통채로 한장을 넘겨버린 경우. 종이로 설문을 돌릴 때 한장을 통채로 넘겨버리는 경우를 본 적이 있다.
- 이 전 질문에 의한 대답때문에 그 문항을 대답하지 않은 경우. 이전 문항에서 A를 물어봐서 아니라고 대답했는데 그 다음 문항에서 A가 아님을 물어본다면 대답을 안할 수도 있다.
- 종단 연구에서 참여자가 나중에 참여를 그만둔 경우
- 연구자가 질문하는 것을 깜빡한 경우
이 모든 이유를 우선 순위로 두고 결측치를 다루어야하는 것은 아니지만, 생각해볼 가치는 있음을 기억하자.
결측치의 메커니즘
Missing Not at Random (MNAR)
MNAR은 체계적으로 생기는 결측치를 말한다. 즉, 랜덤으로 생기는 결측치가 아니라 이유가 있어서 결측치가 생기는 것이다. 예를 들면 우울 척도가 있다. 그런데 심각한 우울증이 있는 사람들은 어떤 문항에 대해 대답을 하지 않는 경향이 있다. 이러한 경우를 MNAR이라 할 수 있다. 결측치 자체가 결측치가 생기는 이유와 관련이 있는 경우다.
Missing Completely at Random (MCAR)
MCAR은 결측치가 정말 아무런 이유 없이 랜덤으로 생기는 경우를 말한다. MCAR은 데이타셋에서 다른 변인들과 아무런 관련이 없다. 참여자가 실수로 문항을 빼먹고 선택하지 않은 경우를 예로 들 수 있다.
Missing at Random (MAR)
MAR은 결측치가 그 결측치 자체와는 상관이 없지만, 데이타 셋의 적어도 하나의 다른 변인때문에 생기는 경우를 말한다. 예를 들면, 남성은 우울 척도에 대답하지 않는 경향이 있는데, 이는 우울과는 상관이 없지만 그들의 "남성성"과는 상관이 있는 경우를 예로 들 수 있다 (남성성이 높은 남성이 우울 척도에 응답하지 않는 경향성이 있는 경우).
결측치는 어떻게 다루어야 하나
연구자들이 결측치를 다루기 위해서 사용하는 방식은 많다.
- List-wise or case-wise deletion: 이는 결측치가 발생한 참여자 전부를 삭제해버리는 방식이다. 즉, 어떤 참여자의 설문 결과에서 결측치가 일부 있으면, 그 참여자를 데이타 셋에서 삭제해버리는 방법이라 할 수 있다. 일반적으로 이 방식은 추천하지 않는다. 만약 그 결측치가 MNAR인 경우, 예를 들면 극단적으로 심한 우울증을 지닌 사람들이 특정 문항에 응답하지 않았을 때 그 사람들을 제외하고 데이타 분석을 해버리게 된다. 그러면 우울증이 심하지 않은 사람만을 한정해서 데이타 분석을 한 것이므로 편향된 결과가 나올 수 밖에 없다. 또, 데이타 분석에서 피험자 수는 중요하다. 한 두 항목을 대답하지 않았다고 데이타를 모두 삭제해버리는 것은 데이타 분석에서 power가 약해지는 결과를 불러올 뿐이다.
- Mean substitution: 이는 결측치를 평균값으로 대체하는 것을 말한다. 여기서 평균값이란 그 데이타셋에서 다른 참가자를 통해 얻은 그 특정 변인의 평균값을 말한다. 하지만 이 역시 추천되지는 않는데, 그 이유는 변인 내의 변산성을 줄여버리기 때문이다. 통계를 통한 데이타 분석은 일반적으로 변산성을 분석한다는 것을 잊지 말자.
- Regression imputation: 이는 데이타셋의 다른 변인을 사용하여 그 결측치의 "예측값"을 내어 대체하는 것을 말한다. 이는 통계 검사에서 표준오차를 줄이는 데 기여할 수 있다.
- maximum likelihood(ML): 이는 사용할 수 있다면, 가장 많이 사용되고, 가장 안전하고, 가장 추천되는 방식이라 할 수 있다. 이는 관찰된 값에 우도(liklihood function)를 조정하여 관찰을 기반으로 한 데이타를 얻을 확률을 최대화 시키는 방식으로 모수치를 추정하도록 적용된다. 새로운 데이타를 창조해내지 않고 내가 가진 데이타값 내에서 분석한다는 장점이 있다.
- multiple imputation (MI): 이는 ML과 비슷한데 ML을 사용할 수 없을 때 선호되는 방식이다. 즉 결측치에 대해서 여러개의 가상의 값으로 대체한 후 그 대체된 값을 가지는 각각의 데이타셋을 적용하여 데이타를 분석하고 그 이후 결측치 불확실성을 위한 모수치 추정치를 조정하는 방식으로 진행된다. 즉 결측치에 대해서 여러개의 가상의 값으로 대체한 후 그 대체된 값을 가지는 각각의 데이타셋을 적용하여 데이타를 분석하고 그 이후 결측치 불확실성을 위한 모수치 추정치를 조정하는 방식으로 진행된다.
그리고 통계를 가르쳐주셨던 교수님은 결측치를 다룰 수 있는 R 패키지인 naniar 패키지를 추천해주셨다. '쿨'한 패키지라고..! 한국에서 석사를 하면서 결측치를 어떻게 다루는지, 데이타 클리닝은 어떻게 하는지 제대로 배워본적이 없는 나로써는 너무나 유용했던 통계 수업이었다. 다들 다른 석사 경험을 가지겠지만, 나는 "데이타 클리닝해야지"하는 말만 들었지 아무에게도 어떻게 하는지 배워보지 못했다...ㅎ 그나마 다행인건 석사 논문을 실험기법으로 해서 그나마 결측치가 적은 데이타를 가지고 석사논문을 작성했다는 것이다. 아무튼! 논문을 작성하는 고생많은 많은 분에게 정보를 공유하고 싶어서 데이타 클리닝편을 꼭 포함시켰다. 이번 글을 마지막으로 데이타 클리닝에 대한 이야기는 끝이다. 다음번엔 기술통계치에 대한 내용을 포스팅해볼 예정이다. 많은 도움이 됐으면 좋겠다.
*R에 대한 내용을 다루지 않아서 통계 카테고리랑 고민하다가 통계카테고리는 좀 더 이론적인 걸 다루겠다 싶어서 R 카테고리에 넣었다. 그 전에 올린 데이타 클리닝과 맥을 같이 하기도 하고..
'Study > 통계 공부 + R' 카테고리의 다른 글
R 기초: 여러 유형의 상관분석 돌리기 (2) | 2020.12.06 |
---|---|
R 기초: 기술치(평균, 표준편차 등), 상관, 척도점수 구하기 (2) | 2020.12.06 |
R기초: 데이타 클리닝(양질의 데이타란?, 데이타 일부 삭제하기) (0) | 2020.12.05 |
R 기초: 데이타 클리닝(역코딩) (0) | 2020.12.05 |
기초통계. 이변량통계3: 단순 선형 회귀 분석 (0) | 2020.12.05 |
댓글