이상치
IT 위키
더 많은 작업
- Outlier; 이상값
- 다른 관측치들과 비정상적으로 멀리 떨어진 관측치
이상치는 자료의 대부분과 동떨어진 값이다. 입력 오류나 측정 오류처럼 잘못된 데이터일 수도 있고, 우연한 변동이거나 오히려 분석할 가치가 있는 현상(부정 거래, 설비 고장 징후 등)일 수도 있다. 어떤 값을 비정상으로 볼지는 결국 분석자가 정해야 하므로, 먼저 정상적인 관측치의 분포를 파악한 뒤 기준을 정한다. 이상치는 평균, 분산, 회귀계수 같은 통계량을 크게 흔들기 때문에 분석 전에 탐지하고 처리 방침을 정해야 한다.
- 의도하지 않게 잘못 입력된 이상치(Bad Data)
- 분석 목적에 부합되지 않아 제거해야 하는 이상치
- 이상치 자체로 의미가 있어 분석 대상에 포함해야 하는 이상치
- 의도적으로 잘못 입력된 이상치(Fraud)
- 박스플롯을 이용하면 이상치를 쉽게 감지할 수 있다.
| 방법 | 기준 | 비고 |
|---|---|---|
| ESD (평균 ± 3σ) | 평균에서 표준편차의 3배보다 멀리 떨어진 값, 즉 인 값을 이상치로 본다. | ADsP 교재에 나오는 기준이다. 자료가 정규 분포에 가깝다고 가정한다. NIST 핸드북의 일반화 ESD 검정(generalized ESD test)은 이와 달리 유의수준과 임계값을 쓰는 정식 통계적 검정이다. |
| 기하평균 ± 2.5σ | 기하평균에서 표준편차의 2.5배보다 멀리 떨어진 값 | ADsP 교재에 나오는 기준이다. |
| 사분위수 기준 (IQR) | Q1 − 1.5 × IQR보다 작거나 Q3 + 1.5 × IQR보다 큰 값. IQR = Q3 − Q1 | 박스 플롯의 수염 밖에 찍히는 점이 이것이다. 이 경계를 안쪽 울타리(inner fence)라 하고, Q1 − 3 × IQR, Q3 + 3 × IQR을 바깥 울타리(outer fence)라 한다. 안쪽 울타리 밖은 약한 이상치(mild outlier), 바깥 울타리 밖은 극단 이상치(extreme outlier)로 구분한다. 분포 가정이 필요 없다. |
| 통계적 검정 | 그럽스 검정(Grubbs' test), 일반화 ESD 검정 등으로 가장 극단적인 값이 이상치인지 검정한다. | 대부분 정규 분포를 가정하므로, 검정 전에 정규 확률 그림 등으로 정규성을 확인한다. 정규성이 맞지 않으면 이상치가 아니라 분포가 다른 것일 수 있다. |
| 군집·밀도 기반 | 군집 분석을 한 뒤 어느 군집에도 속하지 않거나 아주 작은 군집에 속한 관측치를 이상치로 본다. DBSCAN은 밀도가 낮은 영역의 점을 잡음(noise)으로 따로 분류한다. | 다변량 자료에 쓸 수 있다. |
| 마할라노비스 거리 | 평균 벡터에서 마할라노비스 거리가 큰 관측치를 이상치로 본다. | 다변량 방법. 변수 사이의 상관을 반영하므로, 변수 하나씩 보면 평범하지만 변수 사이의 관계에서 벗어난 값을 찾는다. |
| 시각화 | 박스 플롯, 히스토그램, 산점도 | 수치 기준을 적용하기 전에 분포 모양과 극단값을 눈으로 확인한다. |
- 평균과 표준편차는 이상치 자체의 영향을 받는다. 표본이 작거나 이상치가 여러 개이면 이상치가 평균과 표준편차를 끌어올려 평균 ± 3σ 기준으로는 잡히지 않을 수 있다(가려짐, masking). 중앙값과 사분위수를 쓰는 IQR 기준은 이 영향을 덜 받는다.
- 탐지 기준은 이상치 후보를 표시할 뿐이다. 실제로 잘못된 값인지는 업무 지식과 원천 데이터를 확인해 판단한다.
| 방법 | 내용 | 주의점 |
|---|---|---|
| 삭제 | 명백한 입력·측정 오류이면 해당 관측치를 분석에서 뺀다. 가능하면 올바른 값으로 고친다. | 오류라는 근거 없이 지우면 실제 현상을 놓치고 분산을 과소 추정한다. |
| 대체 | 이상치를 결측값으로 보고 평균, 중앙값, 예측값 등으로 바꾼다. | 결측치 대치 방법을 그대로 쓸 수 있다. |
| 변환 | 로그 변환, 제곱근 변환 등으로 큰 값의 영향을 줄인다. | 오른쪽으로 긴 꼬리를 가진 자료(소득, 매출 등)에 흔히 쓴다. 해석할 때 변환된 척도임을 고려한다. |
| 절단 (trimming) | 양쪽 끝의 일정 비율(예: 상·하위 5%)을 잘라 버린다. 이렇게 구한 평균이 절사평균(trimmed mean)이다. | 관측치 수가 줄어든다. |
| 조정 (winsorizing) | 기준을 넘는 값을 버리지 않고 기준값(예: 상·하한 경계, 특정 백분위수)으로 바꾼다. | 관측치 수는 유지되지만 극단 쪽 분포가 기준값에 몰린다. |
| 별도 분석 | 이상치 집단을 따로 떼어 분석하거나, 이상치를 포함한 경우와 뺀 경우를 모두 분석해 비교한다. | 부정 거래 탐지처럼 이상치 자체가 분석 목적일 때 쓴다. |
| 로버스트 방법 | 중앙값, 절사평균, 로버스트 회귀처럼 이상치의 영향을 덜 받는 통계 기법을 쓴다. | 이상치가 오류인지 판단할 수 없을 때 쓴다. |
x <- c(12, 15, 14, 13, 16, 15, 14, 13, 15, 60)
# 박스 플롯과 수염 밖의 값
boxplot(x)
boxplot.stats(x)$out
# 사분위수(IQR) 기준
q <- quantile(x, c(0.25, 0.75))
iqr <- IQR(x)
lower <- q[1] - 1.5 * iqr
upper <- q[2] + 1.5 * iqr
x[x < lower | x > upper]
# 평균 ± 3σ 기준
x[abs(x - mean(x)) > 3 * sd(x)]
# 조정(winsorizing): 경계 밖의 값을 경계값으로 바꿈
x_w <- pmin(pmax(x, lower), upper)
# 절단(trimming): 양쪽 10%를 뺀 절사평균
mean(x, trim = 0.1)
boxplot.stats()는quantile()이 아니라fivenum()의 힌지(hinge)로 상자를 그리므로, 위의 quantile 기준과 경계값이 조금 다를 수 있다. 수염 길이는 인자coef(기본 1.5)로 정한다.
- IQR 기준의 경계는 Q1 − 1.5 × IQR, Q3 + 1.5 × IQR이며, 박스 플롯에서 수염 밖에 점으로 표시된다.
- ESD는 평균 ± 3σ, 기하평균 기준은 ± 2.5σ이다(ADsP 교재 기준).
- 이상치라고 무조건 삭제하지 않는다. 오류인지, 의미 있는 값인지 먼저 판단한다. 부정 사용 탐지 등에서는 이상치가 분석 대상이다.
- 절단(trimming)은 극단값을 버리고, 조정(winsorizing)은 극단값을 경계값으로 바꾼다.
- 다변량 이상치는 마할라노비스 거리로 찾는다.
| 원인 | 예 |
|---|---|
| 데이터 입력 오류 | 데이터를 수집·기록·입력할 때 생긴 잘못 |
| 측정 오류 | 측정 기기의 결함, 잘못된 측정 방법 |
| 실험 오류 | 실험 조건이 동일하지 않아 생긴 값 |
| 고의적 이상값 | 응답자가 일부러 과장하거나 줄여서 적은 값 |
| 자료 처리 오류 | 여러 자료를 합치거나 가공하는 과정에서 생긴 잘못 |
| 표본추출 오류 | 모집단을 대표하지 못하게 표본을 뽑아 생긴 값 |
교재에 따라 고의적 이상값을 '보고 오류' 로 부르기도 하므로, 보기에서 원인을 고를 때는 문제가 따른 교재의 분류를 확인한다.
회귀 모형을 적합한 뒤에는 모형에 지나치게 큰 영향을 주는 관측치를 아래 지표로 찾는다.
| 지표 | 무엇을 보는가 | 흔히 쓰는 기준 |
|---|---|---|
| 레버리지(leverage, 지렛값) hii | 독립 변수 값이 다른 관측치들과 얼마나 동떨어져 있는가. 종속 변수와는 무관하다 | 평균 레버리지 p/n 의 2배(2p/n)보다 크면 주의. p 는 절편을 포함한 회귀계수 개수 |
| 스튜던트화 잔차(studentized residual) | 잔차를 표준오차로 나누어, 종속 변수 값이 회귀선에서 얼마나 벗어났는가 | 절댓값이 2 또는 3보다 크면 이상치 후보 |
| 쿡의 거리(Cook's distance) | 그 관측치 하나를 뺐을 때 회귀계수(적합값)가 얼마나 바뀌는가. 레버리지와 잔차를 함께 반영한다 | 1보다 크거나 4/n 보다 크면 영향점 후보 |
| DFFITS, DFBETAS | 관측치를 뺐을 때 적합값, 개별 회귀계수가 바뀌는 정도 | 교재마다 기준이 다르다 |
- 레버리지가 높아도 회귀선 위에 놓이면 결과를 크게 바꾸지 않는다. 레버리지와 잔차가 모두 커서 결과를 크게 바꾸는 점을 영향점(influential point)이라 한다.
- R 에서는
hatvalues(),rstudent(),cooks.distance()로 구하고,plot(lm 객체)의 진단 그림에도 쿡의 거리가 표시된다.
수치 기준과 별개로, 업무나 이론에 비추어 나올 수 없는 값을 찾는 것도 이상치 탐지 방법이다. 음수인 나이, 키 300cm, 주문일보다 앞선 출고일, 측정 장비의 범위를 넘는 센서 값 등이 그 예이다. 이런 값은 분포상 극단에 있지 않아도 오류이다.
- 정리하면 이상치는 상자 그림·산점도에서 멀리 떨어진 값, 정규분포를 가정한 표준화 점수의 절댓값이 3 이상인 값, 도메인 지식으로 볼 때 이론적·물리적으로 맞지 않는 값, 회귀 진단 지표가 큰 값으로 찾는다.
- "가설 검정의 노이즈 값을 찾는다" 는 이상치를 찾는 방법이 아니다. 통계적 가설 검정은 표본으로 모집단에 대한 가설을 판단하는 절차이고, 노이즈는 측정 과정에 섞이는 무작위 오차를 말한다. 그럽스 검정처럼 특정 관측치가 이상치인지를 검정하는 방법은 있지만, 가설 검정에서 노이즈를 찾는 것과는 다르다.
