t 분포(t distribution)을 활용한 검정

2020. 8. 17. 16:06카테고리 없음

반응형

우리는 표본의 크기가 충분히 큰 경우에는 중심극한정리에 의해 표본평균의 분포가 정규분포가 됨을 이용하여 모평균 μ에 대한 추정, 검정에 Z-검정을 활용하였습니다. 

[t-분포]

t 분포를 활용한 검정방안은 표본의 크기가 충분하지 않고 모집단의 분산을 알기 어려울 때 적용하는 방안입니다.

(우리는 앞선 포스팅에서 모집단의 표준편차를 모를때 표본의 표준편차를 적용하였습니다. 다만 이것은 표본의 크기가 부족하면 값의 차이가 있기 때문에, 표본의 크기가 작을때 t 분포를 적용합니다.)

t 분포는 정규분포의 평균의 해석에 많이 활용되는 분포이며, 아래 그림과 같이 0을 중심으로 대칭이고 종모양을 하고 있습니다. 표준정규분포와 상당히 유사한 모습을 가지나, 양 꼬리부분에 상대적으로 많은 확률이 존재하여 두꺼운 꼬리를 갖는 것이 차이점입니다.

출처: http://www.ktword.co.kr/abbr_view.php?m_temp1=1134

자유도(=표본의 수 -1)가 커질 수록 표준정규분포와 모습이 점점 유사해집니다.

[t-분포의 확률변수]

정규 분포 N(μ,σ^2)를 따르는 모집단으로부터 추출된 표본은 X1, X2, ... , Xn이라 할때, 표본평균과 표본분산은 아래와 같이 정의 됩니다.

그렇다면 이 때 t-분포의 확률변수는 아래와 같이 정의됩니다.

정규분포를 표준화 시킨 Z와 상당히 유사합니다. 다만 확률변수 t는 자유도가 (n-1)인 t-분포를 따르며, 기호로는 t(n-1)로 표현합니다.

[t-분포의 구간추정]

t-분포의 구간추정도 표준정규분포를 활용할 때와 같습니다. 다만 z값을 사용하지 않고 t값을 사용하는 것이 차이점입니다.

앞서 정의한 t 통계량은 아래와 같습니다.

그렇다면 특정 유의수즌 α에 대해 아래와 같은 식을 만족하게 됩니다.

따라서 100(1-α)% 신뢰구간은 다음과 같이 정리 될 수 있습니다.

파이썬 실습을 통해 표준정규분포와 t-분포의 차이를 알아보도록하겠습니다.

from scipy.stats import norm
from scipy.stats import t
import matplotlib.pyplot as plt
import numpy as np

## Sample Simulation을 위한 모집단 분포 가정

mu = 70
std = 3
norm_ = norm(mu,std)

## Sample Simulation
sample_data=norm_.rvs(20)
sample_mean = np.mean(sample_data)
sample_std = np.std(sample_data, ddof=1)

## 표준정규분포를 통한 신뢰구간 추정(신뢰구간 90%)
mu2 = 0
std2 = 1
standard_norm = norm(mu2,std2)
z_05=standard_norm.ppf(0.95) 
L_= round(sample_mean - z_05*(sample_std/np.sqrt(30)),2)
U_= round(sample_mean + z_05*(sample_std/np.sqrt(30)),2)
print("{} < {} < {}".format(L_, mu, U_)) ## 결과: 68.37 < 70 < 70.15

## T-분포를 통한 신뢰구간 추정(신뢰구간 90%)
df = 20-1
t_ = t(df)
t_05 = t_.ppf(0.95)
L_= round(sample_mean - t_05*(sample_std/np.sqrt(30)),2)
U_= round(sample_mean + t_05*(sample_std/np.sqrt(30)),2)
print("{} < {} < {}".format(L_, mu, U_)) ## 결과: 68.32 < 70 < 70.2

## 시각화
L_z= -z_05
U_z= z_05

L_t= -t_05
U_t= t_05

x = np.linspace(-3, 3,1000)

plt.vlines(L_z, 0, standard_norm.pdf(L_z), colors="g")
plt.vlines(U_z, 0, standard_norm.pdf(U_z), colors="g")
plt.plot(x, standard_norm.pdf(x),'g-', lw=2, alpha=0.6, label='norm pdf')

plt.vlines(L_t, 0, t_.pdf(L_t), colors="r")
plt.vlines(U_t, 0, t_.pdf(U_t), colors="r")
plt.plot(x, t_.pdf(x),'r-', lw=2, alpha=0.6, label='t-distribution pdf')

plt.title("standard normal vs t-distribution")
plt.legend()
plt.show()

그림에서 보는 것과 같이 T-distribution의 구간이 조금 더 넓습니다. 표본의수가 늘어날 수록 신뢰구간의 넓이는 줄어듭니다.

반응형