
데이터를 받았다고 바로 분석하면 안 되는 이유
병원이나 연구시스템에서 데이터를 받으면 바로 통계프로그램에 넣어 분석하고 싶어집니다. 하지만 실제 연구데이터에는 빈칸, 중복, 잘못된 단위, 비현실적인 숫자, 날짜 오류가 섞여 있을 수 있습니다. 분석 전에 이런 문제를 확인하고 정리하는 과정을 데이터 클리닝이라고 합니다.
후향적 병원 데이터는 연구를 위해 수집된 자료가 아니라 진료와 행정 목적으로 만들어진 자료입니다. 같은 검사도 환자마다 시행 횟수가 다르고, 특정 정보는 일부 진료과에서만 기록될 수 있습니다. 전향연구에서도 입력자가 값을 빠뜨리거나 단위를 잘못 입력할 수 있습니다.
제가 병원 데이터 관련 업무를 하며 느낀 점은 분석방법보다 먼저 데이터가 어떤 방식으로 만들어졌는지 이해해야 한다는 것입니다. 숫자가 많고 표가 깔끔해 보여도 실제 의미가 불분명하면 좋은 분석으로 이어지기 어렵습니다. 데이터 클리닝은 분석 전 단순 정리작업이 아니라 연구결과의 신뢰도를 지키는 과정입니다.
결측치의 종류부터 구분하기
결측치는 단순히 셀이 비어 있는 상태만을 의미하지 않습니다. 검사를 시행하지 않은 경우, 결과가 기록되지 않은 경우, 환자가 답변을 거부한 경우, 해당 항목이 적용되지 않는 경우처럼 발생 이유가 다를 수 있습니다.
예를 들어 수술을 받지 않은 환자에게 수술시간이 없는 것은 자연스러운 결측입니다. 반면 수술을 받은 환자의 수술시간이 비어 있다면 기록 누락일 수 있습니다. 두 상황을 같은 빈칸으로 처리하면 데이터의 의미를 잃을 수 있습니다.
CRF나 데이터베이스에서 미실시, 확인 불가, 해당 없음 등을 구분해 기록했다면 분석파일에서도 그 의미를 확인해야 합니다. 99, 999, -1처럼 특정 숫자를 결측코드로 사용했다면 실제 값으로 계산되지 않도록 결측값으로 변환해야 합니다.
결측치가 있는 사례를 모두 삭제하는 것이 항상 정답은 아닙니다. 어떤 변수가 얼마나 비어 있는지, 결측이 특정 환자군에 집중되어 있는지 확인해야 합니다. 결측 발생 이유에 따라 분석방법과 결과 해석이 달라질 수 있습니다.
변수별 결측률을 확인하기
데이터를 받으면 변수마다 전체 대상자 중 값이 있는 비율과 결측비율을 확인하는 것이 좋습니다. 결측률이 매우 높은 변수는 주요 분석에 사용하기 어려울 수 있습니다. 특히 연구의 핵심 결과변수가 많이 비어 있다면 대상자 선정이나 데이터 추출과정을 다시 확인해야 합니다.
결측률을 전체 데이터에서만 보는 것도 충분하지 않을 수 있습니다. 진료과, 연도, 중증도, 병원에 따라 결측률이 다른지 확인할 수 있습니다. 특정 시점 이후에만 기록되는 변수라면 전산시스템이나 진료정책이 변경되었을 가능성이 있습니다.
예를 들어 중증 환자에게만 특정 검사가 시행되었다면 그 검사값이 없는 환자는 무작위로 빠진 것이 아닙니다. 검사 시행 여부 자체가 환자의 상태와 관련되어 있을 수 있습니다. 이 경우 단순히 평균값으로 채우면 데이터 구조를 왜곡할 수 있습니다.
저는 결측치가 많다는 사실을 데이터의 결함으로만 보기보다 의료진이 어떤 상황에서 해당 검사를 시행했는지 이해하는 단서로 보는 것도 필요하다고 생각합니다. 병원 데이터의 빈칸에는 임상적 의사결정이 반영되어 있을 수 있습니다.
이상치는 무조건 삭제하지 않기
이상치는 다른 값과 비교해 지나치게 크거나 작은 값입니다. 키가 300cm로 기록되거나 체온이 5도로 입력되었다면 입력오류일 가능성이 높습니다. 하지만 모든 극단값이 오류인 것은 아닙니다. 중증 환자나 희귀한 상황에서는 실제로 매우 높은 검사값이 나타날 수 있습니다.
이상치를 발견하면 먼저 변수의 가능한 범위와 단위를 확인해야 합니다. 같은 검사라도 mg/dL와 mmol/L처럼 단위가 다르면 값의 크기가 크게 달라질 수 있습니다. 소수점 위치가 잘못 입력되었거나 문자와 숫자가 섞여 있을 수도 있습니다.
원자료나 의무기록을 다시 확인할 수 있다면 실제 값인지 검증하는 것이 좋습니다. 확인이 불가능한 경우에는 임상적으로 가능한 범위, 데이터 분포, 연구팀의 합의를 기준으로 처리방법을 정해야 합니다. 값을 삭제하거나 경계값으로 바꾸거나 분석에 그대로 포함할 수 있습니다.
이상치를 자동으로 제외하기 전에 해당 값이 연구결과에 어떤 영향을 주는지도 확인해야 합니다. 이상치를 포함한 분석과 제외한 분석을 비교하는 민감도 분석이 도움이 될 수 있습니다. 극단값을 보기 불편하다는 이유로 삭제하면 연구결과가 인위적으로 달라질 수 있습니다.
중복자료를 확인하는 기준
후향연구에서는 동일 환자나 동일 방문의 데이터가 여러 줄로 중복될 수 있습니다. 검사나 처방 데이터가 일대다 관계로 결합되면서 한 환자가 여러 행으로 늘어날 수도 있습니다. 단순히 중복제거 기능을 사용하면 필요한 반복정보까지 사라질 수 있습니다.
먼저 분석단위가 환자인지 방문인지 검사건인지 확인해야 합니다. 환자 단위 분석이라면 한 환자당 한 행이 필요할 수 있고, 반복 측정 분석이라면 여러 행이 정상적인 구조일 수 있습니다.
등록번호가 같다고 무조건 중복은 아닙니다. 같은 환자가 여러 번 입원했거나 여러 시점에 평가받았을 수 있기 때문입니다. 환자식별자, 방문일, 검사일, 연구시점 등을 조합해 실제 중복인지 판단해야 합니다.
데이터를 여러 테이블에서 병합할 때는 행 수가 예상보다 늘어나지 않았는지 확인하는 것이 좋습니다. 병합 전후 대상자 수와 행 수를 기록하면 오류를 발견하기 쉽습니다. 제가 보기에는 병원 데이터 정리에서 가장 자주 발생하는 문제가 값 자체보다 테이블을 합치는 과정에서 생기는 중복입니다.
날짜와 시간 오류 확인하기
날짜와 시간은 병원 연구에서 매우 중요한 변수입니다. 입원일보다 퇴원일이 빠르거나, 수술 전에 퇴원한 것으로 표시되거나, 검사시간이 환자 도착 전으로 나타나는 오류가 있을 수 있습니다.
이런 오류는 날짜 형식 변환, 자정 전후의 기록, 시스템 간 시간 차이, 수정 입력 때문에 발생할 수 있습니다. 응급실 체류시간이나 수술시간처럼 두 시점의 차이를 계산하는 연구에서는 특히 주의해야 합니다.
먼저 날짜 형식을 통일하고 시작시간이 종료시간보다 늦지 않은지 확인합니다. 비정상적으로 긴 체류시간이나 음수값이 나오는 경우 원자료를 검토해야 합니다. 자정이 지나면서 날짜가 바뀐 사례도 확인해야 합니다.
연구기간 밖의 날짜가 포함되어 있거나 미래 날짜가 입력된 경우도 있습니다. 날짜는 단순한 숫자가 아니라 연구대상자 선정과 결과변수 계산에 직접 사용되므로 별도의 검증규칙을 만드는 것이 좋습니다.
범주형 변수의 표현을 통일하기
성별, 진단명, 흡연 여부, 입원경로 같은 범주형 변수는 같은 의미가 여러 표현으로 기록될 수 있습니다. 예, Y, Yes, 1이 모두 같은 의미일 수 있고, 남성, 남, M이 섞여 있을 수 있습니다.
표현이 다르면 통계프로그램에서는 서로 다른 범주로 인식됩니다. 분석 전에 동일한 의미를 하나의 코드로 통일해야 합니다. 코드값과 의미는 데이터 사전에 기록하는 것이 좋습니다.
자유서술로 입력된 진단명이나 처치명은 오탈자와 약어가 많을 수 있습니다. 모든 표현을 강제로 합치기 전에 임상적으로 같은 개념인지 확인해야 합니다. 비슷해 보이는 진단명이라도 연구목적상 구분해야 할 수 있습니다.
저는 데이터 정리에서 가장 단순해 보이지만 시간이 많이 드는 부분이 이런 표현 통일이라고 생각합니다. CRF 설계단계에서부터 선택지를 정해두면 이후 작업을 크게 줄일 수 있습니다.
클리닝 기준을 연구방법으로 남기기
최종적으로 어떤 결측치와 이상치를 어떻게 처리했는지 문서로 남겨야 합니다. 논문이나 보고서의 연구방법에는 모든 세부과정을 길게 쓰지 않더라도 주요 기준은 설명해야 합니다.
예를 들어 중복 방문 중 첫 방문만 포함했는지, 특정 범위를 벗어난 값은 원자료를 확인했는지, 결과변수가 없는 대상자를 제외했는지, 결측값을 대체했는지 등을 기록할 수 있습니다.
여러 명이 분석하는 연구라면 데이터 클리닝 규칙을 공유해야 합니다. 같은 데이터라도 사람마다 다른 기준으로 정리하면 분석결과가 달라질 수 있습니다. 가능하다면 수작업 수정만 하기보다 코드나 작업기록을 통해 과정을 재현할 수 있게 만드는 것이 좋습니다.
연구데이터는 처음부터 완벽하게 정리되어 나오지 않습니다. 저는 데이터 클리닝이 분석 전 귀찮은 단계가 아니라 연구자가 데이터의 한계를 이해하는 과정이라고 생각합니다. 어떤 값이 왜 없고, 어떤 오류가 왜 발생했는지 이해할수록 결과를 더 정확하게 해석할 수 있습니다.
※ 본 글은 연구데이터 결측치와 이상치 정리에 대한 일반적인 안내이며, 구체적인 처리방법은 연구설계와 통계분석 계획에 따라 달라질 수 있습니다.