본문 바로가기
데이터 처리 방법

[Excel] 이상치 (Outlier) 확인: Dixon's Q-test

by 어날켐 2024. 4. 15.
728x90

단일 (Single) 이상치 (Outlier) 확인을 위한 Q-test를 알아보자!

 Q-test는 1951년 Dixon에 의해서 만들어진 이상치 확인 방법으로 
데이터에 개수에 적합한 이상치 판정 임계값 (critical value)을 제시하였고, 
임계값은 Q 값으로 정해져 있어서 데이터의 Q 값을 확인해서 이상치를 구분할 수 있다.
Q-test의 판정 기준치들이 데이터 개수에 따라서 제시되고 있어서  
적은 수의 데이터에서 이상치 판별하는데 적합한 것으로 알려져 있다. 
처음에는 다수의 이상치를 확인하는 방법으로 제시되었지만, 
최근에는 단일 이상치 확인에 더 적합하다고 설명하고 있다.
아래 그림은 6개의 데이터와 관련 간단한 기술통계 내용이 작성되어 있다.

모든 데이터 (n=6)를 이용해서 평균, 표준편차, 신뢰구간을 확인하였다. 
1개의 데이터 (40.02)가 신뢰구간을 벗어난 것으로 나타났다. 
이 결과로 중앙값도 평균과 차이가 발생되었다.
신뢰구간 내용으로 이상치를 예상할 수 있지만, 
적은 수의 데이터에서는 평균과 표준편차에 오차가 발생되므로
오차가 포함된 신뢰구간으로 이상치를 평가하는 것은 부정확할 수 있다.  
Q-test는 데이터 수에 따른 정규분포 확률과 데이터의 벗어난 정도를 이용해서 
이상치를 구분할 수 있는 임계값을 설정한 것으로 
부정확한 평균과 표준편차로 계산된 정규 분포 내용보다는 
정확히 정규 분포를 예측하고 이상치를 확인할 수 있다는 것이다. 

Q-test 장점 및 결과 확인 방법 

Q-test는 계산식이 간단하고, 검증된 임계값 정보만 있다면
단일 이상치를 손쉽게 구분할 수 있다. 
Q 값을 계산하는 수식은 다음과 같다. 

$ Q = \dfrac{gap}{range} $

"gap"은 평가하는 이상치와 이접한 값의 절대적 차이 값이다. 
"range"는 전체 데이터의 최대값과 최소값의 차이 값이다.
위 그림의 데이터에서 이상치로 예상되는 40.02 값을 Q-test로 확인하면,
데이터 40.02의 Q 값은 다음과 같이 계산된다. 
Q = (40.12 - 40.02) / (40.20 - 40.02) = 0.1 / 0.18 = 0.5556
Q 값이 임계값보다 큰 경우라면 이상치로 구분된다. 

n Confidence level (%)
90% 95% 98% 99%
3 0.885 0.941 0.976 0.988
4 0.679 0.765 0.846 0.889
5 0.558 0.642 0.729 0.782
6 0.484 0.562 0.646 0.699

임계값은 검증된 자료들이 있으므로, 
데이터의 개수와 신뢰수준을 확인 후 적용하면 된다. 
일반적으로 90% 신뢰수준을 적용하며, 개수에 맞는 임계값을 확인한다. 
계산된 Q 값은 6개 데이터에서 얻어진 결과로
90% 신뢰수준의 임계값은 0.484에 해당한다. 
데이터 40.02의 Q 값 0.5556이 임계값 0.484 보다 크기 때문에
데이터 40.02은 이상치로 구분된다. 

Q-test 이상치 검출 범위

Q-test의 이상치 판정 기준을 정규분포의 표준편차 기준으로 확인해 보았다.
정규분포 데이터에 다양한 이상치를 추가해서 분류되는지 확인하였다.
정규분포 (평균 10, 표준편차 1) 데이터에서 10개의 값을 무작위로 선정하고,
표준편차 2배 (95% 신뢰구간) 초과하는 이상치와
표준편차 3배 (99.7% 신뢰구간) 초과 이상치를 설정하였다. 
추가로 2개의 이상치가 같이 존재할 경우에도 이상치로 분류되는지 확인했다.


[표준편차 2배 초과 이상치 1개 포함 데이터]

평균 10, 표준편차 1을 기준으로 표준편차 2배를 초과하는 이상치 12.1을 추가하였다.

No. Result       Q-test 
1 8.74   Test result 12.10
2 9.46   Gap = 12.1 - 10.9 = 1.2
3 9.49   Range = 12.1 - 8.74 = 3.36
4 9.49   Q-value = 1.2 / 3.36 = 0.3571
5 9.52   Q critical value (90% CL, n = 10) 0.3492
6 9.92   Q critical value (95% CL, n = 10) 0.4122
7 10.20   *CL: Confidence level
8 10.27      
9 10.90      
10 12.10      

이상치 12.1은 Q-test 결과에서 90% 신뢰수준의 임계값 0.3492 보다 큰 값 0.3571로 계산되었다.
Q 값이 임계값 보다 증가한 것으로 확인되어 12.1은 이상치로 분류할 수 있다.
하지만, 큰 차이를 보이지 않아서 95% 신뢰수준의 임계값 0.4122 보다는 낮은 값으로 나타났다.  


[표준편차 3배 초과 이상치 1개 포함 데이터]

평균 10, 표준편차 1을 기준으로 표준편차 3배를 초과하는 이상치 6.12을 추가하였다.

No. Result   Q-test 
1 6.12   Test result 6.12
2 9.46   Gap = 9.46 - 6.12 = 3.34
3 9.49   Range = 10.99 - 6.12 = 4.87
4 9.49   Q-value = 3.34 / 4.87 = 0.6858
5 9.52   Q critical value (90% CL, n = 10) 0.3492
6 9.92   Q critical value (95% CL, n = 10) 0.4122
7 10.20   *CL: Confidence level
8 10.27      
9 10.90      
10 10.99      

이상치 6.12은 Q-test 결과에서 90% 신뢰수준의 임계값 0.3492 보다 큰 값 0.6858로 계산되었다.
Q 값이 임계값 보다 증가한 것으로 확인되어 6.12은 이상치로 분류할 수 있다.
큰 차이를 보이는 값 때문에 95% 신뢰수준의 임계값 0.4122 보다는 증가된 값으로 나타났다.  


[표준편차 3배 초과 & 2배 초과 이상치 2개 포함 데이터]

앞서 확인한 이상치 12.1과 6.12를 모두 추가해서 이상치를 평가해 보았다. 

No. Result   Q-test 
1 6.12   Test result 6.12
2 9.46   Q-value = 3.34 / 5.98 = 0.5585
3 9.49      
4 9.49   Test result 12.10
5 9.52   Q-value = 1.20 / 5.98 = 0.2007
6 9.92      
7 10.20   Q critical value (90% CL, n = 10) 0.3492
8 10.27   Q critical value (95% CL, n = 10) 0.4122
9 10.90     *CL: Confidence level
10 12.10      

이상치 6.12은 Q-test 결과에서 90%, 95% 신뢰수준의 임계값 보다 큰 값 0.5585로 계산되었다.
이상치 12.1은 Q-test 결과에서 90%, 95% 신뢰수준의 임계값 보다 낮은 값 0.2007로 계산되었다.
각각의 이상치가 포함된 데이터에 포함된 경우에는 모두 이상치로 확인되었지만, 
이상치 2개가 동시에 포함된 경우 정규분포에 가까운 이상치는 구분되지 않았다.  
이상치 6.12를 제거하고, 이상치 12.1을 다시 Q-test로 평가해 보았다.  

No. Result   Q-test 
1 9.46   Test result 12.10
2 9.49   Gap = 12.10 - 10.90 = 1.20
3 9.49   Range = 12.10 - 9.46 = 2.64
4 9.52   Q-value = 1.20 / 2.64 = 0.4545
5 9.92   Q critical value (90% CL, n = 9) 0.3704
6 10.20   Q critical value (95% CL, n = 9) 0.4363
7 10.27   *CL: Confidence level
8 10.90      
9 12.10      

이상치 12.1은 Q-test 결과에서 90% 신뢰수준의 임계값 0.3704 보다 큰 값 0.4545로 계산되었다.
1차 이상치 제거 후 다시 시행한 결과에서 가까운 이상치 12.1은 이상치로 분류되었다. 
이상치를 모두 제거 후 남은 데이터로 이상치를 평가해 보았다. 

No. Result   Q-test 
1 9.46   Test result 10.90
2 9.49   Gap = 10.90 - 10.27 = 0.63
3 9.49   Range = 10.90 - 9.46 = 1.44
4 9.52   Q-value = 0.63 / 1.44 = 0.4375
5 9.92   Q critical value (90% CL, n = 8) 0.3979
6 10.20   Q critical value (95% CL, n = 8) 0.4673
7 10.27   *CL: Confidence level
8 10.90      

남은 데이터에서 가장 멀리 위치한 10.9의 Q-test 결과를 확인했다. 
Q-test 결과에서 90% 신뢰수준의 임계값 0.3979 보다 큰 값 0.4375로 계산되었다.
정규분포에 해당하는 데이터이지만, 이상치로 분류된 것이 확인되었다. 

데이터의 정보를 미리 알고서 접근해서 내용을 확인했지만, 
Q-test가 필요한 상황은 데이터의 정보가 불분명한 상황에서 사용된다.
반복적인 Q-test로 이상치를 확인하고 제거하는 방법은 
정상적인 데이터를 이상치로 만들 수 있으므로 적절하지 않다. 
데이터의 분포를 파악하고 다수의 이상치가 의심되는 경우라면
다수의 이상치를 동시에 확인할 수 있는 방법을 사용해야 한다. 

내용에 포함된 계산 내용을 엑셀 파일로 작성해서 업로드합니다. 
계산 방식을 이해하는데 참고 바랍니다. 

Dixons Q test_V1.xlsx
0.06MB

 

728x90