★ 시작에 앞서 ★
해당 내용은 '<현대통계학-제6판>, 다산출판사, 2024' 에 나와있는 챕터별 연습문제를 교재를 응용하여 풀이하고, 수학적인 문제에 대한 답변을 파이썬으로 구현해보기 위해 작성하는 글이다.
해당 답변을 구현하는 방식은 답안지 없이 필자가 스스로 구현하는 것이므로, 정확한 (혹은 가장 효과적인) 답변이 아닐 수 있다. 이 글의 목적은 통계학 공부와 파이썬 프로그래밍 언어 공부를 동시에 하고자 함이며, 통계학을 공부하고 싶으신 분들은 해당 교재를 구매하는 것을 추천한다.
또한, 연습문제 번호 및 문제 내용은 필자가 임의대로 작성하였으며, 교재와는 다를 수 있다.
잘못된 부분이 있다면 언제든 피드백 부탁 드립니다! 감사합니다
이전 내용
챕터 10 주요 개념
챕터10은 '가설검정의 기초' 에 대한 내용으로, 하단의 글 참고 요망
- 통계적 가설검정: 표본에서 얻은 사실을 근거로 하여, 모집단에 대한 가설이 맞는지 틀리는지 통계적으로 검정하는 분석방법
- 가설 검정의 오류: 실제로 거짓인 가설을 참으로 받아들이거나, 실제로 참인 가설을 거짓으로 받아들이는 것
- α -오류 (제1종 오류): 실제로 귀무가설이 옳은데도 검정 결과 귀무가설을 기각하는 오류
- 𝛽-오류 (제2종 오류): 실제로는 귀무가설이 틀렸는데도 검정 결과 귀무가설이 옳은 것으로 받아 들이는 오류
- 귀무가설: 기존에 맞다고 받아들여지고 있는 사실에 해당하는 가설 (H0)
- 대립가설: 귀무가설이 기각될 때 받아들여지는 가설로서 검정의 대상이 되는 새로운 주장에 해당하는 가설(H1)
- 임곗값: 주어진 유의수준에서 귀무가설의 채택과 기각에 관련된 의사결정을 할 때, 그 기준이 되는 점
- p-값(p-value): 어떤 통계량이 주어졌을 때, (귀무가설하에서) 귀무가설을 지지하는 통계적 증거의 양
(p-값이 유의수준보다 작다면, 귀무가설을 기닥하고 대립가설을 지지하게 된다)
- 양측 검정: 가설검정에서 기각영역이 양쪽에 있는 것
- 단측 검정: 기각영역이 어느 한쪽에만 있게 되는 경우
- 가설검정의 순서
- 귀무가설과 대립가설의 설정
- 유의수준의 설정
- 유의수준을 충족시키는 임곗값의 결정
- 통계량의 계산과 임곗값과의 비교
- 결과의 해석
챕터10 예제 1 및 파이썬 풀이
Q. 국내 남자 아이돌그룹 멤버들의 평균 키는 180cm 이상이라고 알려져 있다. 이를 확인하기 위하여, 16명의 아이돌그룹 멤버의 키를 표본 조사하였더니 평균 키가 175cm 였다. 국내 남자 아이돌그룹 전체의 평균 키에 대한 표준편차가 5cm 라고 하면, 국내 남자 아이돌그룹 멤버의 평균키가 180cm 보다 작다고 할 수 있을까? 유의수준(α)을 5%로 하여 검정하라.
# 남자 아이돌그룹 평균 키
import scipy.stats as stats
import numpy as np
# 귀무가설, 대립가설 설정
# 귀무가설 (180이다) h0 = 180 / 대립가설 (180보다 작다 )h1 < 180
mu = 180 # 모집단 평균
mean = 175 # 표본 평균
n = 16 # 표본 수
std = 5 # 표준 편차
a = 0.05 # 유의수준 5%
# z-검정 통계량 계산
z_score = (mean - mu) / (std / np.sqrt(n))
# 유의수준에 따른 임계값 계산
critical_value = stats.norm.ppf(a)
# 결과 출력
print(f"z-통계량: {z_score:.2f}")
print(f"임계값: {critical_value:.2f}")
# 가설 검정 결론
if z_score < critical_value:
print("귀무가설 기각: 남자 아이돌 그룹의 평균 키가 180cm보다 작다고 할 수 있다.")
else:
print("귀무가설을 기각할 수 없다: 남자 아이돌 그룹의 평균 키가 180cm보다 작다고 할 수 없다.")
z = -4 는 임곗값 -1.64 보다 작아서 기각영역에 속하므로, 남자 아이돌 그룹 멤버들의 평균 키가 180cm 보다 작다고 할 수 있다. (귀무가설 기각)
챕터 10 연습문제 1
Q. 어느 음식 배달 앱에서는 음식을 배달하는 데 소요되는 시간이 평균 30(분), 표준편차 5의 정규분포를 따른다고 한다. 이때 음식이 정상적으로 배달되었는지, 혹은 비정상적으로 늦게 배달되었는지 판단하는 기준을 X분으로 설정했다고 하자. 임곗값에 해당하는 Z값이 1.96이라고 할 때, 배달이 늦게 되었는지 판단하는 기준이 되는 시간이 몇 분인지 구하라.
# 배달 늦었는지 여부
import scipy.stats as stats
import numpy as np
mean = 30 # 평균
std = 5 # 표준 편차
z_value = 1.96 # 임곗값
# X값 계산
X = z_value * std + mean
# 결과 출력
print(f"배달이 늦었다고 판단하는 기준 시간: {X:.2f}분")
챕터 10 연습문제 2
Q. 어느 기업의 신입사원들과 입사 후 연차가 어느 정도 쌓인 대리급 사원들의 같은 해 명절 상여금을 비교해 본 결과, 대리급 사원들의 평균 상여금은 100만 원이다. 표준편차는 20만 원이며, 두 분포는 정규분포를 이룬다고 한다. 유의수준(α)을 5%로 제한한다면, 얼마를 기준으로 해야 대리 직급이면서도 신입사원으로 간주될 오류가 발생할 위험이 유의수준 보다 낮을까?
# 명절 상여금 구분 기준
import scipy.stats as stats
mean = 100
std = 20
a = 0.05
# 유의수준에 따른 임계값 계산
critical_value = stats.norm.ppf(a)
x = critical_value * std + mean
print(f"임계값: {critical_value:.2f}")
print(f"직급 구분 상여금 기준: {x:.1f}만 원")
이 문제는 단측 검정 문제이다. 유의수준 5%에서 팀장급 직원을 신입사원으로 잘못 분류되지 않도록 하는 보너스 기준을 찾기 위해, Z-값에 해당하는 보너스 금액을 구해야 한다.
유의수준 5%에서 신입사원으로 잘못 분류될 확률을 줄이려면, Z-값이 아래쪽 5%에 해당하는 값이어야 한다.
챕터 10 연습문제 3
Q. 위의 예에서 만약 65만 원 이하의 상여금을 받은 직원이 있을 때, 이 직원을 신입사원이라고 간주한다면, 이것이 잘못될 결정일 확률은 몇 %인가?
# 65만원 받은 직원 오판 확률
import scipy.stats as stats
mean = 100
std = 20
a = 0.05
bonus = 65
# 보너스의 Z-값 계산
z_score = (bonus - mean) / std
# 해당 Z-값에 대한 누적 확률 계산 (잘못된 분류 확률)
proba = stats.norm.cdf(z_score)
print(f"보너스가 650,000원인 직원을 신입사원으로 잘못 분류할 확률: {proba:.2f}")
보너스가 650,000원인 직원이 신입사원으로 잘못 분류될 확률을 구하려면, 해당 금액에 대한 Z-값을 구하고, 그에 대응하는 누적 확률(CDF)을 구하면 된다.
해당 확률은 4% 이므로, 만약 5% 정도의 오류확률을 감수한다고 하면, 65만 원 이하의 상여금을 받는 직원을 무조건 신입사원이라고 간주해도 발생할 오류는 4%에 불과하므로 괜찮은 결정이다.
챕터 10 연습문제 4
Q. 만약 70만 원 이하의 상여금을 받은 직원이 있을 때, 이 직원을 신입사원이라고 간주한다면, 이것이 잘못된 결정일 확률은?
# 70만원 받은 직원 오판 확률
import scipy.stats as stats
mean = 100
std = 20
a = 0.05
bonus = 70
# 보너스의 Z-값 계산
z_score = (bonus - mean) / std
# 해당 Z-값에 대한 누적 확률 계산 (잘못된 분류 확률)
proba = stats.norm.cdf(z_score)
print(f"보너스가 700,000원인 직원을 신입사원으로 잘못 분류할 확률: {proba:.3f}")
해당 확률은 6.7% 이므로, 감수할 수 있는 범위인 5%를 벗어나기 때문에, 이러한 결정을 내리면 안 된다.
다음 내용
'[파이썬 Projects] > <파이썬 - 수학 | 통계학>' 카테고리의 다른 글
[파이썬+통계학] 현대통계학 연습문제 파이썬 구현(ch.11) - 2 (3) | 2024.10.21 |
---|---|
[파이썬+통계학] 현대통계학 연습문제 파이썬 구현(ch.11) - 1 (0) | 2024.10.21 |
[개발자를 위한 수학] 신경망 - 2 (5) | 2024.10.20 |
[개발자를 위한 수학] 신경망 - 1 (3) | 2024.10.20 |
[개발자를 위한 수학] 로지스틱 회귀와 분류 - 2 (0) | 2024.10.18 |