F 분포(F distribution)
카이제곱 분포를 따르는 자유도가 각각 d1, d2 인 두 확률변수 X1, X2의 비에 대한 분포를 F분포라고 합니다. 새로운 확률변수 F는 식 1과 같이 계산됩니다.
$$F=\frac{\frac{X^2_1}{d_1}}{\frac{X^2_2}{d_2}}$$ | (식 1) |
식 1에서 보는 것과 같이 F 분포의 모수는 두 개의 자유도이므로 F 분포는 식 2와 같이 나타냅니다.
F ~ F(d1, d2) | (식 2) |
---|
F분포를 따르는 확률변수 x의 확률밀도함수는 식 3과 같습니다.
$$f(x)=\frac{1}{B\left(\frac{d_1}{2},\, \frac{d_2}{2}\right)}\left(\frac{d_1x}{d_1x+d_2}\right)^{\frac{d_1}{2}} \left(1-\frac{d_1x}{d_1x+d_2}\right)^{\frac{d_2}{2}}x^{-1}$$ | (식 3) |
식 3에서 B는 식 4로 정의되는 베타함수를 나타내며 변수 x ≥ 0, 자유도 d1, d2는 양의 정수입니다.
베타함수
두 변수의 감마함수와 관계된 것으로 식 4와 같이 정의합니다.
\begin{align}B(x, y)&=\frac{\Gamma(x) \Gamma(y)}{\Gamma(x+y)}\\ &=\int^1_0 t^{x-1}(1-t)^{y-1}\, dt \end{align} | (식 4) |
F 분포의 다양한 통계량은 scipy.stats.F 클래스의 다양한 메소드들을 사용하여 계산할 수 있습니다.
그림 1은 분자와 분모의 자유도에 따라 F분포의 변화를 나타낸 것입니다.
import numpy as np import matplotlib.pyplot as plt from scipy import stats
x=np.linspace(0, 4, 1000) n=[2, 4, 8, 12] d=[4, 8, 12, 16] col=['g','b','r', 'k'] fig, ax=plt.subplots(figsize=(4,3)) for i in range(4): ax.plot(x, stats.f.pdf(x, n[i], d[i]), color=col[i], label=f"F{n[i], d[i]}") ax.set_xlabel("x", loc="right") ax.set_ylabel("pdf", loc="top") ax.legend(loc='best', frameon=False) plt.show()
예 1)
P(F6, 14 ≤ 1.5)을 계산합니다.
round(stats.f.cdf(1.5, 6, 14),3)
0.752
댓글
댓글 쓰기