★scipy.stats.t(자유도).ppf()★t-분포★기초통계학-[Chapter06 - 연속확률분포-07]
2022. 12. 23. 11:11
728x90
반응형
1. T-분포(Chi-square Distribution)
==> T-분포는 모분산이 알려지지 않은 정규모집단의 모평균에 대한 추론
==>서로 독립인 표준정규화확률변수 Z와 자유도 n인 카이제곱 확률변수 V에 대하여 정의
==> T ~ t(n)으로 나타낸다.
==>분포 곡선은 t=0에서 최대값을 갖고 , 대칭 ==> 평균, 중위수 , 최빈값이 동일
==> 표준정규분포와 같이 종 모양
X = np.arange(-5,5 , .1)
fig = plt.figure(figsize=(15,8))
dof_2 = []
for dof in np.arange(1 , 10 , 3)+1:
ax = sns.lineplot(x = X , y=scipy.stats.t(dof).pdf(X) )
dof_2.append(dof)
ax2 = sns.lineplot(x=X , y=scipy.stats.norm.pdf(X) , color = 'red')
b = ['t-(n={})'.format(i) for i in dof_2]
b.append('N(0,1)')
plt.legend(b , fontsize = 15)
==> scipy.stats.t.pdf()활용!!!
==> t-분포의 꼬리 부분이 표준정규분포보다 약간 두텁다.
==>자유도 n이 증가하면 t-분포는 표준정규분포에 근접
EX-01) 자유도 10인 T-분포에서 중심확률이 0.9인 두 임계점 t_L , t_R
==> 꼬리확률 5%
X = np.arange(-5,5 , .1)
fig = plt.figure(figsize=(15,8))
dof_2 = [10]
ax = sns.lineplot(x = X , y=scipy.stats.t(dof_2).pdf(X) )
t_r = scipy.stats.t(dof_2).ppf(0.95)
print(t_r)
t_l = scipy.stats.t(dof_2).ppf(0.05)
print(t_l)
ax.fill_between(X, scipy.stats.t(dof_2).pdf(X) , 0 , where = (X<=t_r) & (X>=t_l) , facecolor = 'skyblue') # x값 , y값 , 0 , X조건 인곳 , 색깔
ax.vlines(x = t_r ,ymin=0 , ymax= scipy.stats.t(dof_2).pdf(t_r) , colors = 'black')
ax.vlines(x = t_l ,ymin=0 , ymax= scipy.stats.t(dof_2).pdf(t_l) , colors = 'black')
plt.annotate('' , xy=(0, .17), xytext=(1.7 , .17) , arrowprops = dict(facecolor = 'black'))
ax.text(1.71 , .17, r'$P(T>t_{-0.05})$' + f'= {0.90}',fontsize=15)
ax.text(t_l + 0.25 , 0.02 , r'$t_l$' + f'= {t_l}' , fontsize = 13 )
ax.text(t_r - 1 , 0.02 , r'$t_r$' + f'= {t_r}' , fontsize = 13)
b = ['t-(n={})'.format(i) for i in dof_2]
plt.legend(b , fontsize = 15)
T_l = -1.812
T_r = 1.812
EX-02) 자유도 4인 t-분포
1>P(T> t_0.025) = 0.025를 만족하는 임계값 t_0.025
P(T<= t_0.025) = 1 - 0.025
X = np.arange(-5,5 , .01)
fig = plt.figure(figsize=(15,8))
dof_2 = [4]
ax = sns.lineplot(x = X , y=scipy.stats.t(dof_2).pdf(X) )
t_r = scipy.stats.t(dof_2).ppf(1- 0.025)
print(t_r)
ax.fill_between(X, scipy.stats.t(dof_2).pdf(X) , 0 , where = (X>=t_r) , facecolor = 'skyblue') # x값 , y값 , 0 , X조건 인곳 , 색깔
ax.vlines(x = t_r ,ymin=0 , ymax= scipy.stats.t(dof_2).pdf(t_r) , colors = 'black')
plt.annotate('' , xy=(3.5, .007), xytext=(2.5 , .16) , arrowprops = dict(facecolor = 'black'))
ax.text(1.71 , .17, r'$P(T>t_{0.025})$' + f'= {0.025}',fontsize=15)
ax.text(t_r - 1 , 0.02 , r'$t_r$' + f'= {t_r}' , fontsize = 13)
b = ['t-(n={})'.format(i) for i in dof_2]
plt.legend(b , fontsize = 15)
t_0.025 = 2.776
2>P(|T|< t_0) = 0.99를 만족하는 임계값 t_0
꼬리확률 = 0.005
X = np.arange(-5,5 , .01)
fig = plt.figure(figsize=(15,8))
dof_2 = [4]
ax = sns.lineplot(x = X , y=scipy.stats.t(dof_2).pdf(X) )
t_r = scipy.stats.t(dof_2).ppf(0.995)
print(t_r)
t_l = scipy.stats.t(dof_2).ppf(0.005)
print(t_l)
ax.fill_between(X, scipy.stats.t(dof_2).pdf(X) , 0 , where = (X>=t_r) | (X<=t_l) , facecolor = 'skyblue') # x값 , y값 , 0 , X조건 인곳 , 색깔
ax.vlines(x = t_r ,ymin=0 , ymax= scipy.stats.t(dof_2).pdf(t_r) , colors = 'black')
ax.vlines(x = t_l ,ymin=0 , ymax= scipy.stats.t(dof_2).pdf(t_l) , colors = 'black')
plt.annotate('' , xy=(4.5, .007), xytext=(3.5 , .16) , arrowprops = dict(facecolor = 'black'))
ax.text(1.71 , .17, r'$P(T>t_{0})$' + f'= {0.005}',fontsize=15)
ax.text(t_l + 0.25 , 0.02 , r'$t_l$' + f'= {t_l}' , fontsize = 13 )
ax.text(t_r + 0.21 , 0.02 , r'$t_r$' + f'= {t_r}' , fontsize = 13)
b = ['t-(n={})'.format(i) for i in dof_2]
plt.legend(b , fontsize = 15)
t_0 = 4.604
출처 : [쉽게 배우는 생활속의 통계학] [북스힐 , 이재원]
※혼자 공부 정리용
728x90
반응형