Programming/Python
빅데이터분석기사 실기 3유형 대비 정리
IN.0
2023. 6. 20. 23:11
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("귀무가설 채택 (분포가 유사하다)")
728x90
반응형