Ch10. 가설검정 ( Statistical hypothesis testing )

표본을 분석하여 모집단의 특성을 규명하는 통계적 추론(statistical inference)의 방법으로는 가설검정과 앞 장에서 설명한 추정(estimation)이 있다.
추정은 표본으로부터 계산한 통계량을 사용하여 모수의 특성을 규명하는 것으로서, 이미 9장에서 다루었다. 가설검정은 모집단에 대해 어떤 가설을 설정하고 그 모집단으로부터 추출된 표본을 분석함으로써 가설의 타당성 여부를 결정하는 것이다.

  • 가설검정의 개념
  • 가설검정의 기본용어
  • 가설검정의 오류
  • 가설검정의 순서

1. 가설검정의 개념

  • 통계적 가설검정
    • 표본에서 얻은 사실을 근거로 하여, 모집단에 대한 가설이 맞는지 틀리는지 통계적으로 검정하는 분석 방법
    • 가설의 참 / 거짓을 결정짓는 것은 확신(가능성)의 차이

(인쇄물 참고)

2. 가설검정의 기본용어

귀무가설과 대립가설

  • 귀무가설 ( $H_{0}$ : null hypothesis )
    • 직접 검정대상이 되는 가설
  • 대립가설 ( $H_{a}$ or $H_{1}$ : alternative hypothesis )
    • 귀무가설이 기각될 때 받아들여지는 가설

예제) 다음 중 귀무가설로 바람직한 가설은 ?

$H_{0}$ : 전국 모의고사 평균이 80점이다 $\mu=80$
$H_{0}$ : 전국 모의고사 평균이 80점이 아니다 $\mu \ne 80$

tip)

실제로 검정할 수 없거나 검정하기에 곤란한 가설을 귀무가설로 설정하는 것은 바랍직하지 못하다
일반적으로 등식으로 표시된 가설을 귀무가설로 설정하는 것이 바람직하다

유의수준과 임계값

  • 표본에서 계산된 통계량이 가설로 설정된 모집단의 성격과 현저한(significant) 차이가 있는 경우에는 모집단에 대해 설정한 귀무가설을 기각하게 된다
  • 이때 명확히 밝혀두어야 할 두가지가 있는데, 첫째는 현저하게 차이가 난다는 것이 무엇을 의미하는지, 둘째는 모집단에 대해 설정한 가설을 채택 또는 기각하는 임계값이 어떤 점이 되어야 하는지이다

  • 유의수준 ( significance level )
    • 오류를 감수할 확률 ( 때문에 오류를 범했을 때 손실이 얼만만큼 발생하느냐가 큰 고려요인 )
    • 유의수준을 얼마로 할 것인가에 대해서는 연구의 성격, 연구자의 주관 등이 개입되게 되므로 어느 연구에나 적용될 수 있는 보편타당한 기준은 없다
    • 보통 연구에서는 $\alpha$수준을 $0.01, 0.05, 0.10$ 등으로 정하는 경우가 많다
  • 임계값 ( critical value )
    • 주어진 유의수준에서 귀무가설의 채택과 기각에 관련된 의사결졍을 할 때, 그 기준이 되는 값
    • 이 임계값을 중심으로 귀무가설의 기각영역(rejection area)과 채택영역(acceptance area)이 결정된다

양측검정과 단측검정

<img src="https://saylordotorg.github.io/text_introductory-statistics/section_12/72f0cd42fda04cdfb0341bcfe11601c1.jpg", width=800>

  • 양측검정 ( two-tailed test )
    • $H_{0}: \mu = \mu_{0}$
    • 표본 통계량이 $\mu$ 보다 현저히 크거나 작으면 기각
    • 기각 영역은 확률분포의 양측에 있게 되므로, 유의수준 $\alpha$도 양쪽 극단으로 갈려 한쪽의 면적이 $\alpha / 2$가 된다
  • 단측검정 ( one-tailed test )
    • $H_{0}: \mu \ge \mu_{0} \quad or \quad H_{0}: \mu \le \mu_{0}$
    • $H_{0}: \mu \ge \mu_{0}$의 경우, 표본 통계량이 $\mu_{0}$보다 현저히 작으면 기각
    • 기각 영역은 확률분포의 한쪽 극단에만 존재

3. 가설검정의 오류

  • $\alpha-오류$
    • 제1종오류 ( type I error )
    • 실제로는 귀무가설이 옳은데도 검정 결과 귀무가설을 기각하는 오류
  • $\beta-오류$
    • 제2종오류 ( type II error )
    • 실제로는 귀무가설이 틀렸는데도 검정 결과 귀무가설이 옳은 것으로 받아들이는 오류

<img src="http://images.grasshopper.com/type1type2error.fw_.png", width=550> <img src="http://allpsych.com/wp-content/uploads/2014/08/type1and2error.gif", width=450>

$\alpha-오류$ 와 $\beta-오류$ 의 관계

  • $1-\alpha$와 $1-\beta$ 를 둘다 크게 할 수록 옳은 결정을 할 가능성이 높아지므로 BEST!!
  • BUT!!, 임계값(critical value)를 어떻게 설정하는가에 따라서 $\alpha$와 $\beta$는 Trade off 관계
  • 따라서, $1-\alpha$와 $1-\beta$를 동시에 크게 하는 것은 불가능

현실적으로

  • 따라서 가설의 채택여부가 실제로 미치는 영향을 감안하여,
  • 더 중요하다고 판단되는 가설채택에 따른 오류의 확률을 미리 지정된 값 이하로 주는 검정방법을 찾는게 현실적

연구자의 관심대상이 되는 오류는 ?

  • $\alpha-오류$, 이 때문에 제1종오류라 부르는 것
  • WHY??, 일반적으로 $\alpha-오류$가 $\beta-오류$에 비해 훨씬 더 심각한 손실이나 비용을 발생시키기 때문
    • 그러나 이 또한 case by case 이다. 상황에 따라 리스크는 다름 !! -> 뒤에서 예제를 통해 설명
  • 따라서 중요한 $\alpha-오류$를 미리 1% 또는 5% 정도의 매우 작은 값으로 제한시킬 필요가 있는데, 이는 곧 앞에서 배운 유의수준과 동일한 개념

따라서 가장 현실적이면서 좋은 통계적 검정법이란 ?

  • 주어진 유의수준($\alpha$)을 만족하면서 제2종오류($\beta$)의 가능성을 최소로 하는 것이다.
    • 연구자의 입장에서 보면 귀무가설이 맞을 때 받아들이는 것은, 새로운 연구결과를 얻지 못하게 되는 것이므로(무의미한 것이므로)
    • 귀무가설이 거부되어야 할 때 거부되는 옳은 결정, 즉 $1-\beta$가 커지도록 하는 것이 바람직
  • 통계학에서는 $1-\beta$를 통계적 검정력 ( statistical power ) 이라 부른다

검정오류의 예제

들어가기 앞서 - 귀무가설( null hypothesis )을 선언하는 방법
The test requires an unambiguous statement of a null hypothesis, which usually corresponds to a default "state of nature", for example "this person is healthy", "this accused is not guilty" or "this product is not broken".
( 검정에 있어서 귀무가설은 명백하여야 한다. 예를 들어 "이 사람은 건강하다", "이 사람은 무죄다", "이 제품은 정상이다.(부서지지 않았다)" 와 같이 자연적으로 0인 상태(default 상태) 로 선언해야 한다. )

예제 ( 1 )

$H_{0}$ : A라는 사람은 무죄다.
$H_{1}$ : A라는 사람은 유죄다.

실제 $H_{0}$이 참인 경우 실제 $H_{0}$이 거짓인 경우
$H_{0}$ 기각 $\alpha$
A가 무죄인데 유죄라 잘못 판단
( high risk )
$1-\beta$
A가 유죄인데 유죄라고 옳게 판단
( 연구성과있음 )
$H_{0}$ 채택 $1-\alpha$
A가 무죄인데 무죄라고 옳게 판단
( 연구성과없음 )
$\beta$
A가 유죄인데 무죄라 판단
( row risk )
  • 이 경우 $\alpha-오류$로 인해 발생되는 위험이 critical 함
  • 따라서 유의수준 $\alpha$ 를 0.01 정도로 하여(신뢰구간 99%) $\alpha-오류$ 를 줄인다. ( 최대한 자비롭게 판결을 내린다. )
  • 이렇게 될 경우, $1-\beta$ 는 자연스레 낮아지게 되어 진짜 범죄자를 잡을 확률 또한 낮아지게 된다.

예제 ( 2 )

$H_{0}$ : 이 비행기는 결함이 없다.
$H_{1}$ : 이 비행기는 결함이 있다.

실제 $H_{0}$이 참인 경우 실제 $H_{0}$이 거짓인 경우
$H_{0}$ 기각 $\alpha$
비행기에 결함이 없는데 있다고 잘못 판단
( row risk )
$1-\beta$
비행기에 결함이 있는데 있다고 옳게 판단
( 연구성과있음 )
$H_{0}$ 채택 $1-\alpha$
비행기에 결함이 없는데 없다고 옳게 판단
( 연구성과없음 )
$\beta$
비행기에 결함이 있는데 없다고 판단
( high risk )
  • 이 경우 $\beta-오류$로 인해 발생되는 위험이 critical 함
  • 따라서 유의수준 $\alpha$ 를 0.4 정도로 하여(신뢰구간 60%) $\beta-오류$ 를 줄인다. ( 최대한 깐깐하게 결함 체크를 한다. )
  • 이렇게 될 경우, $1-\beta$ 는 자연스레 높아지게 되어 진짜 결함이 있는 비행기를 찾을 확률 또한 높아지게 된다.

4. 가설검정의 순서 및 예

  1. 귀무가설($H_{0}$) 과 대립가설($H_{a}$) 의 설정
  2. 유의수준($\alpha$) 의 결정
  3. 유의수준을 충족시키는 임계값의 결정
  4. 통계량의 계산과 임계값과의 비교
  5. 결과의 해석












예제

국내 아이돌그룹 멤버들의 평균 키를 알기 위하여, 16명의 아이돌그룹 멤버의 키를 표본조사하였더니 평균 키가 175cm 였다. 국내 아이돌그룹 전체의 평균 키에 대한 표준편차가 5cm 라고 하면, 국내 아이돌그룹 멤버의 평균 키가 180cm 이상이라고 할 수 있을까? 유의수준 $(\alpha)$ 을 5%로 하여 검정하라.

$$ \begin{align} ①&\quad H_{0} : \mu \ge 180cm \\ &\quad H_{a} : \mu < 180cm \\ ②&\quad \alpha = 0.05 ( 5\% ) \\ ③&\quad 채택영역 : Z \le -1.64 \\ &\quad 기각영역 : Z < 1.64 \\ ④&\quad 175cm에 대응하는 Z 값\\ &\quad Z = \frac{\bar{X}-\mu_{\bar{X}}}{\sigma_{\bar{X}}} = \frac{175-180}{5/\sqrt{16}} = \frac{-5}{1.25} = -4 \\ &\quad Z = -4 는 -1.64보다 작아서 기각영역에 속하므로 H_{0}를 기각한다. \\ ⑤& \quad 위의 결과로부터 국내 아이돌그룹 멤버들의 평균 키가 180cm 이상이라고 할 수 없다. \end{align} $$

In [1]:
import numpy as np
import scipy.stats as sp
import matplotlib.pylab as plt
from matplotlib.patches import Polygon

mu1 = 180; mu2 = 0; mu3 = 180; std1 = 5; std2 = 1; std3 = 1.25

rv1 = sp.norm(mu1, std1); rv2 = sp.norm(mu2, std2); rv3 = sp.norm(mu3, std3)

xx1 = np.linspace(mu1-4*std1, mu1+4*std1, 100)
xx2 = np.linspace(mu2-4*std2, mu2+4*std2, 100)
xx3 = np.linspace(mu3-16*std3, mu3+16*std3, 100)

# figure
fig = plt.figure(figsize=(7.5, 5))

# ax1
ax1 = fig.add_subplot(311)
plt.plot(xx1, rv1.pdf(xx1), 'r', linewidth=2)
plt.text(188, 0.06, r"Population($X$)", fontsize=18)
plt.text(188, 0.048, r"$\sigma = 5cm$", fontsize=15)
plt.yticks([])


# ax2
ax2 = fig.add_subplot(312)
plt.plot(xx2, rv2.pdf(xx2), 'r', linewidth=2)

ix2 = np.linspace(mu2-4*std2, mu2-1.62*std2)
iy2 = rv2.pdf(ix2)
verts2 = [(mu2-4*std2, 0)] + list(zip(ix2, iy2)) + [(mu2-1.62*std2, 0)]
poly2 = Polygon(verts2, facecolor='#1E90FF', edgecolor='0.5')
ax2.add_patch(poly2)

plt.text(2, 0.25, r"Z-dist($Z$)", fontsize=18)
plt.text(2, 0.20, r"$\sigma_{Z} = 1cm$", fontsize=15)
plt.yticks([])


# ax3
ax3 = fig.add_subplot(313)
plt.plot(xx3, rv3.pdf(xx3), 'r', linewidth=2)

ix3 = np.linspace(mu3-4*std3, mu3-1.62*std3)
iy3 = rv3.pdf(ix3)
verts3 = [(mu3-4*std3, 0)] + list(zip(ix3, iy3)) + [(mu3-1.62*std3, 0)]
poly3 = Polygon(verts3, facecolor='#1E90FF', edgecolor='0.5')
ax3.add_patch(poly3)

plt.text(190, 0.25, r"Sample($\bar{X}$)", fontsize=18)
plt.text(190, 0.20, r"$\sigma_{\bar{X}} = 1.25cm$", fontsize=15)
plt.yticks([])


plt.show()