zenn.skin 무료버전 배포중!
자세히보기

DataScience

[Python] 통계량을 이용해 t 검정, z 검정(t-test, z-test)

koosco! 2022. 10. 2. 06:40

scipy.stats에서 제공하는 ttest_ind를 사용하면 t검정을 수행할 수 있습니다.

하지만 ttest_ind는 입력값으로 array_like를 받기 때문에 원본 데이터값이 있을 때만 사용할 수 있습니다.

데이터가 없고 데이터에 대한 통계량만 있는 경우 t검정과 z검정을 수행하는 방법에 대해 정리해보겠습니다.

 

1. t검정(t-test)

파라미터 설명
x_bar 표본평균
float
mu 검저하고자 하는 평균값
float
s 표본표준편차
float
n 표본크기
int
alpha 신뢰수준
float
default=0.05
two_sided 양측검정 여부
bool
defalut=True

t검정을 하기 위해서는 먼저 검정통계량인 t0를 구해야 합니다.

t_value = (x_bar - mu) * sqrt(n) / s

검정통계량값과 t분포표를 이용해 가설검정을 할 수도 있는데 여기서는 누적분포표와 p-value를 이용해 가설검정을 해보겠습니다.

scipy.stats.t.sf를 사용하면 t분포의 생존함수(1 - 누적함수)를 구할 수 있습니다.(즉, 오른쪽 꼬리 영역을 구할 수 있습니다)

이를 이용해 t검정을 하는 함수를 만들어보겠습니다.

from scipy.stats import t
from typing import Tuple
from math import sqrt

def t_test(x_bar: float, mu: float, s: float,
            n: int, alpha: float=0.05, 
            two_sided: bool=True) -> Tuple[float, float, str]:
    t_value = (x_bar - mu) * sqrt(n) / s
    if two_sided:
        p_value = t.sf(abs(t_value), n - 1) * 2
    else:
        p_value = t.sf(abs(t_value), n - 1)
    
   return (t_value, p_value, "H0 채택" if p_value > alpha else "H0 기각")

 

양측검정의 경우에는 p-value가 한 쪽 꼬리의 2배만큼이므로 P-value를 2배 곱해줍니다.

반면 단측검정의 경우 검정통계량 값의 절대값을 사용하기 때문에 오른쪽 꼬리와 왼쪽 꼬리를 구분하지 않고 풀었습니다.

 

2. z검정(z-test)

파라미터 설명
x_bar 표본평균
float
mu 검정하고자 하는 평균
float
sigma 모표준편차
float
n 표본크기
float
alpha 신뢰수준
float
default=0.05
two_sided 양측검정여부
bool
default=True

z검정도 t검정과 거의 유사하게 진행됩니다. 여기서는 모표준편차를 알고 있기 때문에 표본표준편차가 아닌 모표준편차를 이용해 검정통계량을 구합니다. 또 정규분포의 생존함수(1 - 누적함수)를 사용해 p-value를 구할 수 있습니다.

from scipy.stats import norm
from typing import Tuple
from math import sqrt

def z_test(x_bar: float, mu: float, sigma: float,
            n: int, alpha: float=0.05,
            two_sided: bool=True) -> Tuple[float, float, str]:
    z_value = (x_bar - mu) * sqrt(n) / sigma
    if two_sided:
        p_value = norm.sf(abs(z_value)) * 2
    else:
        p_value = norm.sf(abs(z_value))
    
    return (z_value, p_value, "H0 채택" if alpha < p_value else "H0 기각")

 

3. 예제

1) t검정

 

2) z검정

여기서는 모집단의 표준편차를 알고 있기 때문에 t검정이 아닌 z검정을 사용해 가설검정을 할 수 있다.

t검정과 z검정에 대해서 간단히 알아보았습니다.

'DataScience'의 다른글

  • 현재글 [Python] 통계량을 이용해 t 검정, z 검정(t-test, z-test)

관련글