★ 시작에 앞서 ★
해당 내용은 '<현대통계학-제6판>, 다산출판사, 2024' 에 나와있는 챕터별 연습문제를 교재를 응용하여 풀이하고, 수학적인 문제에 대한 답변을 파이썬으로 구현해보기 위해 작성하는 글이다.
해당 답변을 구현하는 방식은 답안지 없이 필자가 스스로 구현하는 것이므로, 정확한 (혹은 가장 효과적인) 답변이 아닐 수 있다. 이 글의 목적은 통계학 공부와 파이썬 프로그래밍 언어 공부를 동시에 하고자 함이며, 통계학을 공부하고 싶으신 분들은 해당 교재를 구매하는 것을 추천한다.
또한, 연습문제 번호 및 문제 내용은 필자가 임의대로 작성하였으며, 교재와는 다를 수 있다.
잘못된 부분이 있다면 언제든 피드백 부탁 드립니다! 감사합니다
이전 내용
챕터 11 연습문제1
Q. 어느 대학에 다니고 있는 학생들의 평균 IQ가 110이고 표준편차는 20이라고 한다. 100명의 학생을 뽑아서 IQ 검사를 하였더니 평균이 105였다. 학생들의 평균 IQ가 110이 아니라는 주장을 유의수준 0.02에서 검정하라.
# 학생들의 IQ
import scipy.stats as stats
# 주어진 데이터
pop_mean = 110
pop_std = 20
n = 100
sample_mean = 105
a = 0.02
# z-검정 통계량 계산
z_score = (sample_mean - pop_mean) / (pop_std / np.sqrt(n))
# 유의수준에 따른 임곗값 계산 (양측 검정이므로 alpha/2 사용)
c_value_low = stats.norm.ppf(a / 2) # 임곗값 (하한)
c_value_high = stats.norm.ppf(1 - a / 2) # 임곗값 (상한)
# 결과 출력
print(f'Z-통계량: {z_score:.2f}')
print(f'임곗값: {c_value_low:.2f} ~ {c_value_high:.2f}')
# 가설 검정 해석
if z_score < c_value_low or z_score > c_value_high:
print('귀무가설 기각: 평균 IQ는 110 이라고 할 수 없다')
else:
print('귀무가설 기각 불가: 평균 IQ는 110 이라고 할 수 있다.')
- 귀무가설(H₀): 학생들의 평균 IQ는 110이다. (μ = 110)
- 대립가설(H₁): 학생들의 평균 IQ는 110이 아니다. (μ ≠ 110)
▶ Z-통계량은 -2.50으로 임곗값보다 크므로, 평균 IQ는 110이라는 귀무가설을 기각한다.
챕터 11 연습문제2
Q. 작년까지는 서울시에 있는 초등학교 교사들의 평균 월수입이 약 270만 원이었다고 한다. 올해에는 그보다 높을 것이라고 생각하여 임의로 50명을 골라 평균과 표준편차를 알아보았더니 각각 276만 원, 65만 원이었다. 평균 월수입이 270만 원 이상일 것이라는 대립가설을 유의수준 0.05에서 받아들일 수 있는가?
# 서울시 교사 평균 월수입
import scipy.stats as stats
# 주어진 데이터
pop_mean = 270
n = 50
sample_mean = 276
sample_std = 65
a = 0.05
# z-검정 통계량 계산
z_score = (sample_mean - pop_mean) / (pop_std / np.sqrt(n))
# 유의수준에 따른 임곗값 계산 (양측 검정이므로 alpha/2 사용)
c_value_low = stats.norm.ppf(a / 2) # 임곗값 (하한)
c_value_high = stats.norm.ppf(1 - a / 2) # 임곗값 (상한)
# 결과 출력
print(f'Z-통계량: {z_score:.2f}')
print(f'임곗값: {c_value_low:.2f} ~ {c_value_high:.2f}')
# 가설 검정 해석
if z_score < c_value_low or z_score > c_value_high:
print('귀무가설 기각: 평균 월수입은 270만 원이상 이라고 할 수 없다')
else:
print('귀무가설 기각 불가: 평균 월수입은 270만 원이상이라고 할 수 있다.')
- 귀무가설(H₀): 서울시 교사들의 평균 월수입은 270만 원 이상 이다. (μ = 270)
- 대립가설(H₁): 서울시 교사들의 평균 월수입은 270만 원 이상이 아니다. (μ ≠ 270)
▶ Z-통계량은 2.12로 임곗값보다 크므로, 평균 월수입은 270이라는 귀무가설을 기각한다.
챕터 11 연습문제 3
Q. 휴대폰에 부착하는 액정필름을 만드는 기계가 정상적으로 작동하고 있는지를 조사하기 위해 임의로 10개의 액정필름을 뽑아 보았더니 두께의 평균이 0.053cm 였고 표준편차는 0.003cm 였다. 그런데 종전에는 액정필름 두께의 평균이 0.053cm 였고 분포의 모양은 정규분포를 이루었다고 한다. 이 기계가 정상적으로 작동하고 있는지를 유의수준 5%로 검정하라.
# 액정필름 기계
from scipy.stats import t
import scipy.stats as stats
# 주어진 데이터
mean = 0.053
n = 10
std = 0.004
a = 0.05
# 자유도
df = n - 1
# t-통계량 및 임곗값 계산
t_score = (mean - 0) / (std / (n ** 0.5)) # t-통계량 계산
c_value = stats.t.ppf(1 - a / 2, df) # 유의수준에 따른 임곗값 계산
# 결과 출력
print(f't-값: {t_score:.4f}')
print(f'임곗값 범위: {c_value:.4f}')
# 가설검정 결과
if abs(t_score) > c_value:
print("귀무가설 기각: 이 기계가 정상적으로 작동한다고 볼 수 없다")
else:
print("귀무가설 기각 불가: 이 기계가 정상적으로 작동한다고 볼 수 있다")
표본의 크기가 31 미만이므로, t-검정을 사용하여 가설검정 수행
챕터11 연습문제 4
Q. 한 포장지회사에서 만들어 낸 포장용 노끈을 10개 뽑아서 그 노끈들이 얼마의 힘까지 견디나 재어 보았더니 평균이 7,750 파은드고 표준편차가 125 파운드였다. 회사 측에서는 평균 8,000 파운드의 힘까지 견딜 수 있다고 주장한다. 모집단의 노끈이 견디는 힘의 분포가 정규분포라 가정하고 이 회사의 주장이 틀렸는지를 유의수준 0.01 수준에서 검정하라.
# 포장지 회사 노끈
import scipy.stats as stats
from scipy.stats import t
# 주어진 데이터
mean = 7750
n = 10
std = 125
a = 0.01
standard = 8000 # 기준값(8000 파운드)
# 자유도
df = n - 1
# t-통계량 및 임곗값 계산
t_score = (mean - standard) / (std / (n ** 0.5)) # t-통계량 계산
c_value = stats.t.ppf(1 - a / 2, df) # 유의수준에 따른 임곗값 계산
# 결과 출력
print(f't-통계량: {t_score:.4f}')
print(f'임곗값 범위: {c_value:.4f}')
# 가설검정 결과
if abs(t_score) > c_value:
print("귀무가설 기각: 노끈은 8,000 파운드의 힘을 버틴다고 볼 수 없다")
else:
print("귀무가설 기각 불가: 노끈은 8,000 파운드의 힘을 버틴다고 볼 수 있다")
- t-통계량 계산: 표본 평균과 기준 값(8,000)을 비교하여 t-통계량을 계산한다. (표본 평균 - 기준 값)
- 임곗값 계산: 유의수준 0.01에 따른 임곗값을 stats.t.ppf()를 사용하여 구한다.
- 결과 해석: t-통계량이 임곗값을 벗어나면 귀무가설을 기각하고, 그렇지 않으면 귀무가설을 기각하지 않는다.
챕터11 연습문제 5
Q. 페인트가 건조되는 데에는 평균 85초가 걸린다고 한다. 이 페인트를 생산하고 있는 한 회사는 페인트 건조시간을 줄이기 위해 새로운 제조공법을 개발하였다. 새로운 공법에 의해 생산된 페인트의 건조시간을 10회에 걸쳐 측정한 결과 평균이 80초, 표준편차는 5초로 나타났다. 페인트가 건조되는 시간이 정규분포를 따른다고 할 때, 과연 새로운 공법이 효과가 있는지를 유의수준 0.05에서 검정하라.
# 새로운 페인트 공법
from scipy.stats import t
import scipy.stats as stats
# 주어진 데이터
mu = 85
mean = 80
n = 10
std = 5
a = 0.05
# 자유도
df = n - 1
# t-통계량 및 임곗값 계산
t_score = (mean - mu) / (std / (n ** 0.5)) # t-통계량 계산
# 유의 수준에 따른 임곗값 계산
c_value = stats.t.ppf(1 - a / 2, df)
# 결과 출력
print(f't-통계량: {t_score:.4f}')
print(f'임곗값 범위: {c_value:.4f}')
# 가설검정 결과
if t_score > c_value:
print("귀무가설 기각: 새로운 공법이 효과가 있다고 볼 수 없다")
else:
print("귀무가설 기각 불가: 새로운 공법이 효과가 있다고 볼 수 있다")
챕터11 연습문제 6
Q. 한 시멘트회사의 기획부장은 자사제품의 시장점유율이 45% 정도나 되므로 더 이상의 공장 확충은 무의미하다고 주장한다. 반면 공장장은 시장점유율이 45% 보다 훨씬 작다고 주장하며 공장 확충을 요구하고 있다. 80개의 건조상을 조사하여 보았더니 34곳이 자사제품을 취급하고 있었다. 보통 건재상에서는 연말에 시멘트 재고가 거의 없다고 한다. 공장장의 주장이 옳은지를 5%의 유의수준에서 검정하라.
# 시멘트 공장 확충 관련
import scipy.stats as stats
# 연관 데이터
market = 0.45 # 기획부장 시장점유율
n = 80 # 표본 수
display_n = 34 # 표본 중 진열 중인 가게 수
a = 0.05 # 유의수준
# 표본 비율
p = display_n / n
# 표집분포의 표준편차
sp = ((market * ( 1- market)) / n) ** 0.5
# z_score 계산
z_score = (p - market) / sp
# 유의수준에 다른 임곗값
c_value_low = stats.norm.ppf(a / 2) # 임곗값 (하한)
c_value_high = stats.norm.ppf(1 - a / 2) # 임곗값 (상한)
# 결과 출력
print(f'표본비율(p): {p:.2f}')
print(f'표준편차(sp): {sp:.3f}')
print(f'Z-통계량: {z_score:.3f}')
print(f'임곗값 범위: {c_value_low:.2f} ~ {c_value_high:.2f}')
# 가설 검정 해석
if z_score < c_value_low or z_score > c_value_high:
print('귀무가설 기각: 시장점유율은 45%보다 작다고 할 수 없다')
else:
print('귀무가설 기각 불가: 시장점유율은 45%보다 작다고 할 수 있다')
공장장의 주장 (시장점유율이 45% 보다 작아 공장 확충 요구)이 더 맞는 것으로 확인되었다.
다음 내용
'[파이썬 Projects] > <파이썬 - 수학 | 통계학>' 카테고리의 다른 글
[파이썬+통계학] 현대통계학 연습문제 파이썬 구현(ch.11) - 1 (0) | 2024.10.21 |
---|---|
[파이썬+통계학] 현대통계학 연습문제 파이썬 구현(ch.10) (1) | 2024.10.20 |
[개발자를 위한 수학] 신경망 - 2 (5) | 2024.10.20 |
[개발자를 위한 수학] 신경망 - 1 (3) | 2024.10.20 |
[개발자를 위한 수학] 로지스틱 회귀와 분류 - 2 (0) | 2024.10.18 |