열렬히.뛰기

균등분포로 표본 만들기

수학 & 통계 > 수리통계1 > 3. 일변량 분포 : 예시 > 균등분포로 표본 만들기

균등분포를 이용해서 표본을 뽑아낼 수 있다.

방법

  1. 균등분포에서 표본을 뽑아낸다.
  2. X의 분포함수의 역함수를 이용, X의 표본을 생성한다.
    • 보통 변수변환을 사용해 역함수를 만든다.
    • 그래도 안되면 수치해석을 이용한다.
  3. X의 히스토그램을 작성하고, X의 확률함수와 비교한다.

예시 1

Y = F_X(x) \sim U(0,1)

F_X~^{-1}~(Y) = X

여기서 역함수를 구해보면 다음과 같다.

F_X(x) = 1 - e^{-x}, \kern{10pt} y = 1 - e^{-x}, \kern{10pt} e^{-x} = 1-y \\[20pt] \log(e^{-x}) = \log(1-y)\\[10pt] -x = \log(1-y)

예시 2

f_X(x) = \dfrac{k}{x}~~I(1\le X \le5)

X의 표본을 추출하기 위해 U[0, 1]을 이용.

우선 k값을 구한다.

P(-\infty \le X \le \infty) = \int_{1}^{5}~\dfrac{k}{x}dx = k \cdot log(x)\biggr\rvert_{1}^{5} \\[10pt] = k [\log(5) - \log(1)] = k\cdot\log(5) = 1 \\[20pt] \therefore~k = \dfrac{1}{\log(5)}

이를 이용해 역함수를 구한다.

F_X(x) = \dfrac{log(x)}{log(5)} ~\rightarrow~ y = \dfrac{log(x)}{log(5)} \\[20pt] log(x) = log(5) \cdot y, \kern{10pt} e^{log(x)} = e^{log(5) \cdot y} \\[20pt] x = 5^y,\kern{10pt} F_X~^{-1}~(y) = 5^y

R언어를 이용한다.

r
xx = 10000
y = runif(xx) # 균등분포에서 10000개 표본추출
x = 5**y # 역함수

curve(1/(x*log(5)), 1, 5) # 원래 그래프 모양
hist(y, nclass=30) # y의 히스토그램
hist(x, nclass=30) # x의 히스토그램

curve() 사용 시, 원래 확률함수의 그래프가 다음과 같이 나온다. 범위는 지시함수에서 표시된대로 1~5로 설정했다.

결과는 다음과 같다.