>백엔드 개발 >파이썬 튜토리얼 >Python에서 Grubbs 테스트를 수행하는 방법

Python에서 Grubbs 테스트를 수행하는 방법

WBOY
WBOY앞으로
2023-08-28 15:49:07895검색

소개

Grubbs 테스트는 데이터 세트에서 이상값을 탐지하는 데 사용되는 통계적 가설 테스트 방법입니다. 이상치는 데이터 분포에 할당된 관측치로, 이상치라고도 합니다. 이상값이 있는 데이터 세트는 정규/가우스 분포가 있는 데이터보다 과적합에 더 취약한 경향이 있습니다. 따라서 머신러닝 모델링에 앞서 이상값을 해결하는 것이 필요합니다. 처리하기 전에 데이터 세트에서 이상값을 감지하고 찾아야 합니다. 가장 널리 사용되는 이상값 탐지 기술은 QQPlot, 사분위간 범위 및 Grubbs 통계 테스트입니다. 그러나 이 기사에서는 이상값을 탐지하기 위한 Grubbs 테스트에 대해서만 설명합니다. 배우게 될 내용: Grubbs 테스트란 무엇이며 Python에서 이를 구현하는 방법.

이상치란 무엇인가요?

이상값은 다른 데이터 값과 수치적으로 거리가 먼 데이터 관측값입니다. 이 값은 정규 분포 데이터의 범위를 벗어납니다. 정규 분포를 달성하려면 데이터 세트에 첫 번째 표준 편차 레코드의 67%, 두 번째 표준 편차의 데이터 95%, 세 번째 표준 편차의 점 99.7%가 포함되어야 합니다. 즉, 데이터 포인트는 1분위수 범위와 3분위수 범위 사이에 있어야 합니다. 첫 번째 사분위수 아래의 레코드와 세 번째 사분위수 위의 레코드를 이상값 또는 이상값으로 간주합니다.

Grabbs 통계 가설 테스트

다른 통계적 가설 검정과 마찬가지로 Grubbs 검정도 귀무 가설(H0) 또는 대립 가설(H1)을 승인하거나 기각할 수 있습니다. Grubbs 테스트는 데이터 세트에서 이상값을 감지하는 테스트입니다.

Grubbs 테스트는 두 가지 방법으로 수행할 수 있습니다. 단측 테스트양측 테스트. 단변량 데이터 세트 또는 최소 7개 변수의 분포를 갖는 거의 정규 표본에 대해. 이 검정은 극한 스튜던트화 편차 검정 또는 최대 정규화 잔차 검정이라고도 합니다.

Grubbs 테스트는 다음과 같은 가정을 사용합니다. -

  • Null(H0): 데이터 세트에 이상값이 없습니다.

  • 대안(H1): 데이터 세트에는 특이치가 하나만 있습니다.

Python에서 Grabbs 테스트

Python은 방대한 라이브러리 컬렉션을 통해 모든 프로그래밍 문제를 처리할 수 있습니다. 이러한 라이브러리는 모든 작업, 통계 테스트 등을 수행하는 데 직접 사용할 수 있는 내장 메서드를 제공합니다. 마찬가지로 Python에는 이상값을 감지하기 위해 Grubbs 테스트를 수행하는 방법이 포함된 라이브러리가 있습니다. 그러나 Python에서 Grubbs 테스트를 구현하는 두 가지 방법, 즉 라이브러리에 내장된 함수와 처음부터 수식을 구현하는 방법을 살펴보겠습니다.

Outlier 라이브러리 및 Smirnov_grubbs

먼저 다음 명령을 사용하여 outlier_utils 라이브러리를 설치하겠습니다.

으아악

이제 이상값이 포함된 데이터 세트를 만들고 Grubbs 테스트를 수행해 보겠습니다.

양면 Grubb 검사

문법

으아악

매개변수

data - 데이터 값의 숫자형 벡터입니다.

alpha - 테스트의 유의 수준입니다.

지침

이 방법에서 사용자는 Grubb의 테스트를 실행하기 위해 outlier 패키지의 smirnov_grubbs.test() 함수를 사용하고 필요한 데이터를 입력으로 전달해야 합니다.

으아악

출력

으아악

위 코드는 라이브러리와 데이터를 로드하는 것으로 시작하고 마지막으로 "test" 메서드를 사용하여 이 데이터에 대해 Grubbs 테스트를 수행합니다. 이 테스트는 양쪽(왼쪽 및 오른쪽)의 이상값이나 1분위수 이하 및 3분위수 이상의 값을 감지합니다. 데이터에는 단 1개의 이상값(40)이 있었으며 이는 Grubbs의 테스트를 사용하여 제거되었습니다.

단면 그럽스 테스트

Synatx

으아악

지침

이 방법에서 사용자는 grubbs.min_test() 함수를 호출하여 제공된 데이터세트에서 최소 이상값을 가져오거나 grubbs.max_test() 함수를 호출하여 제공된 데이터세트에서 최대 이상값을 가져와야 합니다. 일방적인 Grubb 테스트를 얻었습니다.

으아악

출력

으아악

단측 Grubbs 테스트는 1분위수 아래 또는 3분위수 위의 이상값을 감지합니다. min_test 메소드는 데이터의 가장 작은 쪽에서 이상값을 제거하고, max_test 메소드는 데이터 상단에서 이상값을 제거하는 것을 볼 수 있습니다.

수식 구현

여기에서는 Python을 사용하여 다음 Grubbs 테스트 공식을 구현합니다. 이를 달성하기 위해 Numpy 및 Scipy 라이브러리를 사용할 것입니다.

Python에서 Grubbs 테스트를 수행하는 방법

문법

으아악

알고리즘

구현 단계는 다음과 같습니다 -

  • 데이터 세트 값의 평균을 계산합니다.

  • 데이터 세트 값의 표준 편차를 계산합니다.

  • Grubbs 테스트 공식을 구현하려면 데이터 세트의 각 값을 평균에서 빼서 분자를 계산하세요.

  • 분자 값을 표준 편차로 나누어 계산된 점수를 얻으세요.

  • 동일한 값에 대한 임계 점수를 계산합니다.

  • 임계 값이 계산된 값보다 크면 데이터 세트에 이상치가 없고, 그렇지 않으면 이상치가 있는 것입니다.

으아악

출력

으아악

Grubb 테스트 결과, 배열 x에는 이상값이 없지만 y에는 1개의 이상값이 있는 것으로 나타났습니다.

결론

이 기사에서는 Python의 이상치 및 Grubbs 테스트에 대해 배웠습니다. 몇 가지 핵심 사항으로 이 기사를 마무리하겠습니다.

  • 이상치는 사분위수 범위를 벗어나는 기록입니다.

  • 이상치는 데이터 세트의 정규 분포를 따르지 않습니다.

  • Grubbs 가설 통계 검정을 사용하여 이상값을 탐지할 수 있습니다.

  • outlier_utils 라이브러리에 제공되는 내장 메서드를 사용하여 Grubbs 테스트를 실행할 수 있습니다.

  • 양면 Grubbs 테스트는 왼쪽과 오른쪽의 이상값을 감지하고 제거합니다.

  • 그러나 단측 Grubbs 테스트는 양쪽의 이상값을 감지합니다.

위 내용은 Python에서 Grubbs 테스트를 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제