다운로드
작성자: admin 작성일시: 2016-05-23 22:41:32 조회수: 2779 다운로드: 320
카테고리: 기초 수학 태그목록:

F 분포

스튜던트-t 분포와 카이 제곱 분포는 가우시안 정규 분포를 따르는 확률 변수 $X$로부터 나온 $N$개의 표본에서 만들 수 있었다.

이와 비슷하게 카이 제곱 분포를 따르는 독립적인 두 개의 확률 변수 $\chi^2_1(x;N_1)$와 $\chi^2_2(x;N_2)$의 확률 변수 표본을 각각 $x_1$, $x_2$이라고 할 때 이를 각각 $N_1$, $N_2$로 나눈 뒤 비율을 구하면 $F(x;N_1, N_2)$ 분포가 된다. $N_1$, $N_2$는 F 분포의 자유도 모수라고 한다.

$$ x_1, x_2 \sim \chi^2 \;\; \rightarrow \;\; \dfrac{x_1 / N_1}{x_2/ N_2} \sim F(x; N_1, N_2) $$

F 분포의 확률밀도함수는 다음과 같다.

$$ f(x; N_1,N_2) = \dfrac{\sqrt{\dfrac{(N_1\,x)^{N_1}\,\,N_2^{N_2}} {(N_1\,x+N_2)^{N_1+N_2}}}} {x\;\text{B}\left(\frac{N_1}{2},\frac{N_2}{2}\right)} $$

이 식에서 함수 $B(x)$는 베타(Beta) 함수라는 특수 함수이다.

SciPy stats 서브패키지의 f 클래스는 F 분포를 지원한다. 다음 그림에서 몇가지 자유도 쌍에 대한 F 분포의 모양을 보이고 있다.

In [1]:
xx = np.linspace(0.03, 3, 1000)
plt.plot(xx, sp.stats.f(1, 2).pdf(xx), ls="-", label="F(1,2)")
plt.plot(xx, sp.stats.f(3, 5).pdf(xx), ls="--", label="F(3,5)")
plt.plot(xx, sp.stats.f(10, 10).pdf(xx), ls="-.", label="F(10,10)")
plt.axvline(1, ls=":")
plt.xlabel("x")
plt.title("자유도에 따른 F 분포의 모양")
plt.legend()
plt.show()

F 분포에서 특이한 점은 $N_1$과 $N_2$의 값이 같을 경우 $1$ 근처의 값이 가장 많이 발생할 것이라는 직관과 달리 $1$ 이 아닌 다른 수가 더 흔하게 발생한다는 점이다. 시뮬레이션을 통해 실제로 제곱합의 비율의 분포를 살펴보면 다음과 같다.

In [2]:
np.random.seed(0)

rv = sp.stats.norm()
M = 10000

N1 = 10
x1 = rv.rvs((N1, M))
t1 = (x1 ** 2).sum(axis=0)

N2 = 10
x2 = rv.rvs((N2, M))
t2 = (x2 ** 2).sum(axis=0)

t = t2 / t1
sns.distplot(t, bins=200, kde=False)
plt.axvline(1, ls=":");
plt.xlim(-0.1, 3)
plt.title("제곱합의 비율 (N1=10, N2=10)")
plt.xlabel("표본값")
plt.ylabel("count")
plt.show()

스튜던트 t 분포와의 관계

스튜던트 t 분포의 표본 값을 제곱한 값은 F-분포를 따른다.

$$ t(N)^2 = F(1, N) $$

연습 문제 8.3.3

$N$이 다음과 같을 때 스튜던트 t 분포에서 나온 값의 제곱이 이루는 분포를 시뮬레이션으로 구하고 그 히스토그램을 $(1,N)-$자유도의 F-분포와 비교하라.

  1. $N=2$일 때
  2. $N=30$일 때

질문/덧글

확률밀도함수의 넓이 moon*** 2016년 10월 15일 1:50 오후

카이제곱분포나 F분포 등 모든 분포들의 확률밀도함수 넓이는 1이되나요? 증명을 해보고싶은데 파이썬에서 적분하는 방법을 잘 모르겠습니다,,

답변: 확률밀도함수의 넓이 관리자 2016년 10월 16일 10:46 오전

네, 모든 확률밀도함수를 모든 정의역에서 대해 적분하면 1입니다. sympy 패키지를 써서 부정적분을 구하겨나 scipy.integrate 패키지를 써서 정적분을 구해보시면 됩니다.

Scipy 플롯 수식 안의 자유도와 라벨의 자유도 값이 달라요.. seun*** 2018년 2월 26일 1:34 오후

Scipy 플롯 수식 안의 자유도 값과 라벨 값이 서로 다른데요.. ( (5,1) -> 라벨 : F(10, 2) )
이유가 궁금합니다..

답변: Scipy 플롯 수식 안의 자유도와 라벨의 자유도 값이 달라요.. 관리자 2018년 2월 28일 2:53 오후

수정하였습니다. 지적 감사드립니다.