Python에서 grubbs의 테스터를 실행하는 방법
Grubbs 테스트는 데이터 세트에서 이상값의 존재를 식별하는 데 사용됩니다. 이 검정을 사용하려면 데이터 세트가 대략적으로 정규 분포를 따르고 최소 7개의 관측치를 포함해야 합니다.
이 튜토리얼에서는 Python에서 Grubbs 테스트를 수행하는 방법을 설명합니다.
Python의 Grubbs 테스트
Python에서 Grubbs 테스트를 수행하려면 다음 구문을 사용하는 outlier_utils 패키지의 smirnov_grubbs() 함수를 사용할 수 있습니다.
smirnov_grubbs.test (데이터, 알파 = 0.05)
금:
- 데이터: 데이터 값의 숫자형 벡터
- 알파: 테스트에 사용할 유의 수준입니다. 기본값은 0.05입니다.
이 기능을 사용하려면 먼저 outlier_utils 패키지를 설치해야 합니다.
pip install outlier_utils
이 패키지가 설치되면 Grubbs 테스트를 수행할 수 있습니다. 다음 예에서는 이를 수행하는 방법을 보여줍니다.
예 1: 양측 Grubbs 테스트
다음 코드는 데이터 세트의 양쪽 끝에서 이상값을 감지하는 양측 Grubbs 테스트를 수행하는 방법을 보여줍니다.
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test grubbs. test (data, alpha=.05) array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29])
이 함수는 이상값 없이 단순히 배열을 반환합니다. 이 경우 최대값인 40은 이상치이므로 제거되었습니다.
예 2: 단방향 Grubbs 테스트
다음 코드는 데이터 세트의 최소값과 최대값에 대해 단측 Grubbs 테스트를 수행하는 방법을 보여줍니다.
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test to see if minimum value is an outlier grubbs. min_test (data, alpha=.05) array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test to see if minimum value is an outlier grubbs. max_test (data, alpha=.05) array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29])
최소 이상값 테스트에서 최소값을 이상값으로 감지하지 못했습니다. 그러나 최대 이상값 테스트에서는 최대값 40이 이상값으로 확인되어 제거되었습니다.
예시 3: 이상치 지수 추출
다음 코드는 이상값의 인덱스를 추출하는 방법을 보여줍니다.
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test and identify index (if any) of the outlier grubbs. max_test_indices (data, alpha=.05) [16]
이는 테이블의 인덱스 위치 16에 이상값이 있음을 나타냅니다.
예시 4: 이상치에서 값 추출
다음 코드는 이상치에서 값을 추출하는 방법을 보여줍니다.
import numpy as np from outliers import smirnov_grubbs as grubbs #define data data = np.array([5, 14, 15, 15, 14, 19, 17, 16, 20, 22, 8, 21, 28, 11, 9, 29, 40]) #perform Grubbs' test and identify the actual value (if any) of the outlier grubbs. max_test_outliers (data, alpha=.05) [40]
이는 값이 40인 이상값이 있음을 나타냅니다.
이상치를 처리하는 방법
Grubbs 테스트가 데이터 세트에서 이상값을 식별하는 경우 다음과 같은 몇 가지 옵션이 있습니다.
1. 값이 오타나 데이터 입력 오류가 아닌지 다시 확인하세요. 때로는 데이터 세트에서 이상치로 나타나는 값이 단순히 데이터 입력 중 개인이 작성한 오타일 수도 있습니다. 먼저 추가 결정을 내리기 전에 값이 올바르게 입력되었는지 확인하십시오.
2. 이상값에 새 값을 할당합니다 . 이상값이 오타나 데이터 입력 오류로 인해 발생한 것으로 판명되면 데이터 세트의 평균 이나 중앙값 과 같은 새 값을 할당하기로 결정할 수 있습니다.
3. 이상값을 제거합니다. 값이 실제로 이상값인 경우 분석에 상당한 영향을 미칠 경우 해당 값을 제거하도록 선택할 수 있습니다.