Data Analyst KIM

[빅데이터 분석기사 실기-작업형3] 유형 별 예제 본문

일상/자격증

[빅데이터 분석기사 실기-작업형3] 유형 별 예제

김두연 2023. 6. 14. 23:30
반응형

본 글은 모두 캐글을 참고하여 실습한 내용을 토대로 작성을 했다.

 

Big Data Certification KR

빅데이터 분석기사 실기 (Python, R tutorial code)

www.kaggle.com

목차

  • 1. 단일표본 T검정
  • 2. 독립표본 T검정
  • 3. 대응표본 T검정
  • 4. 일원배치법
  • 5. 정규성 검정(Shapiro-Wilks)

1. 단일표본 T검정

<문제>
다음은 22명의 학생들이 국어시험에서 받은 점수이다. 학생들의 평균이 75보다 크다고 할 수 있는가?
  • 귀무가설(H0): 모평균은 mu와 같다. (μ = mu), 학생들의 평균은 75이다
  • 대립가설(H1): 모평균은 mu보다 크다. (μ > mu), 학생들의 평균은 75보다 크다

가정:

  • 모집단은 정규분포를 따른다.
  • 표본의 크기가 충분히 크다.

검정통계량, p-value, 검정결과를 출력하시오

 

scores = [75, 80, 68, 72, 77, 82, 81, 79, 70, 74, 76, 78, 81, 73, 81, 78, 75, 72, 74, 79, 78, 79]
from scipy.stats import ttest_1samp

mu = 75
alpha = 0.05

t_statistic , p_value = ttest_1samp(scores,mu,alternative="greater")

print("t_statistic:",t_statistic)
print("p_value:",p_value)

if p_value > alpha :
    print("귀무가설을 기각할 수 없다. 학생들의 평균은 75이다")
else :
    print("귀무가설을 기각한다. 따라서 학생들의 평균은 75보다 크다")
t-statistic: 1.765879233231226
p-value: 0.04597614747709146
귀무가설을 기각합니다. 모평균은 75보다 큽니다.

2. 독립표본 T검정

<문제>
어떤 특정 약물을 복용한 사람들의 평균 체온이 복용하지 않은 사람들의 평균 체온과 유의미하게 다른지 검정해보려고 합니다.

가정:

  • 약물을 복용한 그룹과 복용하지 않은 그룹의 체온 데이터가 각각 주어져 있다고 가정합니다.
  • 각 그룹의 체온은 정규분포를 따른다고 가정합니다.
group1 = [36.8, 36.7, 37.1, 36.9, 37.2, 36.8, 36.9, 37.1, 36.7, 37.1]
group2 = [36.5, 36.6, 36.3, 36.6, 36.9, 36.7, 36.7, 36.8, 36.5, 36.7]
from scipy.stats import ttest_ind

t_statistic, p_value = ttest_ind(group1,group2)

print("검정통계량:", t_statistic)
print("p-value:", p_value)

alpha = 0.05 

if p_value > alpha :
    print("귀무가설을 기각하지 못한다. 약물을 복용한 그룹과 복용하지 않은 그룹의 평균 체온은 유의미한 차이가 없다.")
else :
    print("귀무가설을 기각한다. 약물을 복용한 그룹과 복용하지 않은 그룹의 평균 체온은 유의미한 차이가 있다.")
검정통계량: 3.7964208654863336
p-value: 0.001321891476703691
귀무가설을 기각한다. 
약물을 복용한 그룹과 복용하지 않은 그룹의 평균 체온은 유의미한 차이가 있다.

3. 대응(쌍체)표본 T검정

<문제>
주어진 데이터는 고혈압 환자 치료 전후의 혈압이다. 해당 치료가 효과가 있는지 대응(쌍체)표본 t-검정을 진행하시오
  • 귀무가설(H0):  >= 0
  • 대립가설(H1):  < 0
  •  = (치료 후 혈압 - 치료 전 혈압)의 평균
  • 유의수준: 0.05
  1. 의 표본평균은?(소수 둘째자리까지 반올림)
  2. 검정통계량 값은?(소수 넷째자리까지 반올림)
  3. p-값은?(소수 넷째자리까지 반올림)
  4. 가설검정의 결과는? (유의수준 5%)
import pandas as pd
df = pd.read_csv("/kaggle/input/bigdatacertificationkr/high_blood_pressure.csv")
print(df)
	Id	sex	age	bp_pre	bp_post
0	p001	Male	33	149	129
1	p002	Male	39	168	168
2	p003	Male	70	176	155
3	p004	Female	41	169	178
4	p005	Male	48	160	126
...	...	...	...	...	...
115	p116	Male	70	173	129
116	p117	Male	75	153	157
117	p118	Female	79	156	143
118	p119	Female	40	182	172
119	p120	Female	41	142	168

 

df['diff'] = df["bp_post"]-df["bp_pre"]
print(round(df['diff'].mean(),2))  # 1번
from scipy.stats import ttest_rel

t_statistic , p_value = ttest_rel(df["bp_post"],df["bp_pre"],alternative="less")

print("검정통계량:", round(t_statistic,4))  # 문제 2번
print("p-value:", round(p_value,4))       # 문제 3번

alpha = 0.05 

if p_value > alpha :                      # 문제 4번
    print("귀무가설을 기각하지 못한다. 치료는 혈압을 낮추는데 효과가 없다")
else : 
    print("귀무가설을 기각한다. 치료는 혈압을 낮추는데 효과가 있다.")
검정통계량: -3.0002
p-value: 0.0016
귀무가설을 기각한다. 치료는 혈압을 낮추는데 효과가 있다.

4. 일원배치법

<문제>
세 가지 다른 교육 방법(A, B, C)을 사용하여 수험생들의 시험 성적을 개선시키는 효과를 평가하고자 한다. 30명의 학생들을 무작위로 세 그룹으로 배정하여 교육을 실시하였고, 시험을 보고 성적을 측정하였습니다. 다음은 각 그룹의 학생들의 성적 데이터입니다.
  • 귀무가설(H0): 세 그룹(A, B, C) 간의 평균 성적 차이가 없다.
  • 대립가설(H1 또는 Ha): 세 그룹(A, B, C) 간의 평균 성적 차이가 있다.

일원배치법을 수행하여 그룹 간의 평균 성적 차이가 있는지 검정하세요.

  1. f값 (소수 둘째자리)
  2. p값 (소수 여섯째자리)
  3. 검정결과 출력
# 각 그룹의 데이터
groupA = [85, 92, 78, 88, 83, 90, 76, 84, 92, 87]
groupB = [79, 69, 84, 78, 79, 83, 79, 81, 86, 88]
groupC = [75, 68, 74, 65, 77, 72, 70, 73, 78, 75]
from scipy.stats import f_oneway

f_value, p_value = f_oneway(groupA, groupB, groupC)
print("F-value : ",round(f_value,2))       # 1번 문제
print("p-value : ",round(p_value,6))       # 2번 문제
print("p-value : ",format(p_value,'.6f'))  # 2번 문제

if p_value > 0.05 :                        # 3번 문제
    print("귀무가설을 기각하지 못한다. 세 그룹 간의 평균 성적 차이가 없다.")
else :
    print("귀무가설을 기각한다. 세 그룹 간의 평균 성적 차이가 있다.")
F-value :  16.88
p-value :  1.8e-05
p-value :  0.000018
귀무가설을 기각한다. 세 그룹 간의 평균 성적 차이가 있다.

5. 정규성 검정 Shapiro-Wilks

<문제>
12명의 수험생이 빅데이터 분석기사 시험에서 받은 점수이다. Shapiro-Wilk 검정을 사용하여 데이터가 정규 분포를 따르는지 검증하시오
  • 귀무 가설(H0): 데이터는 정규 분포를 따른다.
  • 대립 가설(H1): 데이터는 정규 분포를 따르지 않는다.

Shapiro-Wilk 검정 통계량, p-value, 검증결과를 출력하시오

data = [75, 83, 81, 92, 68, 77, 78, 80, 85, 95, 79, 89]
from scipy.stats import shapiro

statistic, p_value = shapiro(data)
print("Shapiro-Wilk 검정통계량 : ",statistic)
print("p-value : ", p_value)

if p_value > 0.05 :
    print("귀무가설을 기각하지 못한다. 데이터는 정규 분포를 따른다.")
else : 
    print("귀무가설을 기각한다.. 데이터는 정규 분포를 따르지 않는다")

 

반응형