🟢 단일표본검정에 대해 공부했습니다.
문제는 이렇습니다.
단일표본검정
나커피 유튜버는 최근 판매되는 "합격 원두(dark)" 상품의 실제 무게를 조사하였다.
제조사는 "합격 원두(dark)"의 무게를 120g라고 표기하였다.
나커피 유튜버는 이 주장이 사실인지 확인하기 위해 상품의 무게를 측정하였다.
다음은 30개의 상품 샘플의 무게 측정 결과다.
이 측정 결과를 바탕으로 제조사의 주장인 상품의 무게(120g)가 사실인지 검정해보시오.
(데이터는 정규분포를 따른다고 가정한다.) <- 요말이 있으면 단일표본검정(T검정)을 해도 됨.
- 귀무가설: μ = μ0, "합격 원두(dark)" 상품의 평균 무게는 120g이다.
- 대립가설: μ ≠ μ0, "합격 원두(dark)" 상품의 평균 무게는 120g 아니다.
- μ(뮤): 현재 조사하려는 상품의 실제 평균 무게
- μ0(뮤 제로): 제조사가 주장하는 상품의 평균 무게(120g)
🟢 단일표본검정(t검정)
import pandas as pd
df = pd.DataFrame({
'무게':[119, 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],
})
의 데이터를 가지고 활용해보겠습니다.
# 단일표본검정
from scipy import stats
print(stats.ttest_1samp(df['무게'], 120))
scipy싸이파이에 stats를 가지고 임포트를 해주고
stats.ttest_1samp() 는 단일표본검정을 해주는 함수입니다.
안에는 실제값을 넣고, 뮤제로(120)을 넣습니다. 정리를 하면
stats.ttest_1samp(df['무게],120)
🟢결과
TtestResult(statistic=2.153709967150663, pvalue=0.03970987897788578, df=29)
Ttest결과가 나옵니다.
statistic(검정통계량)은 2.1537, pavalue 0.039
여기서는 0.05 유의수준보다 작기때문에 귀무가설 기각, 대립가설 채택이 될 수 있습니다.
df는 자유도고 관측 +1 이라고 생각해주면 됩니다.
그러면 즉 30개가 되겠죠
그러나 시험환경은 1.7이라서 자유도(df)가 출력되지않습니다. 참고용입니다.
alternative 매개변수는 대립가설의 방향을 설정하는 옵션이에요.
two-sided, greater, less가 각각 어떤것을 의미하는지 알아야 또 이해를 하고 넘어갈 수 있으니
꼭 숙지하도록 해야합니다..
- two-sided (양측 검정):
- 표본 평균이 기준값과 다르다 (기준값보다 크거나 작다).
- 예: "표본 평균이 120과 다르다"를 검정하고 싶을 때 사용.
- greater (단측 검정, 오른쪽 꼬리):
- 표본 평균이 기준값보다 크다.
- 예: "표본 평균이 120보다 크다"를 검정하고 싶을 때 사용.
- less (단측 검정, 왼쪽 꼬리):
- 표본 평균이 기준값보다 작다.
- 예: "표본 평균이 120보다 작다"를 검정하고 싶을 때 사용.
쉽게 말해:
- two-sided: 기준값과 다르냐? (크든 작든 상관없이 차이가 있는지)
- greater: 기준값보다 크냐?
- less: 기준값보다 작냐?
이렇게 해석하면 됩니다! 뭔가 쉬워보이긴하는데 막상 적용할라면 헷갈리더라구요.
# 대립가설: 합격 원두(dark)" 상품의 평균 무게는 120g 아니다.
print(stats.ttest_1samp(df['무게'], 120, alternative='two-sided'))
🟢결과
TtestResult(statistic=2.153709967150663, pvalue=0.03970987897788578, df=29)
의 결과로 p-value값이 0.05보다 작으므로 같은 결과가 대립가설 채택됩니다.
# 대립가설: 합격 원두(dark)" 상품의 평균 무게는 120g 보다 크다
print(stats.ttest_1samp(df['무게'], 120, alternative='greater'))
alternative는 크다가 들어가서 greater
🟢결과
TtestResult(statistic=2.153709967150663, pvalue=0.01985493948894289, df=29)
또한 p-value값이 0.05보다 작기때문에 대립가설 채택됩니다.
# 대립가설: 합격 원두(dark)" 상품의 평균 무게는 120g 보다 작다
print(stats.ttest_1samp(df['무게'], 120, alternative='less'))
alternative는 작다가 들어가서 less
🟢결과
TtestResult(statistic=2.153709967150663, pvalue=0.9801450605110571, df=29)
여기서는 pvalue값이 유의수준인 0.05보다 크기때문에 귀무가설을 채택하게 됩니다.
여기서 궁금했던건
pavalue값은 왜 중요한지 알겠고 df자유도도 몇개인지 알 수 있다고 생각하는데
statistic은 왜 필요한거지? 라는 생각이 들었습니다.
이것은 표본평균보다 큰지 작은지를 알아보는 것으로 대립가설(120)을 적은것보다 큰지 작은지를
알 수 있습니다.
좀 더 자세히 공부하자면 (+)양수는 기준값보다 크고 (-)음수는 기준값보다 작다 라는 의미로 볼 수 있어요.
그럼 위에있는건 2.15(양수)니까 표본평균이 120(대립)보다 크다는것을 의미합니다.
'자격증 > [빅분기] 빅데이터분석기사' 카테고리의 다른 글
[작업형3] 대응표본검정 + 심화 (9) | 2024.11.06 |
---|---|
[작업형3] 단일표본검정 심화 (0) | 2024.11.05 |
[작업형3] 가설검정 (0) | 2024.10.28 |
[작업형2] 'tuple' object is not callable (0) | 2024.10.13 |
[작업형2] 데이터로드 & EDA (1) | 2024.10.12 |