Post

[사전학습] 6.1 가설의 의의와 검정

가설의 의의와 검정

가설 검정이란?

모집단에 어떤 가설을 설정한 뒤, 통계 기법을 이용한 가설의 채택 여부를 확률적으로 판정하는 통계적 추론의 방법

귀무가설대립가설
비교하는 값과 차이가 없다비교하는 값과 차이가 있다
기존 이론 가설연구자 목적, 주장
$H_0$ : Null Hypothesis$H_1$ or $H_\alpha$ : Alternative Hypothesis

가설 검정 통계적 오류

제1종 오류제2종 오류가 존재

 귀무가설 : 진실대립가설 : 진실
귀무가설 선택옳은 결정
신뢰수준(1-$\alpha$)
제2종 오류
$\beta$
대립가설 선택제1종 오류
유의수준($\alpha$)
옳은 결정
검정력(1-$\beta$)
  • 제 1종 오류 ($\alpha$) : $H_0$이 이지만, $H_1$으로 잘못 선택 -> “유의수준”이라고 불림
  • 제 2종 오류 ($\beta$) : $H_1$이 이지만, $H_0$으로 잘못 선택

가설 검정 방법

목적에 맞는 설정 필요

  • 양측 검정
    검정 통계량의 분포에서 기각영역이 양쪽에 나타나는 형태의 가설검정
    • 귀무가설 : $H_0$ : $\mu = \mu_0$
    • 대립가설 : $H_1$ : $\mu \neq \mu_0$
  • 단측 검정
    검정 통계량의 분포에서 기각 영역이 한쪽에 나타나는 형태의 가설검정
    • 귀무가설 : $H_0$ : $\mu = \mu_0$
    • 대립가설 : $H_1$ : $\mu < \mu_0$ 또는 $H_1$ : $\mu > \mu_0$

가설 기반 의사 결정 방법

검정 통계량유의 확률을 토대로 가설 채택 여부 결정

  • 검정 통계량 > 기각역 -> 귀무가설 기각
  • 검정 통계량 < 기각역 -> 귀무가설 채택
  • 유의 확률 < 유의수준 -> 귀무가설 기각
  • 유의 확률 > 유의수준 -> 귀무가설 채택

단일표본 t 검정

가장 기본적인 가설 검정 중 하나
모집단의 평균값기준값차이를 비교하는 분석법

독립표본 t 검정

두 집단 간 평균의 차이를 비교하는 분석법
[기본 가정]

  • 독립성 : 독립변수의 그룹군은 서로 독립
  • 정규성 : 집단별 종속변수는 정규분포를 만족
  • 등분산성 : 집단별 종속 변수 분포의 분산은 각 군마다 동일

기타 통계 분석 기법..

  • ANOVA, 카이제곱, 상관분석 등

가설 검정 순서

  1. 가설 수립
  2. 판단 기준 수립
  3. 통계 기법 도출
  4. 분석 통계량 산출
  5. 판단 기준
  6. 결과 도출

실습

sample data 필요

1
2
3
4
5
6
7
import numpy as np
import pandas as pd

from scipy import stats

import matplotlib.pyplot as plt
import seaborn as sns
1
2
df = pd.read_csv('./data/interior_effect.csv')
display(df.head())
1
2
# 데이터 셔플
df = df.sample(frac=1, random_state=0).reset_index(drop=True)
1
df.shape

boxplot

1
2
p = sns.boxplot(x=df['interior'], y=df['preference'])
p.set_title('Box Plot of Preference of Interior')

Assumption 1 : 독립성

독립변수 그룹은 서로 독립적

두개의 집단을 구성하는 구성원이나 구성들이 서로 관계가 없음을 의미. 즉, 아무런 관계가 없어야함

Assumption 2 : 정규성 확인

Shapiro-Wilk 검정을 통해 정규성을 확인합니다.
귀무 가설과 대립 가설은 아래와 같습니다.

  • $H_0$ : 각 독립 표본이 정규성을 만족한다.
  • $H_1$ : 각 독립 표본이 정규성을 만족하지 않는다.
1
df.loc[ df['interior'] == 'classic', 'interior'].value_counts()
1
2
3
4
classic_pref = df.loc[ df['interior'] == 'classic', 'preference' ]

modern_pref = df.loc[ df['interior'] == 'modern', 'preference' ]
print(modern_pref)
1
modern_pref.size
1
2
3
# 정규성을 충족하는지 확인
print('classic 인테리어 선호도 정규성 shapiro test : ', stats.shapiro(classic_pref))
print('modern 인테리어 선호도 정규성 shapiro test : ', stats.shapiro(modern_pref))

Assumption 3 : 등분산성 확인 (두 집단이 동일한 분산을 가지는가?)

F 검정으로 확인

  • $H_0$ : 두 독립 표본의 분산은 동일하다.
  • $H_1$ : 두 독립 표본의 분산은 동일하지 않다.
1
2
3
4
5
6
7
8
f = np.var(classic_pref, ddof=1) / np.var(modern_pref, ddof=1)
classic_size = classic_pref.size - 1
modern_size = modern_pref.size - 1

p_value = 1 - stats.f.cdf(f, classic_size, modern_size)

print('F statistics : {}'.format(np.round(f, 4)))
print('p value : {:.3f}'.format(p_value, 4))
1
2
3
4
5
6
7
8
def f_test(g1, g2):
    f = np.var(g1, ddof=1) / np.var(g2, ddof=1)
    num = g1.size - 1
    denom = g2.size - 1

    p_value = 1 - stats.f.cdf(f, num, denom)

    return f, p_value

독립표본 t 검정

1
2
print(np.mean(classic_pref))
print(np.mean(modern_pref))
1
result = stats.ttest_ind(classic_pref, modern_pref, equal_var=False)
1
2
3
4
print('classic 인테리어 평균 선호도 : ', np.mean(classic_pref))
print('modern 인테리어 평균 선호도 : ', np.round(np.mean(modern_pref), 4))
print('독립표본 t 검정통계량 : ', result[0].astype(str)[:6])
print('p - value : ', result[1].astype(str)[:5])
1
This post is licensed under CC BY 4.0 by the author.

[사전학습] 5.4~5 동적 시각화

[사전학습] 6.2 상관분석