Python에서 anderson-darling 테스트를 수행하는 방법
Anderson-Darling 검정은 데이터가 지정된 분포에 얼마나 잘 맞는지 측정하는 적합도 검정입니다.
이 테스트는 데이터가 정규 분포를 따르는지 여부를 확인하는 데 가장 자주 사용됩니다.
이 유형의 테스트는 회귀 분석 , ANOVA , t-테스트 등을 포함한 많은 통계 테스트에서 일반적으로 사용되는 가정인 정규성을 테스트하는 데 유용합니다.
예: Python의 Anderson-Darling 테스트
Python에서 Anderson-Darling 테스트를 수행하려면 다음 구문을 사용하는 scipy.stats 라이브러리의 anderson() 함수를 사용할 수 있습니다.
앤더슨(x, dist=’표준’)
금:
- x : 샘플 데이터 테이블
- dist : 테스트할 분포 유형입니다. 기본값은 “standard”이지만 “expon” 또는 “logistics”를 지정할 수도 있습니다.
예를 들어, 정규 분포 확률 변수 50개 샘플에 대해 Anderson-Darling 테스트를 수행하는 방법은 다음과 같습니다.
import numpy as np #create data np.random.seed(0) data = np.random.normal(size=50) #perform Anderson-Darling Test from scipy.stats import anderson anderson(data) AndersonResult( statistic =0.15006999533388665, critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]), significance_level =array([15. , 10. , 5. , 2.5, 1. ]))
검정 통계량은 0.150 입니다. 이 값을 각 유의 수준에 해당하는 각 임계값과 비교하여 테스트 결과가 유의한지 확인할 수 있습니다. 예를 들어:
- α = 0.01의 임계값은 1.021 입니다. 검정통계량(0.150)이 이 임계값보다 크지 않기 때문에 0.01 유의수준에서는 결과가 유의하지 않습니다.
- α = 0.025의 임계값은 0.858 입니다. 검정통계량(0.150)이 이 임계값보다 크지 않기 때문에 0.025 유의수준에서는 결과가 유의하지 않습니다.
등등.
테스트 결과는 어떤 유의 수준에서도 유의미하지 않다는 것을 알 수 있습니다. 이는 테스트의 귀무 가설을 기각하지 않음을 의미합니다. 따라서 샘플링된 데이터가 정규 분포를 따르지 않는다고 주장할 충분한 증거가 없습니다.
np.rand.normal() 함수를 사용하여 50개의 정규 분포 값 샘플을 생성했다는 점을 고려하면 이 결과는 놀라운 일이 아닙니다.
대신 0과 10 사이의 50개의 임의 정수 샘플에 대해 Anderson-Darling 테스트를 수행했다고 가정해 보겠습니다.
import numpy as np #create data np.random.seed(0) data = np.random.randint(0, 10, size=50) #perform Anderson-Darling Test from scipy.stats import anderson anderson(data) AndersonResult( statistic =1.1926463985076836, critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]), significance_level =array([15. , 10. , 5. , 2.5, 1. ]))
검정 통계량은 1.1926 입니다. 이 값을 각 유의 수준에 해당하는 각 임계값과 비교하여 테스트 결과가 유의한지 확인할 수 있습니다. 예를 들어:
- α = 0.01의 임계값은 1.021 입니다. 검정통계량(1.1926)이 이 임계값보다 크기 때문에 결과는 0.01 유의수준에서 유의합니다.
- α = 0.025의 임계값은 0.858 입니다. 검정통계량(1.1926)이 이 임계값보다 크기 때문에 결과는 0.025 유의수준에서 유의합니다.
등등.
검정 결과는 각 유의 수준에서 유의미하다는 것을 알 수 있습니다. 즉, 어떤 유의 수준을 사용하더라도 검정의 귀무 가설을 기각한다는 의미입니다. 따라서 샘플링된 데이터가 정규 분포를 따르지 않는다고 말할 수 있는 충분한 증거가 있습니다.
np.rand.randint() 함수를 사용하여 정규 분포를 따르지 않는 0에서 10 사이의 50개의 임의 정수 샘플을 생성했다는 점을 고려하면 이 결과는 놀라운 일이 아닙니다.
여기에서 더 많은 Python 튜토리얼을 찾을 수 있습니다 .