본문 바로가기
AI 수학/랜덤프로세스

랜덤변수의 함수와 샘플링 - 3

by 깊은대학 2020. 12. 26.

랜덤변수 X의 확률밀도함수(pdf, probability density function)가 pX(x)이고, 랜덤변수 Y가 함수 Y=g(X)로 주어졌을 때, Y의 확률밀도함수 pY(y)를 구할 수 있었다.

또한 랜덤변수 Y의 확률분포에서 샘플을 직접 추출하기 어려운 경우에는 가우시안 또는 균등분포(uniform distribution)를 갖는 랜덤변수 X로부터 샘플 X=x(i)를 추출하여 함수 관계식 y(i)=g(x(i))로 변환해서 사용할 수 있었다.

 

 

그렇다면, 랜덤변수 X의 확률밀도함수 pX(x)와 랜덤변수 Y의 확률밀도함수 pY(y)가 주어졌을 때, X와 Y의 함수 관계식 Y=g(X)는 어떻게 구할 수 있을까. 만약 이 관계식을 구할 수 있다면 임의의 확률분포로부터 샘플을 쉽게 추출할 수 있을 것이다. 왜냐하면 파이썬(Python)이나 매트랩(Matlab)에서는 가우시안 또는 균등분포로부터 샘플을 추출해주는 함수를 제공하고 있기 때문이다.

 

 

먼저 랜덤변수 X의 누적분포함수(cdf, cumulative distribution function) FX(x)를 함수 g(X)로 놓자. 즉, Y=g(X)=FX(X). 그러면 랜덤변수 Y의 누적분포함수는 다음과 같이 계산된다.

 

FY(y)=P{Yy}=P{XFX1(y)}=FX(FX1(y))=y

 

누적분포함수의 특성에 의해서 0FX(X)1이므로 0Y1이 된다. 따라서 y<0이면 FY(y)=0이고 y>1이면 FY(y)=1이다. 결국

 

FY(y)={0,y<0y,0y11,y>1

 

이다. 따라서 랜덤변수 Y[0,1] 구간에서 균등분포를 갖는다는 것을 알 수 있다. 즉 YU[0,1]이다.

결론적으로 임의의 확률분포를 갖는 랜덤변수 X에서 균등분포를 갖는 랜덤변수 YU[0,1]를 만들어 낼 수 있다.

 

반대로, 균등분포를 갖는 랜덤변수 XU[0,1]에서 미리 설정된 확률분포를 갖는 랜덤변수 Y를 만들어 보자. 이 경우가 더 유용한 시나리오가 되겠다. 랜덤변수 Y의 누적분포함수를 F(y)로 설정했을 때, XY의 함수 관계식을 Y=g(X)=F1(X)로 놓자. 또는 X=F(Y). 그러면 랜덤변수 Y의 누적분포함수 FY(y)는 다음과 같이 계산된다.

 

FY(y)=P{Yy}=P{F1(X)y}=P{XF(y)}=FX(F(y))

 

여기서 XU[0,1] 이므로 FX(x)=x이기 때문에 위 식은

 

FY(y)=FX(F(y))=F(y)

 

가 된다. 따라서 Y의 누적분포함수 FY(y)는 설정된 누적분포함수 F(y)가 됨을 알 수 있다.

결론적으로 균등분포를 갖는 랜덤변수 XU[0,1]에서 임의의 확률분포를 갖는 랜덤변수 Y를 만들어 낼 수 있다.

 

 

 

정리하면,

 

1. 가우시안 또는 균등분포를 갖는 랜덤변수를 임의의 확률분포를 갖는 랜덤변수로 변환시킬 수 있다. 또는 반대로 임의의 확률분포를 갖는 랜덤변수를 가우시안 또는 균등분포를 갖는 랜덤변수로 변환시킬 수 있다.

2. 가우시안 또는 균등분포를 갖는 샘플을 이용하여 임의의 확률분포를 갖는 샘플을 생성할 수 있다.

 

예를 들어보자. 만약 랜덤변수 Y의 확률밀도함수가 다음과 같이 주어졌을 때,

 

pY(y)={y,0y<1(2y),1y20,else

 

균등분포 XU[0,1]에서 Y로 변환되는 함수 Y=g(X)를 구해보자.

 

 

먼저 Y의 확률밀도함수에서 누적분포함수를 구한다.

 

FY(y)=ypY(y)dy={0,y<0y22,0y<11+2yy22,y1y21,y>2

 

그런 후, 함수 y=g(x)=FY1(x)를 구하면 된다.

 

y=g(x)={2x,0x<1222(1x),12x10,else