모던지 / 데이터분석 준전문가 / 데이터분석 4강. 결측값과 이상값

데이터분석 4강. 결측값과 이상값

결측값을 지우는 것도, 평균으로 채우는 것도 판단입니다. 왜 비었는지 모르고 고른 처리법은 데이터를 조용히 비틉니다.

풀고 시작

문제 1. 소득 설문에서 소득이 높은 사람일수록 응답을 거부해 소득 칸이 비었습니다. 이 결측을 무엇이라고 부릅니까?
비어 있는 이유가 비어 있는 그 값 자체와 관련될 때를 비무작위 결측이라고 합니다. 소득이 높을수록 소득을 숨기니 결측 여부가 소득에 달려 있어, 응답한 사람만으로 평균을 내면 실제보다 낮게 나옵니다.

왜 비었는지가 먼저다

결측값 처리를 고르기 전에 왜 비었는지부터 따져야 합니다. 통계학자 도널드 루빈(Donald Rubin)이 1976년에 정리한 분류가 지금도 기준입니다.

유형 뜻 예
완전 무작위 결측(MCAR) 결측이 어떤 변수와도 관계없이 우연히 생깁니다 설문지 일부가 인쇄 불량으로 빠짐
무작위 결측(MAR) 결측이 관측된 다른 변수와 관계있습니다 젊은 층이 건강 문항을 더 자주 건너뜀
비무작위 결측(MNAR) 결측이 비어 있는 그 값 자체와 관계있습니다 소득이 높을수록 소득을 숨김

이름이 헷갈리기 쉬운데, 무작위 결측(MAR)은 "완전히 무작위"가 아니라 관측된 다른 정보로 설명되는 결측입니다. 나이를 알면 결측 경향을 설명할 수 있으니, 나이를 함께 고려해 처리하면 편향을 줄일 수 있습니다. 가장 다루기 어려운 것은 비무작위 결측입니다. 비어 있는 값이 결측의 원인이라 관측된 데이터만으로는 그 편향을 바로잡을 수 없기 때문이죠.

지울 것인가, 채울 것인가

가장 단순한 방법은 결측이 있는 행을 통째로 지우는 완전 사례 분석(complete case analysis)입니다. R에서는 na.omit(df)나 df[complete.cases(df), ]로 합니다. 간편하지만 행이 많이 사라지고, 결측이 완전 무작위가 아니라면 남은 데이터가 전체를 대표하지 못해 편향이 생깁니다.

채우는 방법을 대치(imputation)라고 합니다. 평균 대치는 빈칸을 그 변수의 평균으로 채웁니다. 쉬운 대신 같은 값이 여러 칸에 들어가 분산이 실제보다 작아지고, 다른 변수와의 상관도 약해집니다. 핫덱 대치(hot-deck)는 조건이 비슷한 다른 관측치의 값을 빌려 채웁니다.

다중 대치(multiple imputation)는 한 번만 채우지 않습니다. 빈칸을 그럴듯한 값으로 여러 번 채워 데이터셋을 여러 개 만들고, 각각 분석한 뒤, 결과를 하나로 합칩니다. 대치, 분석, 결합의 세 단계이며, 대치할 때 생기는 불확실성까지 결과에 반영한다는 것이 장점입니다. R에서는 mice 패키지가 대표적입니다.

colSums(is.na(df))        # 열마다 결측값 개수
df2 <- na.omit(df)        # 결측이 있는 행 삭제
df$age[is.na(df$age)] <- mean(df$age, na.rm = TRUE)   # 평균 대치

이상값은 오류일 수도, 신호일 수도

이상값(outlier)은 다른 값들과 동떨어진 값입니다. 나이 250세처럼 입력 실수로 생긴 것도 있지만, 한 번에 수천만 원을 결제한 고객처럼 실제로 일어난 극단값도 있습니다. 앞의 것은 고쳐야 할 오류이지만, 뒤의 것은 부정 사용 탐지처럼 이상값 자체가 분석 목표가 되기도 합니다. 그래서 이상값을 발견하면 무조건 지우지 말고 먼저 원인을 확인합니다.

찾는 방법으로는 두 가지를 기억해 두세요. 첫째는 평균에서 표준편차의 세 배 넘게 떨어진 값을 이상값으로 보는 방법입니다. 둘째는 존 튜키(John Tukey)의 상자그림 규칙입니다. 1사분위수(Q1)와 3사분위수(Q3)의 차이를 사분위범위(IQR)라고 할 때, Q1 − 1.5×IQR보다 작거나 Q3 + 1.5×IQR보다 큰 값을 이상값으로 봅니다. 평균과 표준편차는 이상값에 끌려가지만 사분위수는 덜 흔들리므로, 상자그림 규칙이 더 튼튼합니다.

처리 방법은 삭제, 극단 일부를 잘라 내는 절단(trimming), 극단값을 경계값으로 바꿔 두는 조정(winsorizing), 로그처럼 값을 변환해 차이를 줄이는 방법이 있습니다. 절단은 값을 버리고, 조정은 값을 남기되 경계로 끌어당긴다는 차이가 있습니다.

인출 문제

문제 1. 젊은 응답자일수록 건강 문항을 더 자주 건너뛰었고, 나이는 모두 기록되어 있습니다. 이 결측으로 가장 알맞은 것은?
결측 여부가 관측된 다른 변수인 나이로 설명되므로 무작위 결측입니다. 이름과 달리 완전히 무작위라는 뜻이 아니며, 나이를 함께 고려하면 편향을 줄일 수 있습니다.
문제 2. 평균 대치의 단점으로 가장 알맞은 것은?
빈칸을 모두 평균으로 채우면 평균은 그대로지만 값들이 평균에 몰려 분산이 줄어듭니다. 행이 사라지는 것은 완전 사례 분석의 단점입니다.
문제 3. 다중 대치의 세 단계를 순서대로 옳게 나열한 것은?
빈칸을 여러 번 채워 데이터셋을 여러 개 만들고(대치), 각각 분석한 뒤(분석), 결과를 하나로 합칩니다(결합). 합친 결과에 대치의 불확실성까지 반영됩니다.
문제 4. Q1이 20, Q3이 40일 때 상자그림 규칙으로 이상값이 되는 값은 무엇입니까?
사분위범위는 40에서 20을 뺀 20이고 그 1.5배는 30입니다. 그래서 하한은 20에서 30을 뺀 음수 10, 상한은 40에 30을 더한 70입니다. 이 범위를 벗어나는 값은 75뿐입니다.

더 풀기

출제기준의 세부항목을 따라 이 강의 범위에서 새로 낸 문제입니다. 모의고사도 여기에서 뽑습니다.

묶음 1

문제 1. 설문지 일부가 인쇄 불량으로 무작위로 빠졌습니다. 이 결측으로 가장 알맞은 것은?
결측이 응답자의 어떤 특성과도 관계없이 우연히 생겼으므로 완전 무작위 결측입니다. 이 경우에는 결측 행을 지워도 편향이 생기지 않고 표본만 줄어듭니다.
문제 2. 결측값 유형을 MCAR, MAR, MNAR로 나눈 통계학자로 옳은 것은?
도널드 루빈이 1976년에 결측의 메커니즘을 세 가지로 정리했습니다. 존 튜키는 상자그림과 탐색적 자료 분석으로 알려진 통계학자입니다.
문제 3. 무작위 결측(MAR)을 가장 잘 설명한 것은?
무작위 결측은 이름과 달리 완전한 우연이 아니라, 관측된 다른 정보로 결측 경향을 설명할 수 있는 경우입니다. 완전한 우연은 MCAR, 그 값 자체가 원인이면 MNAR입니다.
문제 4. 세 결측 유형 가운데 관측된 데이터만으로 편향을 바로잡기 가장 어려운 것은?
비무작위 결측은 비어 있는 값 자체가 결측의 원인이라, 그 값을 모르는 이상 관측된 정보만으로는 편향의 크기를 알 수 없습니다.
문제 5. 결측이 완전 무작위가 아닌데 결측 행을 모두 지우면 생기는 문제로 가장 알맞은 것은?
특정한 사람들이 더 자주 빠진다면 지우고 남은 사람들은 전체와 다른 집단이 됩니다. 그래서 완전 사례 분석은 MCAR일 때만 편향 없이 쓸 수 있습니다.
문제 6. R에서 결측이 있는 행을 모두 지운 데이터프레임을 얻는 표현은 무엇입니까?
na.omit은 결측이 하나라도 있는 행을 지운 결과를 돌려줍니다. is.na는 원소마다 결측인지 논리값으로 알려 줄 뿐 행을 지우지 않습니다.
문제 7. df[complete.cases(df), ]가 하는 일로 옳은 것은?
complete.cases는 모든 열이 채워진 행에서 TRUE를 돌려주므로, 이것을 행 자리에 넣으면 완전한 행만 남습니다. na.omit(df)와 같은 결과입니다.
문제 8. 데이터프레임의 열마다 결측값이 몇 개인지 세는 표현으로 가장 알맞은 것은?
is.na(df)가 칸마다 결측이면 TRUE를 주고, 열마다 더하면 TRUE가 1로 세어져 열별 결측 개수가 됩니다.
문제 9. 조건이 비슷한 다른 관측치의 값을 빌려 빈칸을 채우는 방법은 무엇입니까?
핫덱 대치는 성별이나 나이처럼 조건이 비슷한 다른 응답자의 실제 값을 가져와 채웁니다. 모든 빈칸을 같은 값으로 채우는 평균 대치보다 분포를 덜 왜곡합니다.
문제 10. 다중 대치가 단일 대치보다 나은 점으로 가장 알맞은 것은?
한 번만 채우면 채운 값을 실제로 관측한 값처럼 다뤄 불확실성을 무시하게 됩니다. 다중 대치는 여러 데이터셋 사이의 차이로 그 불확실성을 결과에 담습니다.

묶음 2

문제 1. R에서 다중 대치를 할 때 대표적으로 쓰는 패키지는 무엇입니까?
mice는 변수마다 차례로 모델을 세워 빈칸을 여러 번 채우는 다중 대치 패키지입니다. 나머지는 3강에서 본 데이터 마트 도구입니다.
문제 2. 평균 대치를 했을 때 평균과 분산에 일어나는 일로 옳은 것은?
빈칸을 평균으로 채우면 평균은 변하지 않지만 값들이 평균에 몰려 흩어짐이 줄어듭니다. 그래서 분산이 과소추정되고 검정 결과가 지나치게 유의하게 나올 수 있습니다.
문제 3. df$age의 결측값을 나이 평균으로 채우는 코드에서 평균을 구할 때 na.rm = TRUE가 필요한 이유는 무엇입니까?
2강에서 봤듯 NA가 하나라도 있으면 평균도 NA가 됩니다. na.rm = TRUE로 NA를 빼고 평균을 구해야 그 값으로 빈칸을 채울 수 있습니다.
문제 4. 나이가 250세로 기록된 값을 발견했습니다. 가장 먼저 할 일로 알맞은 것은?
사람의 나이로 불가능한 값이라 입력 오류일 가능성이 큽니다. 이상값은 먼저 원인을 확인하고, 오류라면 바로잡거나 결측으로 돌린 뒤 처리합니다.
문제 5. 카드 부정 사용 탐지에서 이상값을 대하는 태도로 가장 알맞은 것은?
부정 사용은 평소와 동떨어진 결제로 드러나므로 이상값이 곧 분석 목표입니다. 이상값을 무조건 지우면 찾으려던 것을 스스로 버리게 됩니다.
문제 6. 평균이 50, 표준편차가 10일 때 평균에서 표준편차 세 배 넘게 떨어진 값을 이상값으로 본다면, 이상값의 경계는 어디입니까?
표준편차의 세 배는 30이므로 50에서 30을 빼고 더한 20과 80이 경계입니다. 이 범위를 벗어나는 값을 이상값으로 봅니다.
문제 7. 사분위범위(IQR)의 정의로 옳은 것은?
사분위범위는 가운데 50퍼센트의 값이 퍼진 폭으로, Q3에서 Q1을 뺍니다. 최댓값에서 최솟값을 뺀 것은 범위(range)입니다.
문제 8. 상자그림에서 이상값을 가르는 규칙으로 옳은 것은?
튜키의 상자그림 규칙은 사분위수와 사분위범위로 울타리를 세웁니다. Q1과 Q3 사이를 벗어났다는 것만으로는 이상값이 아니며, 그 바깥 울타리를 넘어야 합니다.
문제 9. 상자그림 규칙이 평균과 표준편차를 쓰는 규칙보다 튼튼한 이유로 가장 알맞은 것은?
큰 이상값이 하나 있으면 평균이 끌려가고 표준편차가 커져 오히려 그 이상값을 놓칠 수 있습니다. 사분위수는 순서로 정해지므로 극단값 몇 개에 크게 흔들리지 않습니다.
문제 10. Q1이 10, Q3이 30일 때 상자그림 규칙의 상한은 얼마입니까?
사분위범위는 30에서 10을 뺀 20이고 그 1.5배는 30입니다. 상한은 Q3인 30에 30을 더한 60입니다.

묶음 3

문제 1. 극단값을 버리지 않고 정해 둔 경계값으로 바꿔 두는 처리 방법은 무엇입니까?
조정은 경계를 넘은 값을 경계값으로 끌어당겨 표본 수를 지킵니다. 절단은 극단 일부를 아예 잘라 내 표본이 줄어듭니다.
문제 2. 절단(trimming)과 조정(winsorizing)의 차이로 옳은 것은?
절단은 값을 잘라 내 표본이 줄고, 조정은 값을 남기되 경계로 끌어당겨 표본 수를 유지합니다. 결측값을 채우는 방법은 대치입니다.
문제 3. 소득처럼 오른쪽으로 길게 꼬리가 늘어진 변수에서 극단값의 영향을 줄이는 방법으로 가장 알맞은 것은?
로그 변환은 큰 값을 크게 줄이고 작은 값은 덜 줄여 오른쪽 꼬리를 당겨 줍니다. 그래서 극단값을 버리지 않고도 영향을 줄일 수 있습니다.
문제 4. 이상값 하나에 가장 크게 영향을 받는 통계량은 무엇입니까?
평균은 모든 값을 더해 나누므로 극단값 하나가 전체를 끌고 갑니다. 중앙값과 사분위수는 순서로 정해져 극단값 몇 개에 거의 흔들리지 않습니다.
문제 5. 결측 처리 방법을 고르기 전에 가장 먼저 따져야 할 것은 무엇입니까?
같은 삭제나 대치라도 결측이 MCAR인지, MAR인지, MNAR인지에 따라 편향 여부가 갈립니다. 그래서 처리법보다 결측의 이유를 먼저 따집니다.
문제 6. 결측이 완전 무작위(MCAR)일 때 결측 행을 지우면 생기는 주된 손해로 알맞은 것은?
완전 무작위 결측이면 지우고 남은 데이터도 전체를 대표하므로 편향은 크지 않습니다. 대신 표본 수가 줄어 표준오차가 커집니다.
문제 7. 한 고객이 한 번에 수천만 원을 결제한 기록이 실제로 확인되었습니다. 이 값을 가장 알맞게 설명한 것은?
실제로 일어난 극단값은 오류가 아니므로 무조건 지우지 않습니다. 평균 매출을 볼 때는 조정할 수 있고, 우수 고객이나 부정 사용을 볼 때는 오히려 핵심 정보가 됩니다.
문제 8. 다음 가운데 결측값 처리 방법이 아닌 것은?
조정은 극단값을 경계값으로 바꾸는 이상값 처리 방법입니다. 나머지 셋은 비어 있는 칸을 지우거나 채우는 결측값 처리 방법입니다.
문제 9. 결측을 채우지 않고 빈칸이 있는 행만 지우는 방법의 이름은 무엇입니까?
모든 변수가 채워진 완전한 사례만 남기므로 완전 사례 분석이라고 합니다. 간편하지만 행이 많이 줄고 결측이 MCAR가 아니면 편향이 생깁니다.
문제 10. 결측값과 이상값에 관한 진술로 옳지 않은 것은?
이상값에는 입력 오류도 있지만 실제로 일어난 극단값도 있고, 부정 사용 탐지처럼 이상값이 분석 목표인 경우도 있습니다. 그래서 원인을 먼저 확인합니다. 나머지 셋은 옳은 진술입니다.

이전: 3강 데이터 마트 · 다음: 5강 표본과 척도

모던지 · 궁금하면 모던지 GitHub · 2026-09-30