결합확률분포와 주변확률분포

매일 공부(ML)·2022년 5월 14일
0

이어드림

목록 보기
43/146

2차원 이산형 확률변수의 정의

2차원 확률변수에서는 1차원 확률분포 2개(X,Y)를 동시에 다룬다.

각 확률변수가 취할 수 있는 값의 조합으로 이뤄진 집합과 그 확률에 의해 정의된다.


결합확률분포(Joint Probability Distribution)

  • (X,Y)가 취할 수 있는 값의 조합으로 이뤄진 집합을 {(xi,yk)|i=1,2,...; j=1,2,...}

  • 각각 조합에 맞는 확률(결합확률 분포)

    • P(X=xi, Y=yj) = pij(i=1,2,...; j=1,2,....)

    • P(X=x, Y=y) = fXY(x,y)가 되는 함수를 fxy(x,y)를 결합함수라고 한다

  • 즉, 동시에 움직이는 확률

  • 확률의 성질

    • fxy(xi,yi) >= 0

    • sumi,j of fxy(xi,yi) = 1

주변확률분포(Marginal Probability Distribution

  • 확률변수(X,Y)가 결합분포에 의해 동시에 정의되었음에도(fXY(xi,yj))개별 확률변수 X의 확률분포(fX(x))만을 다시 살펴보아야할 떄 사용한다.

    • fX(x) = sum of fXY(x,yk)

Code

import numpy as np
import matplotlib.pyplot as plt
%precision 3
%matplotlib inline
x_set = np.arange(2,13)
y_set = np.arange(1,7)

def f_XY(x,y):
    if 1<=y<=6 and 1<=x<=y<=6:
        return y * (x-y) / 441
    else:
        return 0
XY = [x_set, y_set, f_XY]
prob = np.array(
    [
         [
            
             f_XY(x_i, y_j)
             for y_j in y_set


         ]
         for x_i in x_set        
    ]

)
fig  = plt.figure(figsize=(10,8))
ax = fig.add_subplot(1,1,1)

c = ax.pcolor(prob)
ax.set_xticks(np.arange(prob.shape[1]) + 0.5, minor=False)
ax.set_yticks(np.arange(prob.shape[0]) + 0.5, minor=False)
ax.set_xticklabels(np.arange(1,7), minor = False)
ax.set_yticklabels(np.arange(2,13), minor = False)

#y축을 내림차순의 숫자가 되도록 아래를 반환한다.
ax.invert_yaxis()

#x축 눈금을 그래프 위쪽에 표시

ax.xaxis.tick_top()
fig.colorbar(c, ax=ax)
plt.show()

#주변확률분포 정의
def f_X(x):
    return np.sum(
        [
         f_XY(x,y_k)
         for y_k in y_set
        ]
    )
def f_Y(y):
    return np.sum(
        [
         f_XY(x_k, y)
         for x_k in x_set
        ]
    )
X = [x_set, f_X]
Y = [y_set, f_Y]
prob_x = np.array(
    [
      f_X(x_k)
      for x_k in x_set
    ]
)

prob_y = np.array(
    [
      f_Y(y_k)
      for y_k in y_set
    ]
)
fig = plt.figure(figsize=(12,4))
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)

ax1.bar(x_set, prob_x)
ax1.set_title('X_marginal probability distribution')
ax1.set_xlabel('X_value')
ax1.set_ylabel('probability')
ax1.set_xticks(x_set)

ax2.bar(y_set, prob_y)
ax2.set_title('Y_marginal probability distribution')
ax2.set_xlabel('Y_value')
ax2.set_ylabel('probability')

plt.show()
profile
성장을 도울 아카이빙 블로그

0개의 댓글