본문 바로가기
PYTHON/빅데이터분석기사

[캐글-퇴근후딴짓] T3 문제풀이 (코드 저장용)

by 쿠룽지 2023. 11. 29.
728x90
반응형

<T3>

 

T3-example 예시문제

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

  • 귀무가설(H0): 𝜇 >= 0
  • 대립가설(H1): 𝜇 < 0
  • 𝜇 = (치료 후 혈압 - 치료 전 혈압)의 평균
  • 유의수준: 0.05
  1. 𝜇의 표본평균은?(소수 둘째자리까지 반올림)
  2. 검정통계량 값은?(소수 넷째자리까지 반올림)
  3. p-값은?(소수 넷째자리까지 반올림)
  4. 가설검정의 결과는? (유의수준 5%)

 

import pandas as pd
from scipy.stats import ttest_rel
df = pd.read_csv("/kaggle/input/bigdatacertificationkr/high_blood_pressure.csv")

#print(df.head())

df['diff'] = df['bp_post'] - df['bp_pre']
result1 = df['diff'].mean()
print(round(result1, 2))

statics, pvalue = ttest_rel(df['bp_post'], df['bp_pre'], alternative='less')
print(round(statics, 4))
print(round(pvalue, 4))
print('기각' if pvalue < 0.05 else '채택') 

#-6.12
#-3.0002
#0.0016
#귀무가설 기각 대립가설 채택

 

 


 

T3-ttest_1samp

 

문제: 다음은 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]

import pandas as pd
from scipy.stats import ttest_1samp

mu = 75
alpha = 0.05

statics, pvalue = ttest_1samp(scores, mu, alternative='greater')
print('statics: ', statics)
print('pvalue: ', pvalue)
print('귀무가설을 기각합니다' if pvalue < 0.05 else '귀무가설을 채택합니다')

#statics:  1.765879233231226
#pvalue:  0.04597614747709146
#귀무가설을 기각합니다

 

 

 


T3-correlation

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)

# your code
corr = df.corr()
#print(corr)

result = corr.loc['sepal length (cm)', 'sepal width (cm)']
print(round(result, 2))

#-0.12

 

 


 

 

T3-ttest_ind

 

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

가정:

  • 약물을 복용한 그룹과 복용하지 않은 그룹의 체온 데이터가 각각 주어져 있다고 가정합니다.
  • 각 그룹의 체온은 정규분포를 따른다고 가정합니다.
  • 검정통계량, pvalue, 검정결과 출력
# 데이터 수집
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]

import pandas as pd
from scipy.stats import ttest_ind

static, pvalue = ttest_ind(group1, group2, alternative="two-sided")
print(static)
print(pvalue)
print('귀무가설을 기각합니다. 약물을 복용한 그룹과 복용하지 않은 그룹의 평균 체온은 유의미한 차이가 있습니다.' 
      if pvalue<0.05 else '귀무가설을 채택합니다. 약물을 복용한 그룹과 복용하지 않은 그룹의 평균 체온은 유의미한 차이가 없습니다.')
      
      
#3.7964208654863336
#0.001321891476703691
#귀무가설을 기각합니다. 약물을 복용한 그룹과 복용하지 않은 그룹의 평균 체온은 유의미한 차이가 있습니다.

 

 


 

 

r3-anova

 

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

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

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

  1. f값 (소수 둘째자리)
  2. p값 (소수 여섯째자리)
  3. 검정결과 출력
#anova 일원분석 

# 각 그룹의 데이터
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(round(f_value, 2))
print(format(p_value, '.6f'))
print('귀무가설을 기각합니다. 세 그룹(A, B, C) 간의 평균 성적 차이가 있습니다.' 
      if p_value < 0.05 else '귀무가설을 채택합니다. 세 그룹(A, B, C) 간의 평균 성적 차이가 없습니다.')
      
#16.88
#0.000018
#귀무가설을 기각합니다. 세 그룹(A, B, C) 간의 평균 성적 차이가 있습니다.

 


 

T3-Shapiro-Wilk

 

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

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

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

 

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

import pandas as pd
from scipy.stats import shapiro

statics, pvalue = shapiro(data)
print('검정통계량: ', statics)
print('p_value: ', pvalue)
print('데이터는 정규 분포를 따르지 않는다.' if pvalue < 0.05 else '데이터는 정규 분포를 따른다.')

#검정통계량:  0.9768090844154358
#p_value:  0.9676500558853149
#데이터는 정규 분포를 따른다.

 

 


 

 

T3-ttest-anova-py

 

문제: 두 교육 방법의 효과 비교

연구자는 두 가지 다른 교육 방법이 학생들의 성적에 미치는 영향을 비교하고자 합니다. 연구자는 무작위로 선발된 20명의 학생들을 두 그룹으로 나누어 한 그룹에는 교육 방법 A를, 다른 그룹에는 교육 방법 B를 적용합니다. 교육이 끝난 후, 두 그룹의 성적을 비교하기 위해 독립 표본 t-검정과 ANOVA F-검정을 실시하려고 합니다.

다음은 두 그룹의 성적입니다: 다음의 두 가지 검정을 사용하여 두 교육 방법 간의 성적 차이가 통계적으로 유의한지를 검증하세요

  1. 독립 표본 t-검정을 실시하여 t 통계량을 구하세요.
  2. 독립 표본 t-검정을 실시하여 p-값을 구하세요.
  3. ANOVA F-검정을 실시하여 F 통계량을 구하세요.
  4. ANOVA F-검정을 실시하여 p-값을 구하세요.

 

df = pd.DataFrame({
    'A':[77, 75, 82, 80, 81, 83, 84, 76, 75, 87],
    'B':[80, 74, 77, 79, 71, 74, 78, 69, 70, 72],
})

import pandas as pd
from scipy.stats import ttest_ind
from scipy.stats import f_oneway

T_result = ttest_ind(df['A'], df['B'])
print(T_result)

F_result = f_oneway(df['A'], df['B'])
print(F_result)

#TtestResult(statistic=3.1068522301122954, pvalue=0.006087373605949963, df=18.0)
#F_onewayResult(statistic=9.652530779753763, pvalue=0.006087373605949924)

 

 

인터넷 서치해보니까 독립표본 t는 등분산하고 넣는 게 좋다고 함..

등분산 후 ttest 시 equal_var 인자에 넣는 식으로

 


 

t3-chisquare-py

 

카이제곱 적합도 검정

고등학교에서는 졸업생들이 선택하는 대학 전공 분야의 선호도가 시간이 지남에 따라 변하지 않는다고 가정합니다. 학교 측은 최근 졸업생들의 전공 선택이 과거와 같은 패턴을 따르는지 알아보기 위해 적합도 검정을 실시하기로 결정했습니다.

과거 자료에 따르면 졸업생들이 선택하는 전공의 분포는 다음과 같습니다:

인문학: 20% 사회과학: 30% 자연과학: 25% 공학: 15% 기타: 10% 올해 졸업한 학생 200명의 전공 선택 분포는 다음과 같았습니다:

인문학: 30명 사회과학: 60명 자연과학: 50명 공학: 40명 기타: 20명 이 데이터를 바탕으로, 졸업생들의 전공 선택 패턴이 과거와 유사한지를 알아보기 위해 카이제곱 적합도 검정을 실시해야 합니다. 유의 수준은 0.05로 설정합니다.

  1. 검정 통계량?
  2. p-value?
  3. 유의수준 하 귀무가설 기각 또는 채택?
 
import numpy as np
from scipy.stats import chisquare

observed = [30, 60, 50, 40, 20]
expected = sum(observed) * np.array([0.2, 0.3, 0.25, 0.15, 0.1])

statistic, pvalue = chisquare(observed, expected)
print(statistic)
print(pvalue)
print('귀무가설 기각' if pvalue < 0.05 else '귀무가설 채택')

#5.833333333333334
#0.21194558437271782
#귀무가설 채택

 

 


 
 

t3-chi2_contingency-py

 

성별과 시험합격은 독립적인가를 검정하시오!

  • 1 검정 통계량?
  • 2 p-value?
  • 3 귀무가설 기준 (기각/채택)?
  • 4 남자의 합격 기대 빈도?

 

 

import pandas as pd
from scipy.stats import chi2_contingency

df = pd.DataFrame({'남자':[100, 200], '여자':[130, 170]},
					index=['합격','불합격'])
statistic, pvalue, dof, expected = stats.chi2_contingency(df)

print(f'검정통계량 : {statistic}')
print(f'p-value : {pvalue}')
print('귀무가설 기각' if pvalue < 0.05 else '귀무가설 채택')
print(f'남자의 합격 기대 빈도 : {expected[0][0]}')

#검정통계량 : 5.929494712103407
#p-value : 0.01488951060599475
#귀무가설 기각
#남자의 합격 기대 빈도 : 115.0

 


 

t3-2-example-py

 

Pclass, Gender, sibsp, parch를 독립변수로 사용하여 로지스틱 회귀모형을 실시하였을 때, parch변수의 계수값은?

(반올림하여 소수 셋째 자리까지 계산)

 

 

eduatoz 강의 보고 다시 풀어보기

 

 

 

 

 

728x90
반응형