OkBublewrap

[통계 101 x 데이터 분석] 가설검증 본문

Statistics

[통계 101 x 데이터 분석] 가설검증

옥뽁뽁 2025. 1. 22. 15:53

또 하나의 추론통계 방법

가설검정이란 , 분석자가 세운 것을 검증하기 위한 방법입니다.

가설검정에서는 P값(p-value)이라는 수치를 계산하여 가설을 지지하는지 여부를 판단합니다.

 

 

가설 검증하기

확증적 자료분석

가설을 세움 → 실험, 관찰로 가설과 관련한 데이터 수집 → 세운 가설을 검정

 

탐색적 자료분석

가설이 없음 → 데이터를 다양하게 탐색하여 해석 → 데이터의 경향 파악, 가설 후보 물색

 

어떠한 조치를 취한 집단을 실험군, 실험군과 비교, 대조를 위해 마련한 집단을 대조군이라 부른다.

⚠️ 여기서 말한 가설은 모집단을 대상으로 한 가설이지, 표본을 대상으로 한 가설은 아니라는 점

 

 

 

귀무가설과 대립가설

  • 귀무가설 신약에 효과가 없다($ \mu_{a} = \mu_{b} $ )
  • 대립가설 신약에 효과가 있다. ($ \mu_{a} \neq  \mu_{b} $ )

 

가설검정에서 상정한 가설, "신약에 효과가 있다"를 확인하고자 그 부정 명제인 귀무가설을 세우고, 이 귀무가설이 틀렸음을 주장하는 것으로  대립가설을 지지한다는 흐름을 취합니다.

 

모집단과 표본의 관계 다시 살펴보기

표본오차 때문에 귀무가설 $ \mu_{a} = \mu_{b} $ 이 옳다고 해도, $ \overline{x}_{A} \neq \overline{x}_{B} $ 가 된다는 것을 알 수 있습니다.

표본평균의 차이 $ \overline{x}_{A} - \overline{x}_{B} $ 가,
귀무가설이 옳을 때도 생기는 단순한 데이터 퍼짐인지, 아니면 정말로 약의 효과인지를 구별할 필요가 있습니다.

 

 

귀무가설 시나리오

  1. 일단 귀무가설이 옳다고 가정
  2. 모집단 A와 모집단 B에서 각각 표본을 추출하겠습니다.
  3. $ \overline{x}_{A} - \overline{x}_{B} $ 이 작업을 여러 번 반복했다고 치고, 표본평균의 차이를 히스토그램 생성

 

p 값

현실의 값은 귀무가설이 옳은 가상 세계에서는 어떤 빈도로 발생할까요?

정의

P값이란,

귀무가설이 옳다고 가정했을 때

관찰한 값 (예 : 평균값의 차이) 이상으로

극단적인 값이 나올 확률을 일컫는다.

 

p값과 유의 수준 $ a $를 이용한 가설 판정

p값이 작다는 것은 귀무가설이 옳은 세계에서는 현실 데이터가 잘 나타나지 않다는 뜻이므로, p값은 귀무가설과 현실 데이터 간의 괴리 정도를 평가하고 있는 셈입니다.

 

일반적으로 p값이 0.05 이하인 경우, 귀무가설 하에서 현실 데이터는 나타나기 어렵다고 생각하고, 귀무가설을 버리고, 대립가설을 선택 이때 평균값의 차이는 통계적으로 유의미한 차이가 있다고 표현을 합니다.

 

p값이 0.05를 상회하는 경우 귀무가설을 기각할 수 없으며, 통계적으로 유의미한 차이는 발견하지 못했다.

 

 

기각역과 p값

좌우 2.5%씩의 영역을 유의 수준 5%인 기각역이라 합니다.

실제 값이 이 귀무가설이 옳을 때의 t분포 내 어디에 위치하는지 구한 뒤,

그 이상의 극단적인 값이 나올 확률을 구한 것이 p값입니다.

 

 

오차막대

 

  • 평균값의 확률을 나타내고 싶다면, 평균값 $ \pm $ 표준오차를 사용합니다.
    앞서 평균값의 표준오차는 비편향표준편차를 표본크기 n의 제곱근으로 나눈 값 $ s\sqrt{n} $ 
  • 신뢰구간을 나타내고 싶다면, 평균값을 중심으로 95% 신뢰구간을 그립니다.
  • 데이터 퍼짐을 나타내고 싶다면 평균값 $ \pm $ 표준편차를 사용합니다. 이 경우 평균값의 확률이 아니라, 단순히 데이터가 어느 정도 퍼져 있는 시각화하고 있을 뿐이라는 점에 주의

 

예시

import seaborn as sns
import matplotlib.pyplot as plt

# Iris 데이터셋 로드
df = sns.load_dataset('iris')

# 서브플롯 생성 (1행 3열)
fig, axes = plt.subplots(1, 3, figsize=(18, 6), sharey=True)

# 표준편차 오류 막대 그래프
axes[0].set_title('표준편차 (Standard Deviation)')
sns.barplot(data=df, x='species', y='sepal_length', errorbar="sd", color='g', ax=axes[0])

# 표준오차 오류 막대 그래프
axes[1].set_title('표준오차 (Standard Error)')
sns.barplot(data=df, x='species', y='sepal_length', errorbar="se", ax=axes[1])

# 95% 신뢰구간 오류 막대 그래프
axes[2].set_title('95% 신뢰구간 (Confidence Interval)')
sns.barplot(data=df, x='species', y='sepal_length', errorbar="ci", color='r', ax=axes[2])

# 그래프 간격 조정 및 표시
plt.tight_layout()
plt.show()

 

  1. 표준편차 (errorbar = 'SD') : 각 그룹의 데이터 값들이 평균에서 얼마나 퍼져 있는지를 시각화
  2. 표준오차 (errorbar = 'SE) : 각 그룹의 평균값이 얼마나 신뢰할 수 있는지 나타냄, 표본 크기에 따라 SE는 SD보다 작아질 수 있음
  3. 95% 신뢰구간 평균값이 포함될 확률이 95%인 범위 시각화
오차막대를 그릴 때 범례로 무엇을 표시하고 있는지 기재

 

 

제 1종 오류와 제 2종 오류

  귀무가설 옳음 귀무가설 틀림
귀무가설 채택 OK 제 2종 오류 확률 $ \beta $
귀무가설 기각 제 1종 오류 확률 $ \alpha $ OK

 

제 1종 오류

실제로는 아무런 차이가 없음에도 차이가 있다고 판단해 버리는 잘못

유의 수준 $ \alpha $의 값을 미리 정해 둠으로써, 제1종 오류가 일어날 확률을 통제할 수 있는 것

 

제 2종 오류

정말로 차이가 있는데도 차이가 있다고 말할 수 없어, 귀무가설을 기각하지 않는 판단을 내려 버리는 것을 말합니다.

제 2종 오류가 일어날 확률은 $ \beta $로 나타내는데, 제 2종 오류가 일어나지 않는 확률, 즉 정말로 차이가 있다고 올바르게 판단할 확률을 검정력 $ 1-\beta $라고 한다.

 

일반적으로 검정력을 80%로 설정한다. $\alpha$와 달리 직접 통제할 수 없습니다.

 

$ \alpha $와 $\beta $는 상충 관계

표본 크기 n에 따라 달라집니다. 

표본크기 n이 커지고 $ \alpha $를 고정하면 $\beta$가 줄어든다.

즉, 표본크기가 커지면 검정력이 커진다.

 

효과 크기를 달리 했을 때의 $ \alpha $ 와 $\beta $

효과크기는 일반적으로 얼마나 큰 효과가 있는지를 나타내는 지표입니다.

e.g) 2개 집단의 평균값인 경우, 단순히 평균값의 절대적인 차이에만 주목하는 것이 아니라,

원래 갖고 있는 모집단의 데이터 퍼짐에 대해 상대적으로 평가한 값 $ d=(\mu_{A} - \mu_{B}) / \sigma $를 이용

 

가설 검정에서는 모집단을 대상으로 검출하고 싶은 효과크기를 미리 설정하는 것이 바람직하다.

또한, 이 네 가지 값 중 셋을 결정하면 나머지 하나는 자동으로 정해진다는 성질이 있다.

효과 크기 d가 클수록 $\beta$는 작아진다