본문 바로가기
Programming/Python

빅데이터분석기사 실기 3유형 대비 정리

by IN.0 2023. 6. 20.
728x90
반응형

H0 - 귀무가설 (아무런 변화나 효과가 없다는 가설)

H1 - 대립가설 (원하는 변화가 나타난다는 가설)

유의수준 - 귀무가설을 기각하는 기준이 되는 확률값 (일반적으로 0.05 또는 0.01)

-> 유의확률(p-value)이 유의수준보다 작을 경우에 귀무가설 기각. 아니면 귀무가설 채택

 

t검정 - 단순평균(1집단, 독립)

import pandas as pd
from scipy import stats

# 단순 표본 평균
simple_mean = data[['target']].mean().round(2)
print(simple_mean[0])

# 대립가설 = target 평균이 160보다 작다
# 검정통계량, p-value
tstat = stats.ttest_1samp(data[['target']], popmean = 160, alternative = 'less')
print("t-value", tstat.statistic.round(4))
print("p-value", tstat.pvalue.round(4))

# 가설 검정 (유의수준 0.05)
alpha = 0.05

# p-value 활용
if tstat.pvalue < alpha:
    print("귀무가설 기각")
else:
    print("귀무가설 채택")

# critical value 활용
cv_simple_mean = stats.t.ppf(q = alpha, df = len(data)-1)
if tstat.statistic < cv_simple_mean:
    print("귀무가설 기각")
else:
    print("귀무가설 채택")

 

t검정 - 단순평균비교(2집단, 독립)

import scipy
from scipy import stats

# 표본평균
mean_before = data[['bp_before']].mean()
mean_after = data[['bp_after']].mean()
mean_diff = mean_after[0] - mean_before[0]
print(mean_diff.round(2))

# 검정통계량, p-value
tstat_mean_diff = stats.ttest_ind(data[['bp_after']],data[['bp_before']], equal_var = True, alternative='less')
print(tstat_mean_diff)
print("t-value : ", tstat_mean_diff.statistic.round(4))
print("p-value : ", tstat_mean_diff.pvalue.round(4))

# 가설검정
alpha = 0.05

# p-value 활용
if tstat_mean_diff.pvalue < alpha:
    print("귀무가설 기각")
else:
    print("귀무가설 채택")

# critical value 활용
cv_mean_diff = stats.t.ppf(q = alpha, df = 2*len(data) - 2)
if tstat_mean_diff.statistic < cv_mean_diff:
	print("귀무가설 기각")
else:
	print("귀무가설 채택")

 

t검정 - 단순평균비교(2집단, 연관) -> 응시환경에 있는 혈압 예제가 여기에 해당

from scipy import stats

# 검정통계량, p-value
tstat_mean_diff = stats.ttest_rel(data[['bp_after']], data[['bp_before']], alternative='less')
print(tstat_mean_diff)
print("t-value : ", tstat_mean_diff.statistic.round(4))
print("p-value : ", tstat_mean_diff.pvalue.round(4))

# 가설검정
alpha = 0.05

# p-value 활용
if tstat_mean_diff.pvalue < alpha:
    print("귀무가설 기각")
else:
    print("귀무가설 채택")

# critical value 활용
cv_mean_diff = stats.t.ppf(q = alpha, df = 2*len(data) - 2)
if tstat_mean_diff.statistic < cv_mean_diff:
	print("귀무가설 기각")
else:
	print("귀무가설 채택")

 

ANOVA 검정 (f검정) - 독립 평균 비교에 사용하며, 2개 이상의 집단에 이용

from scipy import stats

# 검정통계량, p-value
anova_test = scipy.stats.f_oneway(data[['bp_after']],data[['bp_before']])
print(anova_test)
print("f-value : ", anova_test.statistic.round(4))
print("p-value : ", anova_test.pvalue.round(4))

# 가설검정
alpha = 0.05

# p-value 활용
if anova_test.pvalue < alpha:
    print("귀무가설 기각")
else:
    print("귀무가설 채택")

# critical value 활용 (커야 기각)
anova_cv = scipy.stats.f.ppf(q = 1-alpha, dfn = 1, dfd = len(data) - 2)
if anova_test.statistic > anova_cv:
	print("귀무가설 기각")
else:
	print("귀무가설 채택")

 

카이제곱검정 (2집단, 범주형, 독립)

from scipy import stats

# contingency table
cont_table = pd.crosstab(data["sex"], data["agegrp"]) # sex, agegrp 범주로 데이터 갯수 테이블 생성
print(cont_table)

# chi^2 test
chi2_test = stats.chi2_contingency(cont_table)
print(chi2_test)
print("test statistic : ", chi2_test[0])
print("pvalue : ", chi2_test[1])

# test
alpha = 0.05
if chi2_test[1] < alpha :
	print("귀무가설 기각 (두 대상이 의존적이다)")
else:
	print("귀무가설 채택 (두 대상이 독립적이다)")

 

윌콕슨 부호검정 (두 집단의 분포에 대한 유사도 검정)

# non-parametric paired t-test

from scipy import stats

wilcoxon = stats.wilcoxon(data['bp_after'], data['bp_before'], alternative='less')
print(wilcoxon)
print("statistic : ", wilcoxon[0].round(4))
print("pvalue : ", wilcoxon[1].round(4))

if wilcoxon.pvalue < 0.05 :
	print("귀무가설 기각 (분포가 유사하지 않다)")
else:
	print("귀무가설 채택 (분포가 유사하다)")

 

 

참고자료 - https://www.miricanvas.com/v/123wjjj

728x90
반응형

댓글