2차원 확률변수에서는 1차원 확률분포 2개(X,Y)를 동시에 다룬다.
각 확률변수가 취할 수 있는 값의 조합으로 이뤄진 집합과 그 확률에 의해 정의된다.
(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
확률변수(X,Y)가 결합분포에 의해 동시에 정의되었음에도(fXY(xi,yj))개별 확률변수 X의 확률분포(fX(x))만을 다시 살펴보아야할 떄 사용한다.
식
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()