ADsP NOTE검색

데이터 분석 / 6분 읽기

IQR 이상치 계산, 사분위수와 상자그림이 다른 이유

IQR은 Q3−Q1이며 Q1−1.5×IQR보다 작거나 Q3+1.5×IQR보다 큰 값을 이상치 후보로 봅니다. 같은 자료도 사분위수 계산법에 따라 후보 여부가 달라질 수 있고, 상자그림의 수염 끝은 울타리가 아니라 그 안의 실제 관측값입니다.

IQR로 찾은 이상치 후보를 바로 삭제하지 않습니다

IQR은 제3사분위수 Q3에서 제1사분위수 Q1을 뺀 사분위범위입니다. 자료를 작은 값부터 정렬했을 때 가운데 절반이 차지하는 범위의 폭을 나타냅니다. 흔히 Q1−1.5×IQR보다 작거나 Q3+1.5×IQR보다 큰 값을 이상치 후보로 표시합니다. 이 경계는 살펴볼 값을 찾는 기준이며 해당 값이 잘못됐다는 증명은 아닙니다.

계산을 시작할 때 가장 먼저 확인할 것은 사분위수를 구하는 방법입니다. 유한한 표본에서 25%와 75% 위치를 정하는 방식은 하나가 아닙니다. 문제에서 Q1과 Q3을 이미 주었다면 그 값을 사용하면 되고 원자료만 주었다면 교재나 함수가 어떤 정의를 쓰는지 확인해야 합니다. 숫자가 다르다는 이유만으로 한쪽 계산을 틀렸다고 판단할 수는 없습니다.

작은 자료로 울타리를 직접 계산합니다

가상의 작업 소요 시간 여덟 개를 2, 3, 4, 5, 6, 7, 8, 20분이라고 합시다. 이 절에서는 정렬한 자료를 앞의 네 개와 뒤의 네 개로 나누고 각 절반의 중앙값을 Q1과 Q3으로 정하는 방법을 사용합니다. 다른 방식으로 구한 사분위수와 섞어 계산하지 않도록 방법부터 정했습니다.

앞 절반 2, 3, 4, 5의 중앙값은 (3+4)/2=3.5입니다. 뒤 절반 6, 7, 8, 20의 중앙값은 (7+8)/2=7.5입니다. 전체 중앙값은 (5+6)/2=5.5입니다. IQR은 7.5−3.5=4분이 됩니다.

계산 항목계산식결과
Q1앞 절반 중앙값3.5
Q3뒤 절반 중앙값7.5
IQR7.5−3.54
아래 울타리3.5−1.5×4−2.5
위 울타리7.5+1.5×413.5

20분은 위 울타리 13.5분보다 크므로 이 기준의 이상치 후보입니다. 2분은 아래 울타리 −2.5분보다 작지 않으므로 후보가 아닙니다. 아래 울타리가 음수라고 음수의 작업 시간이 실제로 관측됐다는 뜻은 아닙니다. 울타리는 원자료 값이 아니라 사분위수에서 계산한 경계입니다.

제시한 기준은 경계보다 작거나 큰 경우를 표시하므로 경계와 정확히 같은 값은 울타리를 벗어나지 않습니다. IQR에 1.5를 곱한 값 6만 경계로 삼는 실수도 피하세요. 아래 경계는 Q1에서 빼고 위 경계는 Q3에 더해야 합니다.

같은 자료를 R 기본 분위수로 계산하면 값이 달라집니다

R의 quantile 함수는 기본값 type=7을 사용합니다. 이 방식에서 분위수 위치는 1+(n−1)p입니다. n=8이고 Q1의 비율 p=0.25이면 위치는 2.75입니다. 두 번째 값 3에서 세 번째 값 4까지 간격의 75%를 이동한 3.75가 Q1입니다. Q3의 위치는 6.25이므로 여섯 번째 값 7과 일곱 번째 값 8 사이의 7.25가 됩니다.

같은 여덟 값에 대해 IQR은 7.25−3.75=3.5, 아래 울타리는 3.75−5.25=−1.5, 위 울타리는 7.25+5.25=12.5입니다. 앞의 절반별 중앙값 방식과 경계가 다르지만 20분이 후보라는 판단은 두 방식에서 같습니다.

방식Q1Q3IQR위 울타리
두 절반의 중앙값3.57.5413.5
R quantile 기본 type=73.757.253.512.5

이 차이가 실제 후보 판정을 바꾸는지 보려고 마지막 값 20만 13으로 바꿔 계산했습니다. 두 방식의 사분위수와 위 울타리는 표와 그대로지만, 13은 절반별 중앙값 방식의 13.5 안에 있고 type=7의 12.5 밖에 있습니다. 따라서 첫 방식에서는 후보가 아니고 둘째 방식에서는 후보입니다. 같은 자료라도 사용한 사분위수 정의를 적어야 하는 이유입니다.

R 공식 문서는 아홉 가지 표본 분위수 알고리즘을 구분합니다. 모두 외울 필요는 없지만 지금 쓰는 방법과 옵션은 기록해 두세요. 특히 boxplot.stats가 쓰는 아래와 위 경첩 값은 quantile의 기본 Q1, Q3과 가까워도 표본 크기에 따라 일치하지 않을 수 있습니다. 이 예제의 경첩은 3.5와 7.5로 첫 번째 방식과 같습니다.

상자그림의 수염은 울타리까지 빈 선을 늘리지 않습니다

통상적인 1.5배 기준 상자그림에서 수염 끝은 울타리 안에 있는 실제 관측값 중 가장 바깥 값입니다. 처음의 20분을 포함한 자료를 절반별 중앙값 방식으로 보면 위 울타리는 13.5지만 실제 관측값 중 그 안에 있는 최댓값은 8입니다. 위 수염은 8에서 끝나고 20은 별도 점으로 표시합니다. 아래 수염은 실제 최솟값 2입니다.

울타리는 계산한 경계, 수염은 경계 안의 실제 값이라고 구분해 보세요. 수염 끝을 Q3+1.5×IQR의 계산 결과로 읽지 않도록 주의하세요. 상자의 양끝은 선택한 사분위수 또는 경첩, 가운데 선은 중앙값입니다. 모든 상자그림 구현이 같은 설정을 쓰는 것은 아니므로 범례와 함수 옵션도 확인합니다.

20을 200으로 바꿔도 이 예제에서는 Q1과 Q3이 변하지 않습니다. 두 방식 모두 사분위수가 계산되는 가운데 위치의 값들이 그대로이기 때문입니다. 평균과 범위는 크게 달라지지만 IQR은 그대로입니다. 다만 극단값이 바뀌면 IQR은 언제나 불변이라고 일반화할 수는 없습니다. 표본 크기와 계산에 참여하는 순서통계량에 따라 달라집니다.

후보를 찾은 뒤에는 원인과 분석 목적을 확인합니다

20분이라는 기록이 2.0분을 잘못 입력한 것인지, 긴 파일을 실제로 처리한 시간인지 확인합니다. 단위가 다른 자료가 섞였는지, 중복 집계가 있는지, 특정 작업 종류에서만 큰 값이 나오는지도 살펴보세요. 오류를 확인했다면 원자료를 고치거나 제외 근거를 남길 수 있지만 정상적인 긴 작업이라면 삭제가 이용자의 실제 경험을 숨길 수 있습니다.

분포가 한쪽으로 긴 자료에서는 큰 값들이 자연스러운 분포의 일부일 수 있습니다. IQR 규칙은 정규성 검정도 아니고 이상치일 확률을 계산하는 공식도 아닙니다. 한 변수씩 보면 평범하지만 변수 사이의 조합이 이상한 관측을 모두 찾는 방법도 아닙니다. 무엇을 찾는 기준인지, 어디까지 확인할 수 있는지 함께 적습니다.

삭제 전후 결과를 비교하고 중앙값처럼 극단값의 영향을 덜 받는 요약도 살펴보면 판단에 도움이 됩니다. 머신러닝 전처리에 이 기준을 쓴다면 사분위수와 경계는 훈련 자료에서 정하고 검증 자료에 적용해야 합니다. 검증 자료까지 합쳐 경계를 정하면 평가에 사용할 정보를 미리 쓰는 문제가 생깁니다.

값이 많이 반복되어 Q1=Q3이면 IQR이 0이 될 수도 있습니다. 이때 사분위수와 다른 값들이 기준상 후보로 잡힌다고 전부 오류로 보지 않습니다. 자료가 특정 값에 몰린 이유와 변수의 성격을 확인하세요.

핵심 정리와 실수 점검

핵심 정리

  • 사분위수 계산법을 먼저 정한 뒤 Q1−1.5×IQR와 Q3+1.5×IQR를 계산합니다.
  • 울타리는 수식으로 정한 경계이고 수염 끝은 경계 안의 실제 관측값입니다.
  • 이상치 후보는 입력 오류일 수도 정상적인 드문 관측일 수도 있어 자동 삭제하지 않습니다.

놓치기 쉬운 지점

  • 서로 다른 사분위수 계산법을 섞어 나온 차이를 오류라고 판단하는 실수
  • 위 수염을 위 울타리와 같은 값으로 읽거나 울타리 밖의 값을 모두 삭제하는 실수

확인할 내용

  • 정렬한 자료와 사분위수 정의 또는 함수 옵션을 기록한다.
  • 울타리, 실제 수염 끝, 별도 표시할 관측값을 구분한다.
  • 후보의 입력 오류와 단위, 작업 특성을 확인하고 처리 근거를 남긴다.

이해한 내용 확인하기

직접 작성한 학습용 문항입니다. 공식 기출문제가 아닙니다.

Q1. Q1=10, Q3=18이면 IQR과 양쪽 1.5배 울타리는?

생각한 뒤 해설 보기

IQR=8, 아래 울타리는 10−12=−2, 위 울타리는 18+12=30입니다. 1.5×IQR=12 자체를 위 울타리로 사용하지 않습니다.

Q2. 위 울타리가 30이고 실제 관측값의 큰 쪽이 24, 28, 35입니다. 이 기준 상자그림의 위 수염 끝은?

생각한 뒤 해설 보기

울타리 안의 가장 큰 실제 관측값인 28입니다. 35는 울타리를 벗어난 별도 점이며 30은 관측값이 아닌 계산 경계입니다.

Q3. 두 절반의 중앙값 방식과 R type=7 방식이 작은 표본에서 다른 Q1을 냈습니다. 어느 한쪽이 반드시 틀렸나요?

생각한 뒤 해설 보기

아닙니다. 유한 표본의 분위수 정의가 여러 개라 값이 달라질 수 있습니다. 문제에 주어진 정의와 사용한 함수 옵션을 먼저 확인합니다.

Q4. 울타리보다 큰 20분 기록이 큰 파일을 정상 처리한 시간임을 확인했습니다. 자동 삭제해야 하나요?

생각한 뒤 해설 보기

아닙니다. 정상적인 드문 관측일 수 있습니다. 분석 목적, 작업 종류, 삭제 전후 결과 등을 살펴 처리하고 근거를 남깁니다.

Q5. 훈련 자료와 검증 자료를 합쳐 IQR 경계를 정한 다음 모델을 평가했습니다. 어떤 문제가 있나요?

생각한 뒤 해설 보기

검증 자료의 분포를 전처리 기준에 미리 반영한 정보 누출이 생길 수 있습니다. 경계는 훈련 자료에서 정하고 검증 자료에는 그 기준을 적용합니다.

객관식 유형 연습 →

더 궁금한 점

IQR이 0이면 데이터가 잘못된 건가요?

반드시 그렇지는 않습니다. 값이 특정 숫자에 많이 몰리면 Q1과 Q3이 같을 수 있습니다. 이때 일반적인 1.5배 규칙만으로 드문 값을 오류라고 단정하지 말고 변수와 반복 값의 의미를 확인합니다.

표준화하면 이상치가 사라지나요?

아닙니다. 평균을 빼고 0이 아닌 표준편차로 나누는 선형 변환은 원자료의 상대적인 극단성을 없애지 않습니다. 이상치 원인 확인과 표준화는 다른 작업입니다.

참고 자료와 확인 범위

함께 다듬는 노트

이해되지 않는 설명이 있었나요?

틀린 계산, 어려운 표현, 다음에 읽고 싶은 주제를 알려주세요.

의견 보내기