# 데이터 (정규성에 만족하지 않게 일부 변경)
import pandas as pd
df = pd.DataFrame({
'무게':[219, 121, 121, 119, 125, 115, 121, 118, 117, 127,
123, 129, 119, 124, 114, 126, 122, 124, 121, 116,
123, 123, 127, 118, 122, 117, 124, 125, 123, 121],
})
💜이번에는 정규분포를 따르지않게 숫자 한개를 219로 굉장히 크게 바꿨습니다.
이럴때는 어떻게 단일표본검정(ttest)를 해야할까요? 할 수 없쥬..
그래서 정규분포를 따르는지 확인하고 따른다면 ttest진행해도 되지만 아니라면 윌콕으로 비모수 검정으로 대체합니다.
💜그래서 비모수일때는 보통 아래의 순서로 진행을 하는데
1. 샤피로 윌크 정규성 검정
2.윌콕의 부호 순위 검정 수행
이렇게 입니다.
먼저 정규분포 따르는지 확인하고 따르지 않는다면 윌콕슨 부호 순위 검정을 사용합니다.
💜 여기서 살짝 알아둬야할것이 있습니다.
보통 귀무가설을 기각하는 목적으로 연구결과를 발표할텐데..
샤프로윌크검정에서만큼은 귀무가설이 채택되기를 바라야합니다..
- 귀무가설 (H0): 주어진 데이터 샘플은 정규 분포를 따른다.
- 대립가설(H1): 주어진 데이터 샘플은 정규 분포를 따르지 않는다.
0.05보다 큰 값이 나와줘야 정규분포를 따른다고 볼 수 있습니다.
# Shapiro-Wilk(샤피로-윌크) 정규성 검정
from scipy import stats
stats.shapiro(df['무게'])
여기서 shapiro() 에서는 데이터만 넣어주면 됩니다.
💜결과
ShapiroResult(statistic=0.35728970196526855, pvalue=2.2139240997414947e-10)
검정통계량은 0.357이고 pvalue는 0.05보다 작기때문에 정규분포를 따르지 않습니다 라는것입니다.
->실제로 우리가 만든 데이터는 정규분포를 따르지 않으므로 잘 한것임.
사실 'e'가 들어있는지 없는지를 확인해야하는데 보통 그냥 e가 들어가면 0.05보다 작다는것을 알 수 있습니다.
다음으로 정규분포를 따르지 않을때에는 비모수를 사용해야하는데
💜윌콕의 부호 순위 검정 수행을 수행해볼것입니다.
여기서 비전공자를 위한 비모수란?
비모수는 정규분포를 따르지 않는데이터예요.
비모수검정?
데이터가 특정한 분포를 따른다는 가정 없이 검정을 수행할 수 있는 방법!
예시로 보자면(단측검정)
Wilcoxon 검정 (비모수 검정)
귀무가설 (H0): μ = μ0, "합격 원두(dark)" 상품의 중앙값 무게는 120g이다.
대립가설(H1): μ < μ0, "합격 원두(dark)" 상품의 중앙값 무게는 120g 보다 작다
(추가) 비모수 검정: 평균 -> 중앙값으로 변경 (중앙값도 평균값이라 동일하다고 하겠습니다.)
# Wilcoxon(윌콕슨)의 부호 순위 검정 수행
from scipy import stats
stats.wilcoxon(df['무게'] -120, alternative='less')
여기서 단일표본사용 willcoxon() 에서는 데이터 -120, alternative는 관측값이 더 작아야하기때문에 less를 사용합니다.
💜결과
WilcoxonResult(statistic=341.0, pvalue=0.9882949283346534)
귀무가설을 기준으로는 귀무가설 채택입니다.
'자격증 > [빅분기] 빅데이터분석기사' 카테고리의 다른 글
[작업형3] 독립표본검정 + 심화 (0) | 2024.11.07 |
---|---|
[작업형3] 대응표본검정 + 심화 (9) | 2024.11.06 |
[작업형3] 단일표본검정 (1) | 2024.11.04 |
[작업형3] 가설검정 (0) | 2024.10.28 |
[작업형2] 'tuple' object is not callable (0) | 2024.10.13 |