★scipy.stats.f(자유도1 , 자유도 2).pdf()★F-분포★기초통계학-[Chapter06 - 연속확률분포-08]
2022. 12. 23. 14:19
728x90
반응형
1. F-분포(F-distribution)
==> 서로 독립인 두 모집단의 모분산이 동일한지 아닌지를 통계적으로 추론
==> 서로 독립인 두 확률변수
F ~ F(m , n)
X = np.arange(0,10, .01)
fig = plt.figure(figsize = (15,8))
dof = [[5,8] , [2,3] , [23,23] , [18,25], [11,7]]
print(dof[0][0])
for i in dof:
ax = sns.lineplot(X , scipy.stats.f(i[0] , i[1]).pdf(X))
b = ['F({},{})'.format(i,j) for i,j in dof]
plt.legend(b , fontsize= 15)
==> scipy.stats.f(자유도 1, 자유도 2)
==> 일반적으로 왼쪽으로 치우치고, 오른쪽으로 긴 꼬리를 갖는다.(양의 왜도)
EX-01) 자유도 7과 10인 F-분포에서 중심확률이 0.9인 두 임계점 f_L , f_R를 구하라
꼬리확률 = 0.1
f_0.95,7,10
f_0.05,7,10
X = np.arange(0,10, .01)
fig = plt.figure(figsize = (15,8))
dof = [[7,10]]
print(dof[0][0])
for i in dof:
ax = sns.lineplot(X , scipy.stats.f(i[0] , i[1]).pdf(X))
b = ['F({},{})'.format(i,j) for i,j in dof]
X_r = scipy.stats.f(dof[0][0], dof[0][1]).ppf(0.95)
X_l = scipy.stats.f(dof[0][0], dof[0][1]).ppf(0.05)
ax.fill_between(X, scipy.stats.f(dof[0][0],dof[0][1]).pdf(X) , where = (X>=X_r) | (X<=X_l) , facecolor = 'skyblue') # x값 , y값 , 0 , x조건 인곳 , 색깔
ax.vlines(X_r , ymin = 0 , ymax = scipy.stats.f(dof[0][0],dof[0][1]).pdf(X_r) , color = 'black')
ax.vlines(X_l , ymin = 0 , ymax = scipy.stats.f(dof[0][0],dof[0][1]).pdf(X_l) , color = 'black')
ax.annotate('' , xy=(X_l -0.02 , 0.1) , xytext=(X_l + 0.5 , 0.1) , arrowprops = dict(facecolor = 'black'))
ax.text(X_l + 0.5 , 0.1 , r'$P(F\leqq f_{0.95,7,10})$' + f'= {0.05}' , fontsize = 14)
ax.annotate('' , xy=(X_r +0.3 , 0.01) , xytext=(X_r + 0.3 , 0.2) , arrowprops = dict(facecolor = 'black'))
ax.text(X_r + 0.3 , 0.21 , r'$P(F\geqq f_{0.05,7,10})$' + f'= {0.05}' , fontsize = 14)
ax.text(X_l + 0.05 , 0.01 , r'$f_{0.95,7,10}$)' + f'= {round(scipy.stats.f(dof[0][0] , dof[0][1]).ppf(0.05) ,2)}' ,fontsize = 13)
ax.text(X_r - 1.3 , 0.01 , r'$f_{0.05,7,10}$)' + f'= {round(scipy.stats.f(dof[0][0] , dof[0][1]).ppf(0.95) , 2)}' ,fontsize = 13)
plt.legend(b , fontsize= 15)
==> 수학 표현식 geqq , leqq
==> ppf 사용!
f_L = 0.27
f_R = 3.14
EX-02) F ~ F(4,5)
X = np.arange(0,10, .01)
fig = plt.figure(figsize = (15,8))
dof = [[4,5]]
print(dof[0][0])
for i in dof:
ax = sns.lineplot(X , scipy.stats.f(i[0] , i[1]).pdf(X))
b = ['F({},{})'.format(i,j) for i,j in dof]
X_l = scipy.stats.f(dof[0][0], dof[0][1]).ppf(1-0.95)
X_r = scipy.stats.f(dof[0][0], dof[0][1]).ppf(1-0.025)
ax.fill_between(X, scipy.stats.f(dof[0][0],dof[0][1]).pdf(X) , where = (X>=X_r) | (X<=X_l) , facecolor = 'skyblue') # x값 , y값 , 0 , x조건 인곳 , 색깔
ax.vlines(X_r , ymin = 0 , ymax = scipy.stats.f(dof[0][0],dof[0][1]).pdf(X_r) , color = 'black')
ax.vlines(X_l , ymin = 0 , ymax = scipy.stats.f(dof[0][0],dof[0][1]).pdf(X_l) , color = 'black')
area = 1- scipy.stats.f(dof[0][0],dof[0][1]).cdf(X_r)
area_2 = scipy.stats.f(dof[0][0],dof[0][1]).cdf(X_l)
ax.annotate('' , xy=(X_r +2 , 0.01) , xytext=(X_r + 2 , 0.2) , arrowprops = dict(facecolor = 'black'))
ax.text(X_l + 0.1 , 0.21 , r'$P(F\leqq f_{0.95,4,5})$' + f'= {round(area_2,2)}' , fontsize = 14)
ax.annotate('' , xy=(X_l +0.05 , 0.2) , xytext=(X_l + 0.3 , 0.2) , arrowprops = dict(facecolor = 'black'))
ax.text(X_r + 0.3 , 0.21 , r'$P(F\geqq f_{0.025,4,5})$' + f'= {round(area , 2)}' , fontsize = 14)
ax.text(X_r + 0.05 , 0.01 , r'$f_{0.025,4,5}$' + f'= {round(scipy.stats.f(dof[0][0] , dof[0][1]).ppf(1-0.025) ,2)}' ,fontsize = 13)
ax.text(X_l +0.1 , 0.01 , r'$f_{0.95,4,5}$' + f'= {round(scipy.stats.f(dof[0][0] , dof[0][1]).ppf(1-0.95) , 2)}' ,fontsize = 13)
plt.legend(b , fontsize= 15)
==>헷갈린다.
==> F분포의 경우 왼쪽 꼬리확률이 0.05인 임계점 f_0.95,4,5
==> 오른쪽 꼬리확률이 0.05인 임계점 f_0.05,4,5
1> f_0.025 , 4 , 5
==> 7.39
2> f_0.95,4,5
==> 0.16
출처 : [쉽게 배우는 생활속의 통계학] [북스힐 , 이재원]
※혼자 공부 정리용
728x90
반응형