[Python] 빅데이터분석기사 - 유형 3

egy·2023년 6월 13일

빅데이터분석기사

목록 보기
1/1

1. 단일표본 T검정

다음은 22명의 학생들이 국어시험에서 받은 점수이다. 학생들의 평균이 75보다 크다고 할 수 있는가?

귀무가설(H0) : μ = 75
대립가설(H1) : μ > 75

  • 가정 : 모집단은 정규분포를 따른다. 표본의 크기가 충분히 크다.
  • 검정통계량, p-value, 검정결과를 출력하시오
from scipy.stats import ttest_1samp

# 데이터
scores = [75, 80, 68, 72, 77, 82, 81, 79, 70, 74, 76, 78, 81, 73, 81, 78, 75, 72, 74, 79, 78, 79]

# 모평균 가설검정
mu = 75  # 검정할 모평균
alpha = 0.05  # 유의수준

# t-test를 사용하여 가설 검정 - alternative에는 큰값에는 greater, 작은값에는 less사용
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검정

주어진 데이터는 고혈압 환자 치료 전후의 혈압이다. 해당 치료가 효과가 있는지 대응(쌍체)표본 t-검정을 진행하시오.

귀무가설(H0) : μ>= 0
대립가설(H1) : μ< 0

  • μ = (치료 후 혈압 - 치료 전 혈압)의 평균
  • 가정 : 모집단은 정규분포를 따른다. 표본의 크기가 충분히 크다.
  • 검정통계량, p-value, 검정결과를 출력하시오.
import pandas as pd
from scipy import stats

data = pd.read_csv("/kaggle/input/bigdatacertificationkr/high_blood_pressure.csv")

data['diff'] = data['bp_post'] - data['bp_pre']

#1
print(round(data['diff'].mean(),2))

#2 alternative에는 큰값에는 greater, 작은값에는 less사용
st, pv = stats.ttest_rel(data['bp_post'], data['bp_pre'], alternative="less")
print(round(st,4))

#3
print(round(pv,4))

#4 귀무가설 기각, 대립가설 채택
if pv < 0.05:
    print("귀무가설을 기각합니다. ")
else:
    print("귀무가설을 채택합니다.")

3. 독립표본 T검정

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

귀무가설(H0) : 약물을 복용한 그룹과 복용하지 않은 그룹의 평균 체온은 유의미한 차이가 없다.
대립가설(H1) : 약물을 복용한 그룹과 복용하지 않은 그룹의 평균 체온은 유의미한 차이가 있다.

  • 검정통계량, p-value, 검정결과를 출력하시오.
from scipy import stats

# 데이터 
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]

# 가설검정
t_statistic, p_value = stats.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
귀무가설을 기각합니다. 약물을 복용한 그룹과 복용하지 않은 그룹의 평균 체온은 유의미한 차이가 있습니다.

4. 일원배치법

세 가지 다른 교육 방법(A, B, C)을 사용하여 수험생들의 시험 성적을 개선시키는 효과를 평가하고자 한다. 30명의 학생들을 무작위로 세 그룹으로 배정하여 교육을 실시하였고, 시험을 보고 성적을 측정하였다.

귀무가설(H0) : 세 그룹(A, B, C) 간의 평균 성적 차이가 없다
대립가설(H1) : 세 그룹(A, B, C) 간의 평균 성적 차이가 있다.

  • F값(소수 둘째자리), p-value(소수 여섯째자리), 검정결과를 출력하시오.
import scipy.stats as stats

# 데이터
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]

# 일원배치법 수행
f_value, p_value = stats.f_oneway(groupA, groupB, groupC)

# F-value
print(round(f_value,2))

# p-value
print(format(p_value,'.6f'))

#검정결과
alpha = 0.05  # 유의수준 설정

if p_value < alpha:
    print("귀무가설을 기각합니다.세 그룹(A, B, C) 간의 평균 성적간의 유의미한 차이가 있다.")
else:
    print("귀무가설을 채택합니다. 세 그룹(A, B, C) 간의 평균 성적 차이가 없다.")

----------------------------------------------------------------------------------------------------------

16.88
0.000018
귀무가설을 기각합니다.세 그룹(A, B, C) 간의 평균 성적간의 유의미한 차이가 있다.

5. 정규성 검정 - Shapiro-Wilk 검정

12명의 수험생이 빅데이터 분석기사 시험에서 받은 점수이다. Shapiro-Wilk 검정을 사용하여 데이터가 정규 분포를 따르는지 검증하시오.

귀무가설(H0) : 데이터는 정규 분포를 따른다
대립가설(H1) : 데이터는 정규 분포를 따르지 않는다.

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

data = [75, 83, 81, 92, 68, 77, 78, 80, 85, 95, 79, 89]

# Shapiro-Wilk 검정 수행
statistic, p_value = stats.shapiro(data)

# 결과 출력
print("Shapiro-Wilk 검정 통계량:", statistic)
print("p-value:", p_value)

# 유의 수준 0.05에서의 검정 결과 확인
alpha = 0.05
if p_value > alpha:
    print("귀무 가설을 기각할 수 없다. 데이터는 정규 분포를 따른다")
else:
    print("귀무 가설을 기각한다. 데이터는 정규 분포를 따르지 않는다")

----------------------------------------------------------------------------------------------------------

Shapiro-Wilk 검정 통계량: 0.9768089652061462
p-value: 0.9676492810249329
귀무 가설을 기각할 수 없다. 데이터는 정규 분포를 따른다

6. 회귀모형(상관계수)

iris에서 Sepal Length와 Sepal Width의 상관계수를 계산하고 소수 둘째자리까지 출력하시오.

import pandas as pd
from sklearn.datasets import load_iris

# iris 데이터셋 로드
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)

# Sepal Length와 Sepal Width의 상관계수 계산
correlation = df.corr()
result = correlation.loc['sepal length (cm)', 'sepal width (cm)']
print(round(result,2))

---------------------------------------------------------------------------------------------
-0.12

0개의 댓글