본문 바로가기

Upstage AI Lab 2기

Upstage AI Lab 2기 [Day026] 온라인 강의 - 기초통계 (3) 실습

Upstage AI Lab 2기

2024년 1월 17일 (수) Day_026

 

Day_026 온라인 강의 : 기초통계

 

Project1 - 실제 데이터로 가설 설정, 검정 수행, 결과 해석하기

 

CH04_05. t-test

data 또는 sample size, 비교 그룹의 성질 등에 따라 선택하는 검정이 달라짐

독립표본 t-test : 서로 독립인 두 집단 간 비교

대응표본 t-test : 동일 그룹에 대한 처리 전후 비

 

독립표본 t-test의 순서

  • 표본의 크기 10~30 : 정규성 검정
    • 정규성 O : 등분산 검정
    • 정규성 X : 순위합 검정
  • 표본의 크기 30 이상 : 정규성 검정
    • 등분산 O : 등분산 가정 독립표본 t-test
    • 등분산 X : 이분산 가정 독립표본 t-test

 

등분산성(Homoskedasticity) : 분산이 특정 패턴이 없이 일정해야 한다.

 

np.random.normal(평균, 분산, n)

-> in array format

pd.DataFrame(house_a.tolist())

array -> list -> DataFrame

tmp1 = pd.concat([pd.DataFrame(['A']*40), pd.DataFrame(house_a.tolist())], axis=1)
tmp2 = pd.concat([pd.DataFrame(['B']*40), pd.DataFrame(house_b.tolist())], axis=1)

df = pd.concat([tmp1, tmp2], axis=0)

 

### 등분산성 검정

  • 귀무가설 : 두 비교집단의 분산이 같다.
  • 대립가설 : 두 비교집단의 분산이 다르다.

stats.levene()

stats.levene(np.array(df[df['grp'] == 'A']['value']), np.array(df[df['grp'] == 'B']['value']))
# LeveneResult(statistic=0.1482823966555207, pvalue=0.7012302503912982)

 

즉, 등분산이다.

∴ 등분산 가정 독립표본 t-test진행

 

stats.ttest_ind(np.array(df[df['grp'] == 'A']['value'])
              , np.array(df[df['grp'] == 'B']['value'])
              , equal_var=True)

 

 


CH04_07. ANOVA

Null Hypothesis : 집단(target) 간 sepal_width 차이가 없다.

Alt Hypothesis : 집단(target) 간 sepal_width 차이가 있다.

 

정규성 검정

Null Hypothesis : 정규분포를 따른다.

Alt Hypothesis : 정규분포를 따르지 않는다.

 

shapiro()

from scipy.stats import shapiro

shapiro()
# ShapiroResult(statistic=  , pvalue=  )

 

Perform the Shapiro-Wilk test for normality.

(to see if the data follows normal distribution)

 

print(shapiro(df.sepal_width[df.target==0]))
print(shapiro(df.sepal_width[df.target==1]))
print(shapiro(df.sepal_width[df.target==2]))

# ShapiroResult(statistic=0.971718966960907, pvalue=0.2715126574039459)
# ShapiroResult(statistic=0.9741329550743103, pvalue=0.3379843533039093)
# ShapiroResult(statistic=0.9673907160758972, pvalue=0.18089871108531952)

결론 : sepal_width of target 0, 1, 2 follow normal distribution

 

 

등분산성 검정

Null Hypothesis : 등분산성을 만족한다.

Alt Hypothesis : 등분산성을 만족하지 않는다.

 

levene()

from scipy.stats import levene

Perform Levene test for equal variances.

 

print(levene(df.sepal_width[df.target==0], df.sepal_width[df.target==1], df.sepal_width[df.target==2]))

# LeveneResult(statistic=0.5902115655853319, pvalue=0.5555178984739075)

결론 : 등분산성을 만족한다.

 

 

One-way ANOVA (일원분산분석)

stats.f_oneway()

import scipy.stats as stats

stats.f_oneway()

 

stats.f_oneway(df.sepal_width[df.target==0], df.sepal_width[df.target==1], df.sepal_width[df.target==2])

# F_onewayResult(statistic=49.160040089612075, pvalue=4.492017133309115e-17)

 

결론 : 집단 간 sepal_width 차이가 있다.

 

 

Post-hoc Analysis

가설검정을 여러단계 거칠수록 FWER(Family Wise Error Rate - 1종 오류 발생 가능성?) 증가

pairwise_tukeyhsd()

 


CH04_09. Chi-squared

  • 독립성 검정
  • 적합성 검정
  • 동일성 검정

chi-squared = sum of ((측정값 - 기댓값)^2 / 기댓값)

stats.chi2_contingency()

 

# Chi2ContingencyResult(statistic=54.17534722222223, pvalue=1.833731033899248e-13, dof=1, expected_freq=array([[240.,  60.],
#       [360.,  90.]]))

 

chi-squared value, p-value, degree of freedom, E(given as array)