5. 이상치 처리
5.1 이상치
5.1.1 이상치란?
- 일부 관측치의 값이 전체 데이터의 범위에서 크게 벗어난 극단적인 값을 갖는 것
- 분산을 과도하게 증가시켜 검정력, 예측력 등 통계적 특성을 악화시킴
- 전체 데이터수가 많으면, 이상치의 영향이 감소함
5.1.2 이상치 발생원인
- 데이터 입력 오류
- 데이터를 수집하는 과정에서 발생할 수 있는 에러
- 전체 데이터의 분포를 보면 쉽게 발견 가능
- 측정 오류
- 데이터를 측정하는 과정에서 발생하는 에러
- 실험 오류
- 실험조건이 동일하지 않은 경우 발생
- 고의적인 이상값
- 자기 보고식 측정(Self Reported Measure)에서 나타나는 에러
- 정확하게 기입한 값이 이상값으로 보일 수 있음
- 표본추출 에러
- 데이터를 샘플링(Sampling)하는 과정에서 나타나는 에러
5.2 이상치 검출
5.2.1 이상치 검출 방법
- 개별 데이터 관찰
- 전체 데이터의 추이나 특이 사항을 관찰하여 이상값 검출
- 통계 기법(값) 이용
- 통계 지표 데이터(평균, 중앙값, 최빈값)와 데이터 분산도(범위, 분산)를 활용한 이상값 검출
- 시각화 이용
- 확률 밀도 함수, 히스토그램, 시계열 차트 등
- 머신 러닝 기법 이용
- 데이터 군집화를 통한 이상값 검출
- 주어진 데이터를 K개의 클러스터로 묶고, 각 클러스터와 거리 차이의 분산을 최소화하는 방식의
5.2.2 단변량 이상치 검출 방법
변수가 하나인 단변량(univariate) 데이터에서 이상치 기준을 정하여 이상치를 탐색하고 검정(test)
표준화 점수
- 일관된 비율로 이상치를 탐색할 수 있음
- |Z| > 3 이면 이상치로 간주
- 수정된 표준화 점수: 데이터의 수가 적은 경우 적합함
사분위수 범위
- Q1 - 1.5 IQR보다 작거나 Q3+1.5 IQR보다 큰 경우 이상치로 간주
- 일반적으로 BOXPLOT을 이용할 때 사용한느 방법
5.2.3 단변량 이상치 검출 실습
import warnings
warnings.filterwarnings("ignore")
import pandas as pd
from scipy.stats import t, zscore
df = pd.DataFrame({'x':[4, 5, 6, 2, 12, 4, 3, 1, 2, 3, 23, 5, 3]})
Z-score를 이용한 이상치 검출
z = zscore(df.x)
print('Z-score Outliers:', df.x[(z<-3)|(z>3)].values)
IQR 이용한 이상치 검출
import seaborn as sns
sns.boxplot(df.x)
Q1 = df.x.quantile(0.25)
Q3 = df.x.quantile(0.75)
IQR = Q3 - Q1
ols = df.x[(df.x < (Q1 - 1.5 * IQR))|(df.x > (Q3 + 1.5 * IQR))]
print('IQR Outliers 1:', ols.values)
import scikit_posthocs as sp
print('IQR Outliers 2:', sp.outliers_iqr(df.x, ret = 'outliers'))
Grubb's test 이용한 이상치 검출
- 모집단이 정규 분포를 만족하는 단변량 자료에서 하나의 이상치를 검정하는 방법
- 가설: H0(이상치가 없다), H1(이상치가 하나는 있다)
- 검정통계량
import scikit_posthocs as sp
inliers = sp.outliers_grubbs(df.x)
outliers = df.x[(df.x<inliers.min())|(df.x>inliers.max())]
print('Grubb\'s Outliers:', outliers.values)
Grubb's test 이용한 이상치 검출
- 모집단이 정규 분포를 만족하는 단변량 자료에서 하나의 이상치를 검정하는 방법
- 가설: H0(이상치가 없다), H1(이상치가 하나는 있다)
- 검정통계량
5.2.4 다변량 이상치 검출 기법
5.2.4 다변량 이상치 검출 실습
5.3 이상치 처리
포함(inclusion)
- 데이터 세트에 이상치를 그대로 유지
- 이상현상의 파악이 목적인 경우 주로 사용
수정(correction)
- 이상치가 오류임이 판정될 경우 올바른 값으로 수정
- 거의 발생하지 않음
제거(deletion)
- 결측값으로 대체 후 결측값 처리
- 데이터의 손실이 발생 → 자유도의 감소 → 통계적 검정력 저하
- 표본의 수가 충분하고 결측값이 10-15% 이내일 때에는 결측값을 제거한 후 분석하여도 결과에 크게 영향을 주지 않음
- 일반적인 추세를 구하는 것이 목적일 경우 사용
교체(replacement)
- 표본 평균과 같은 대표값이나 극단값으로 교체
- 대표값으로 교체할 경우 → 잔차 변동의 왜곡이 발생 → 잘못된 통계적 결론 유도
- 모수 추정 시 편향(bias) 발생
- 일반적으로 선호하는 방법
조정(accomodation)
- 이상치는 그대로 유지하나 비모수 통계와 같이 이상치에 영향이 적은 방법을 적용
데이터 분리(data splitting)
- 이상값이 많을 경우에 사용하는 방법으로 서로 다른 그룹으로 통계적인 분석을 실행하여 처리
- 각각의 그룹에 대해서 통계적인 모형을 생성하고, 결과를 결합하는 방법을 사용함