본문 바로가기
Data Tech/Statistics(통계)

통계적 가설검정과 예시

by SuperDev 2024. 7. 20.

1. 통계적 가설검정

통계적 가설검정은 표본분포의 성질을 이용하여 모집단 특성에 대한 가설의 진위를 가리는 것 입니다.

주장(대립가설, H1)과 반대되는 가설(귀무가설, H0)을 사실로 가정하여 검정이 이루어지는데, 귀무가설(H0)이 아니라는 증거를 얼마나 충분히 제시하느냐에 따라 대립가설(H1)의 채택 여부를 결정할 수 있습니다.

 

2. 가설검정에서의 오류

오류의 원인은 근본적으로 표본오차에 있습니다. 따라서 표본의 결과를 이용하는 모든 통계적 추론은 추정을 포함하여 가설검정도 표본오차는 언제나 발생합니다. 즉 귀무가설이 맞는데, 대립가설로 채택하는 경우의 수도 있는 것이죠.

상황 검정 결과 판정
귀무가설(H0)이 사실이며, H0를 기각하지 않음 바른 결정 (1 - α)
H0를 기각함 제 1종 오류 (α)
대립가설(H1)이 사실이며, H0을 기각하지 않음 제 2종 오류 (β)
H0을 기각함 바른 결정 (1 - β)

 

 

3. 가설검정의 순서

 

1)  주장하려는 내용에 따라 귀무가설과 대립가설을 세웁니다.

2)  제 1종 오류인 유의수준을 정합니다. (대체로 0.05를 사용합니다.)

3)  표본의 결과를 가지고 채택영역과 기각영역을 표시합니다.

4)  검정 통계량을 계산하여 표본의 결과가 귀무가설을 기각할 충분한 근거가 있는지 검정합니다.

 

4. 가설검정 방법

 

1) 고전적 가설검정

  • 유의수준을 어떻게 정하느냐에 따라 가설의 기각영역이 결정됩니다.
  • 그러므로 유의수준의 크기를 어떻게 설정하느냐에 따라 가설검정의 결과가 달라질 수 있습니다.

2) p값을 이용한 가설검정

  • 표본의 결과를 검정에 반영하는 방법으로 p값은 표본의 검정 과정에서 밝혀진 유의수준이라고 볼 수 있습니다.
  • α는 1종 오류를 범할 확률이므로 p값이 α보다 작다는 의미는 제 1종 오류를 범할 확률이 α보다 작다는 뜻 입니다.
검정 결과 (단측검정) 해석
p값 ≤ α이면, 귀무가설을 기각 대립가설을 새로운 사실로 채택
p값 > α이면, 귀무가설을 기각하지 않음 귀무가설을 사실로 유지
귀무가설을 받아들이지 않음

 

검정 결과 (양측검정) 해석
p값 α/2 이면, 귀무가설을 기각 대립가설을 새로운 사실로 채택
p값 > α/2 이면, 귀무가설을 기각하지 않음 귀무가설을 사실로 유지
귀무가설을 받아들이지 않음

 

 

 

5. 가설검정 예시 (단측검정)

1)  귀무가설과 대립가설 세우기

  • 경찰청은 코로나 거리두기 규제로 음주운전 적발 사례가 과거보다 줄어들었다고 발표하였습니다.
    • 귀무가설 : 거리두기 규제 후, 음주운전 적발 사례의 수는 과거와 동일합니다.
    • 대립가설 : 거리두기 규제 후, 음주운전 적발 사례의 수 과거보다 줄어들었습니다.

2)  가설검정을 위한 t-검정 실행

  • t-검정은 scipy.stats 라이브러리의 ttest_ind 함수를 사용하여 두 집단의 평균을 비교합니다.
  • 매개변수인 alternative='less'after_covidbefore_covid 보다 작다라는 것을 설정합니다.
  • 결과값으로 t-통계량과 p-값이 출력되며, p-값은 제 1종 오류를 범할 확률을 나타냅니다.
  • 유의수준(α)과 비교하여 p-값이 더 작다면 귀무가설을 기각하고 대립가설을 채택합니다.
import numpy as np
import scipy.stats as stats

# 데이터 준비
before_covid = np.array([30, 28, 35, 32, 29, 31, 33, 34, 30, 29])  # 코로나 이전 음주운전 적발 사례
after_covid = np.array([20, 18, 22, 21, 19, 15, 17, 20, 18, 16])    # 코로나 이후 음주운전 적발 사례

# 평균과 표준편차 출력
print("코로나 이전 평균:", np.mean(before_covid))
print("코로나 이후 평균:", np.mean(after_covid))

# t-검정 수행
t_statistic, p_value = stats.ttest_ind(after_covid, before_covid, alternative='less')

# 결과 출력
print("t-통계량:", t_statistic)
print("p-값:", p_value)

# 유의수준 설정 (예: 0.05)
alpha = 0.05

# 가설 검정 결과
if p_value < alpha:
    print("귀무가설을 기각합니다. 코로나 거리두기 이후 음주운전 적발 사례가 줄어들었다고 할 수 있습니다.")
else:
    print("귀무가설을 기각할 수 없습니다.")
  • 유의수준 0.05는 통계적 검정의 표준 관행이자 일반적으로 통용되는 수치로 많은 연구와 실험에서 수용 가능한 범위로 간주되고 있습니다. 연구의 특성이나 중요도에 따라서 다른 유의수준을 설정할 수도 있습니다.
  • 참고로 alternative에서 사용할 수 있는 매개변수의 값은 아래와 같습니다.
    • 'less' : 첫 번째 그룹의 평균이 두 번째 그룹의 평균보다 크거나 같다는 가정 (단측검정)
    • 'greater' : 첫 번째 그룹의 평균이 두 번째 그룹의 평균보다 작거나 같다는 가정 (단측검정)
    • 'two-sided' : 양측 검정으로, 두 그룹 간의 평균이 서로 다른지를 테스트 (양측검정)

 

6. 다시한번 p-값에 대하여

  • 가설검정 시, 대립가설이 옳다고 추론할 수 있는 충분한 통계적 증거가 존재하는가? 에 대한 답이 필요합니다.
  • 그러므로 대립가설을 지지하는 통계적 증거의 양에 대한 척도가 필요로 하고 그 역활을 p-값이 하게 됩니다.
  • 그리고 이 p-값을 학계에서 수용 가능한 범위로 인정하는 유의수준 0.05과 비교해 결론을 내리는 것입니다.

 

감사합니다!

728x90