본문 바로가기
데이터 통계 분석

[Excel+Python] 정규성 검증: Shapiro-Wilk test

by 어날켐 2024. 2. 19.
728x90
반응형

정규성 검정 (normality test) 방법 중 Shapiro-wilk test 를 
엑셀 (Excel)의 파이썬 (Python) 편집기로 계산하는 방법 알아보자!

이전 정규성 검증에 사용되는 Q-Q plot 작성을 알아보면서 
통계적 검증으로 Shapiro-Wilk test를 같이 소개하였다. 
하지만, 엑셀에서는 Shapiro-Wilk test 계산을 제공하고 있지 않아서
계산할 수 있는 추가기능을 소개하고, 
엑셀에서 계산하는 계산식도 같이 확인했었다. 
자세한 내용은 아래 내용을 참고 바랍니다. 

2023.11.06 - [데이터 처리 방법] - [Excel] 정규성 검증 : Q-Q plot 만들기

 

[Excel] 정규성 검증 : Q-Q plot 만들기

엑셀 (Excel)을 이용해서 Q-Q plot 만들고 정규성 검증하기 분석 결과의 정규성 검증은 다음과 같은 상황에서 확인이 필요하다. 단일 그룹의 자료에서 이상치 (outlier) 확인 방법으로 사용된다. 예를

analchem.tistory.com

이전 방법들은 추가 기능 설치 또는 직접 계산식을 사용해야 하기 때문에 
추가 기능이 없는 사용자는 내용을 확인할 수 없거나 
계산식을 작성하는 과정에서 오류가 발생할 수 있다. 
엑셀을 사용하면서 이런 문제점들을 해결하는 방법을 제시하려고 한다. 

최근 엑셀에서 파이썬 기능을 추가하였다. 
파이썬에서는 통계적 계산 방법을 이전 부터 제공하고 있고, 
파이썬 계산은 인정된 방법으로 많이 사용되고 있다.
엑셀 파이썬 기능은 현재 기준으로 정식 버전이 출시되지 않고, 
베타 버전으로 업그레이드 하면 파이썬 기능을 사용할 수 있다. 

파일 > 계정 > Microsoft 365 참가자 : 베타 채널 (선택)

파이썬 기능이 추가되면 다음과 같은 메뉴가 활성화되어 나타난다.  
수식 메뉴에 "Python 삽입" 이 버튼이 보인다. 

기존 엑셀 버전을 베타버전으로 업그레이드 하면 
파이썬의 통계 계산을 사용할 수 있다. 
적은 수의 데이터 정규성을 검증하기 위해서 사용되는 
Shapiro-wilk test는 파이썬 패키지 "SciPy" 가 제공하고 있다.
scipy 패키지 중 여러가지 부류 중 통계적 계산 방법 stats에
포함되어 있다. 자세한 내용은 아래 링크를 통해서 확인이 가능하다.
scipy.stats.shapiro — SciPy v1.12.0 Manual

 

scipy.stats.shapiro — SciPy v1.12.0 Manual

[2] (1,2) Shapiro, S. S. & Wilk, M.B, “An analysis of variance test for normality (complete samples)”, Biometrika, 1965, Vol. 52, pp. 591-611, DOI:10.2307/2333709 [3] Razali, N. M. & Wah, Y. B., “Power comparisons of Shapiro-Wilk, Kolmogorov-Smirnov,

docs.scipy.org

위 계산 방법을 이용하면 통계적 결과
"통계량, 유의 확률 (p-value)"을 얻을 수 있다. 


[사용 방법] 

엑셀에서 파이썬으로 통계적 결과를 얻는 순서는 다음과 같다. 
파이썬 활성화 → 데이터 범위 설정 → 코드 입력 → 결과 확인 

파이썬 활성화 방법은 간단하다. 
셀에서 "=py" 라고 입력하고, 탭 (Tab)을 누르면
수식 창이 파이썬 코드를 입력하는 창으로 변환된다. 

이 상태에서 데이터를 드래그하면 
해당 영역을 가져오는 함수와 범위가 다음과 같이 입력된다. 
xl("A1:A31", headers = True)
첫 행의 자료가 다른 자료와 타입이 다르면 
headers = True 내용이 자동으로 입력되어 데이터로 사용하지 않는다.
그리고 설정된 데이터를 하나의 변수로 지정해야 한다. 
변수는 임의로 설정하고 아래와 같은 형태로 입력해야 한다. 
x = xl("A1:A31", headers = True)
x 변수에 지정된 영역의 데이터가 입력된 것이다. 

파이썬은 내장된 함수를 불러와서 사용하는 방식을 사용하고 있다. 
코드 입력은 함수를 불러오고 변수와 함수를 지정하는 내용을 작성한다.
내장된 함수를 불러오는 내용은 아래와 같이 작성된다. 
from scipy.stats import shapiro
scipy 패키지에서 통계적 분석 내용 카테고리 stats를 선택하고
그 중에 shapiro 함수를 불러온다는 내용이다. 

함수를 사용하는 방법은 아래와 같이 함수와 지정한 변수를 입력한다. 
shapiro(x)
shapiro 함수를 사용할 때는 괄호()에 지정된 변수"x"를 입력하면 된다. 

모든 코드가 입력되면 코드가 작동하도록 활성화하는 방법은
"Ctrl + Enter" 를 입력한다. 
계산된 내용은 바로 보이지 않는 것은 결과를 출력하는 방법을
코드로 입력하지 않았기 때문이다. 
엑셀에서는 결과를 보는 방법을 설정할 수 있고,
"Python 출력 > Excel 값"으로 설정하면 
출력 결과 값이 통계량과 유의확률이 나타난다. 

위 내용의 전체 과정을 아래 영상으로 확인할 수 있다.


[결과 해석] 

Shapiro-wilk test의 결과 해석은 유의확률 (p-value)를 통해서 확인한다.
결과에서 통계량 값은 유의확률을 확인하기 위한 값으로 
유의확률을 확인하면 정규성 검증이 가능하다. 

Shapiro-wilk test는 데이터가 정규성을 있다고 가정하고 계산한다.
계산된 통계량 값을 이용해서 정규성이 있는지 확률 값을 확인한다.
95% 신뢰구간에서 유의한 정규성이 있는지 확인한다면,
유의확률 값이 5% 보다 크다면 정규성이 있다고 판단한다. 
유의확률 값은 %가 적용되지 않으므로
계산된 p-value 값이 0.05 보다 크다면, 
데이터의 정규성이 통계적으로 유의한 정규성이 있다고 확인된다. 
반대로, p-value 값이 0.05 보다 작으면 
통계적으로 유의한 정규성이 없는 데이터로 확인된다. 

통계적 검증 수준은 유의확률 값을 변동해서 적용하므로 
데이터의 신뢰도 및 검증 절차에 기준에 따라서 유의확률 기준이 변동될 수 있다. 
일반적으로 95% 신뢰수준인 0.05 값이 많이 사용된다. 

해당 내용을 엑셀 파일로 작성해서 첨부합니다. 
첨부된 파일 내용에는 간단한 Shapiro-wilk test 내용과
Q-Q plot 내용에 Shapiro-wilk test 를 파이썬 내용으로 수정되었습니다. 
자세한 내용은 첨부파일을 확인바랍니다. 

Python_SaphiroWilk test_V1.xlsx
0.05MB

끝까지 내용 확인해 주셔서 감사합니다. 

728x90
반응형