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

[Excel] 이상치 (Outlier) 확인: Grubbs' test

by 어날켐 2024. 4. 22.
728x90
반응형

단일 이상치 (Single Outlier) 확인을 위한 Grubbs' test를 알아보자. 

Grubbs' test는 1950에  Frank E. Grubbs에 의해서 발표된 내용으로
정규분포에서 벗어난 이상치를 확인하기 위한 방법으로 소개되었다. 

현재까지 동일한 데이터 집합에서 단일 이상치를 확인하는 방법으로 소개되고 있다. 
적은 수의 데이터 집합부터 단일 이상치를 확인할 수 있는 방법으로
이상치를 확인하는 방법은 Z-score 방법과 비슷하지만, 
명확한 평가 기준이 부족한 Z-score 방법의 단점을 보완하고 있다.  


Grubbs' test 계산 및 평가 방법

Grubbs' test는 이상치로 예상되는 데이터의 "G" 값을 계산하고,
데이터 수와 유의 수준에 부합하는 평가 기준 $(G_{crit})$을 초과하면 이상치로 평가된다.   

"G" 값은 전체 데이터의 평균 $(\overline {x})$과 표준편차$(SD)$로 계산된다. 
다음과 같은 수식으로 계산된다.

 $ G =  \dfrac{| x_i - \overline{x} |}{SD}   $

G 값은 Z-score의 계산 수식이 동일하다.
하지만, 평가 기준이 내용이 다른 것이 확인된다.

이상치 평가를 위한 $G_{crit}$ 은 유의수준 (Significance level: $\alpha$)과 데이터 수 (n)가 포함되어 계산된다. 
$G_{crit}$  계산 수식은 다음과 같이 제시되었다.   

$G_{crit} = \dfrac{(n-1)}{\sqrt{n}} \sqrt{\dfrac{t^2_{\alpha/2n, n-2}}{n-2+t^2_{\alpha/2n, n-2}}}$  (Two-sided test)

$G_{crit} = \dfrac{(n-1)}{\sqrt{n}} \sqrt{\dfrac{t^2_{\alpha/n, n-2}}{n-2+t^2_{\alpha/n, n-2}}}$  (One-sided test)

" t " 값은 t-분포 임계값 (Critical value of t-distribution)으로 유의수준과 데이터 수로 값을 확인할 수 있다. 
엑셀에서 " T.INV (probability, degree of freedom) "로 값을 확인할 수 있다. 
Probability 값은 1 - significance level 로 유의 수준 (Significance level) 0.05로 이상치를 평가한다면
정규분포 95% 범위를 벗어난 값을 이상치로 평가한다는 것을 의미하고 있다. 
엑셀에서 계산의 편의성을 위해서 probability를 significance level로 입력하면, 
" 1 - significance " 값과 동일한 값에 음의 값으로 계산되므로 절대값 함수를 추가하였다. 

수식에서 "Two-sided test", "One-sided test" 는 차이는
정규분포에서 벗어난 이상치가 한쪽 방향 (One-sided)으로만 존재하는지 
양쪽 모두 (Two-sided) 존재하는지에 따라서 다른 기준이 적용된다. 
Grubbs' test 는 단일 이상치 평가에 사용되므로 "One-sided test" 기준이 적용된다.
엑셀 계산에서 "T.INV" 는 t-분포의 단측 (왼쪽) 역함수 값을 반환하는 함수로 
수식에 $ \alpha /n $ 은 One-sided test 이상치 평가 기준이 되고, 
$ \alpha /2n $은 Two-sided test 이상치 평가 기준이 된다. 


 Grubbs' test 결과 내용

데이터 수가 많은 경우에서는 결과 오류가 적게 나타나지만, 
수가 적은 경우에는 결과 오류의 발생 확률이 높다. 
적은 수의 데이터를 만들어서 어느 수준의 데이터부터 이상치로 확인되는지 확인해 보았다.

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


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

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

No. Result       Grubbs' test 
1 8.74   Test result 12.10
2 9.46   Mean = 10.01
3 9.49   SD = 0.94
4 9.49   G value = (12.1 - 10.1) / 0.94 = 2.22
5 9.52   $G_{crit} (\alpha = 0.05, n = 10) $  
6 9.92     2.176 (One-sided test)
7 10.20     2.290 (Two-sided test)
8 10.27      
9 10.90      
10 12.10      

이상치 12.1의 G value 값은 2.22 로 계산되고, 한쪽 방향의 이상치 평가 기준 $G_{crit}$ 2.176으로 확인된다.  
이상치 12.1은 G 값은 이상치 평가 기준 보다 큰 값으로 이상치로 확인되었다. 


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

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

No. Result       Grubbs' test 
1 6.12   Test result 6.12
2 9.46   Mean = 9.64
3 9.49   SD = 1.36
4 9.49   G value = (9.64 - 6.12) / 1.36 = 2.58
5 9.52   $G_{crit} (\alpha = 0.05, n = 10) $  
6 9.92     2.176 (One-sided test)
7 10.20     2.290 (Two-sided test)
8 10.27      
9 10.90      
10 10.99      

이상치 6.12의 G value 값은 2.58 로 계산되고, 한쪽 방향의 이상치 평가 기준 $G_{crit}$ 2.176으로 확인된다.  
이상치 6.12은 G 값은 이상치 평가 기준 보다 큰 값으로 이상치로 확인되었다. 


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

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

No. Result       Grubbs' test 
1 6.12   Mean = 9.75
2 9.46   SD = 1.52
3 9.49   Test result 12.10
4 9.49   G value = (12.10 - 9.75) / 1.52 = 1.55
5 9.52   Test result 6.12
6 9.92   G value = (9.75 - 6.12) / 1.52 = 2.39
7 10.20   $G_{crit} (\alpha = 0.05, n = 10) $  
8 10.27     2.176 (One-sided test)
9 10.90     2.290 (Two-sided test)
10 12.10      

이상치 6.12의 G value 값은 2.39 로 계산되고, 이상치 12.1의 G value 값은 1.55 로 계산되었다. 
양쪽 방향의 이상치 평가 기준 $G_{crit}$ 2.290 으로 확인되었고, 
표준편차 3배 이상인 6.12가 기준치를 초과했고
표준편차 2배 이상인 12.1은 기준치를 초과하지 않았다.      

이상치 2개가 동시에 포함된 경우 정규분포에 가까운 이상치는 구분되지 않았다.  

이상치 6.12를 제거하고, 이상치 12.1을 다시 Q-test로 평가해 보았다.  

No. Result       Grubbs' test 
1 9.46   Test result 12.10
2 9.49   Mean = 10.15
3 9.49   SD = 0.88
4 9.52   G value = (12.10 - 10.15) / 0.88 = 2.22
5 9.92   $G_{crit} (\alpha = 0.05, n = 9) $  
6 10.20     2.110 (One-sided test)
7 10.27     2.215 (Two-sided test)
8 10.90      
9 12.10      

이상치 12.1의 G value 값은 2.22 로 계산되고, 한쪽 방향의 이상치 평가 기준 $G_{crit}$ 2.110으로 확인된다.  
이상치 12.1은 G 값은 이상치 평가 기준 보다 큰 값으로 이상치로 확인되었다. 

이상치를 모두 제거 후 남은 데이터로 이상치를 평가해 보았다. 

No. Result       Grubbs' test 
1 9.46   Test result 10.90
2 9.49   Mean = 9.91
3 9.49   SD = 0.52
4 9.52   G value = (10.90 - 9.91) / 0.52 = 1.91
5 9.92   $G_{crit} (\alpha = 0.05, n = 8) $  
6 10.20     2.032 (One-sided test)
7 10.27     2.127 (Two-sided test)
8 10.90      

정규분포에 포함되는 10.90의 G value 값은 1.91 로 계산되고,
한쪽 방향의 이상치 평가 기준 $G_{crit}$ 2.032으로 확인된다.  

데이터 10.90은 G 값은 이상치 평가 기준 보다 낮은 값으로 정규분포에 포함되는 것이다.

이전에 단일 이상치 평가 방법 Q-test 소개하였고, 
동일한 데이터를 평가해서 확인했었다. 
Q-test에서는 10.90 값이 이상치로 평가되는 내용이 확인되었다. 
단편적인 데이터의 결과만으로 더 좋은 방법이라고 설명할 수 없다.   
상이한 평가 차이는 데이터의 분포와 연관성이 있으므로
적은 수의 데이터 분포에 따라서 평가 방법마다 다른 결과를 보일 수 있다. 

데이터의 정보가 불분명한 상황에서 이상치 테스트를 진행하는 경우에는
반복적인 테스트로 이상치를 확인하고 제거하는 방법은 
정상적인 데이터를 이상치로 만들 수 있으므로 주의가 필요하다.  
데이터의 분포를 파악하고 다수의 이상치가 의심되는 경우라면
다수의 이상치를 동시에 확인할 수 있는 방법을 사용해야 한다. 

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

 

Grubbs test_V1.xlsx
0.51MB

728x90
반응형