살인 사건이 발생했다고 가정하자. 경찰은 전체 용의자 목록을 가지고 있다. 베이지안 확률론 관점에서 전체 용의자 목록은 바로 표본공간이다. 우리가 알고 싶은 것은 전체 용의자 목록(표본공간)에서 누가 범인(선택된 표본)인가 하는 점이다. 현재 표본공간은 용의자 20명으로 구성되어 있으며 이 중 남자가 12명, 여자가 8명이라고 가정한다. Show 만약 담당 형사가 범인은 남자라고 생각한다면, ‘범인이 남자이다’라는 주장은 확률론적 관점에서 남성인 용의자(표본)로만 이루어진 사건(표본공간의 부분 집합)이 된다. 이를 사건 \(A\)라고 하자. 이때 우리가 관심을 가지는 것은 “범인이 남자”라는 사건 \(A\)의 신뢰도 즉, 사건 \(A\)의 확률 \(P(A)\)다. 아무런 추가 정보가 없다면 모든 사람이 범인일 가능성이 같기 때문에 범인이 남자일 확률 \(P(A)\)는 다음과 같이 전체 용의자 수로 남자 용의자 수를 나눈 값이 된다. \[ \begin{align} P(A) = \dfrac{|A|}{|\Omega|} = \dfrac{12}{12 + 8} = \dfrac{12}{20} = 0.6 \tag{6.5.1} \end{align} \] 반대로 “범인은 여자”라는 사건은 여집합 \(A^C\)로 표현할 수 있고 “범인이 여자일 확률”은 다음처럼 계산한다. \[ \begin{align} P(A^C) = \dfrac{\left|A^C\right|}{|\Omega|} = \dfrac{8}{12 + 8} = \dfrac{8}{20} = 0.4 \tag{6.5.2} \end{align} \] 이때 새로운 사건 \(B\)가 발생했다고 하자. 범인의 것으로 추정되는 긴 머리카락을 발견했다. 이머리카락에서 범인은 머리카락이 길다는 가능성이 제시되었다. 이 새로운 사건 \(B\)는 확률론적으로는 새로운 용의자 목록, 즉 머리카락이 긴 사람의 목록이라는 표본공간의 새로운 부분 집합을 의미한다. 그리고 사건 \(B\)가 발생했다는 것은 이 용의자 목록에 진짜로 범인이 포함되었다는 뜻이다. 현재 표본공간 즉, 전체 용의자 목록에는 머리카락이 긴 사람이 10명, 머리카락이 짧은 사람이 10명이다. 만약 이 사건이 진실이라는 보장이 없다면, 사건 \(B\)에 대한 확률 \(P(B)\), 즉 머리카락이 긴 사람이 범인이라는 주장의 신뢰도는 다음과 같다. \[ \begin{align} P(B) = \dfrac{|B|}{|\Omega|} = \dfrac{10}{10 + 10} = \dfrac{10}{20} = 0.5 \tag{6.5.3} \end{align} \] 반대로 머리카락이 짧은 사람의 사건은 \(B^C\)이고 범인이 머리카락이 짧을 확률은 다음처럼 계산한다. \[ \begin{align} P(B^C) = \dfrac{\left|B^C\right|}{|\Omega|} = \dfrac{10}{10 + 10} = \dfrac{10}{20} = 0.5 \tag{6.5.4} \end{align} \] 지금까지의 상황을 요약하면 다음과 같다.
베이지안 확률론은 두 사건 \(A\)와 \(B\)의 관계를 알고 있다면 사건 \(B\)가 발생하였했다는 사실로부터 기존에 알고 있는 사건 \(A\)에 대한 확률 \(P(A)\)를 좀 더 정확한 확률로 바꿀 수 있는 방법을 알려준다. 이를 위해서는 결합확률과 조건부확률이라는 두 가지 개념을 정의해야 한다. **결합확률(joint probability)**은 사건 \(A\)와 \(B\)가 동시에 발생할 확률이다. 즉, 사건(명제/주장) \(A\)도 진실이고 사건(명제/주장) \( B\)도 진실이므로 사건 \(A\)와 \(B\)의 교집합의 확률을 계산하는 것과 같다. \[ \begin{align} P(A \cap B) \text{ or } P(A, B) \tag{6.5.5} \end{align} \] 결합확률과 대비되는 개념으로 결합되지 않는 개별 사건의 확률 \(P(A)\) 또는 \(P(B)\)를 **주변확률(marginal probability)**라고 한다. 또한 \(B\)가 사실일 경우의 사건 \(A\)에 대한 확률을 **사건 \(B\)에 대한 사건 \(A\)의 조건부확률(conditional probability)**이라고 하며 다음과 같이 표기한다. \[ \begin{align} P(A | B) \tag{6.5.6} \end{align} \] 위 수식에서 기호 \(|\)는 if를 뜻한다. 즉 다음과 같다. \[ \begin{align} P(A | B) \equiv \text{ new } P(A) \text{ if } P(B) = 1 \tag{6.5.7} \end{align} \] 이 조건부확률의 값은 다음처럼 정의한다. \[ \begin{align} P(A|B) = \dfrac{P(A,B)}{P(B)} \tag{6.5.8} \end{align} \] 조건부확률이 위와 같이 정의된 근거는 다음과 같다.
\[ \begin{align} P(A|B) = \dfrac{P(A_\text{new})}{P(\Omega_\text{new})} = \dfrac{P(A,B)}{P(B)} \tag{6.5.9} \end{align} \] 그림 6.5.1 : 조건부확률의 정의
예를 들어 범인 찾기 문제에서는 조건부확률을 다음처럼 정의한다.
조건부확률의 값을 구하기 위해서는 결합확률의 값을 알아야 한다. 그런데 사건 \(A\)와 사건 \(B\)의 결합확률의 값 \(P(A,B)\)은 기존의 사건 \(A\)의 확률 \(P(A)\)나 사건 \(B\)의 확률 \(P(B)\)와는 전혀 무관한 별개의 정보이다. 즉, 수학적으로 계산하여 구할 수 있는 값이 아니라 외부에서 주어지지 않으면 안되는 정보인 것이다. 범인 찾기의 경우에도 이미 주어진 정보 \(P(A)\), \(P(B)\)와 관계없이 \(P(A,B)\)는 여러 가지 경우가 있을 수 있다. 예를 들어 어떤 경우에는 12명의 남자 중 머리카락이 긴 사람이 다음과 같이 3명일 수도 있고(경우 1) 범인이 머리카락이 길다: $P(B)=0.5$범인이 머리카락이 길지 않다: $P(B^C)=0.5$계범인이 남자다: $P(A)=0.6$3명 $\;\;\;P(A,B) = \dfrac{3}{20}$9명 $\;\;\;P(A,B^C) = \dfrac{9}{20}$12명범인이 여자다: $P(A^C)=0.4$7명 $\;\;\;P(A^C,B) = \dfrac{7}{20}$1명 $\;\;\;P(A^C,B^C) = \dfrac{1}{20}$8명계10명10명또 다른 경우에는 12명의 남자 중 머리카락이 긴 사람이 다음과 같이 6명일 수도 있다(경우 2). 범인이 머리카락이 길다: $P(B)=0.5$범인이 머리카락이 길지 않다: $P(B^C)=0.5$계범인이 남자다: $P(A)=0.6$6명 $\;\;\;P(A,B) = \dfrac{6}{20}$6명 $\;\;\;P(A,B^C) = \dfrac{6}{20}$12명범인이 여자다: $P(A^C)=0.4$4명 $\;\;\;P(A^C,B) = \dfrac{4}{20}$4명 $\;\;\;P(A,B^C) = \dfrac{4}{20}$8명계10명10명이 두 경우에 대해 조건부확률 \(P(A|B)\)를 구해보자. 만약 머리카락이 긴 남자가 3명이라면 \[ \begin{align} P(A|B) = \dfrac{P(A, B)}{P(B)} = \dfrac{3/20}{10/20} = \dfrac{3}{10} \tag{6.5.10} \end{align} \] 이 된다. 원래 사건 \(A\)의 확률 \(P(A)\)가 0.6 즉 60% 였으므로 범인이 머리카락이 길다는 정보로 인해 남자가 범인일 확률은 절반으로 뚝 떨어졌다. 만약 머리카락이 긴 남자가 6명이라면 \[ \begin{align} P(A|B) = \dfrac{P(A, B)}{P(B)} = \dfrac{6/20}{10/20} = \dfrac{6}{10} \tag{6.5.11} \end{align} \] 이 된다. 이 경우에는 새로운 정보(사건 \(B\))가 주어지든 주어지지 않든 남자가 범인일 확률은 변함없다. 이러한 경우에는 사건 \(A\)가 사건 \(B\)와 서로 **독립(independent)**이라고 한다. 연습 문제 6.5.1(경우 1)에 대해 다음 확률을 구하라. (1) 범인이 머리카락이 짧다면 범인이 남자일 확률 \(P(A|B^C)\) (2) 범인이 머리카락이 길다면 범인이 여자일 확률 \(P(A^C|B)\) (3) 범인이 머리카락이 짧다면 범인이 여자일 확률 \(P(A^C|B^C)\) (4) 범인이 남자라면 범인이 머리카락이 길 확률 \(P(B|A)\) (5) 범인이 여자라면 범인이 머리카락이 길 확률 \(P(B|A^C)\) (6) 범인이 남자라면 범인이 머리카락이 짧을 확률 \(P(B^C|A)\) (7) 범인이 여자라면 범인이 머리카락이 짧을 확률 \(P(B^C|A^C)\) 연습 문제 6.5.2(경우 2)에 대해 다음 확률을 구하라. (1) 범인이 머리카락이 짧다면 범인이 남자일 확률 \(P(A|B^C)\) (2) 범인이 머리카락이 길다면 범인이 여자일 확률 \(P(A^C|B)\) (3) 범인이 머리카락이 짧다면 범인이 여자일 확률 \(P(A^C|B^C)\) (4) 범인이 남자라면 범인이 머리카락이 길 확률 \(P(B|A)\) (5) 범인이 여자라면 범인이 머리카락이 길 확률 \(P(B|A^C)\) (6) 범인이 남자라면 범인이 머리카락이 짧을 확률 \(P(B^C|A)\) (7) 범인이 여자라면 범인이 머리카락이 짧을 확률 \(P(B^C|A^C)\) 독립수학적으로는 사건 \(A\)와 사건 \(B\)의 결합확률의 값이 다음과 같은 관계가 성립하면 **두 사건 \(A\)와 \(B\)는 서로 독립(independent)**이라고 정의한다. \[ \begin{align} P(A,B) = P(A)P(B) \tag{6.5.12} \end{align} \] 독립인 경우 조건부확률과 원래의 확률이 같아짐을 알 수 있다. 즉, \(B\)라는 사건이 발생하든 말든 사건 \(A\)에는 전혀 영향을 주지 않는 다는 것이다. \[ \begin{align} P(A|B) = \dfrac{P(A,B)}{P(B)} = \dfrac{P(A)P(B)}{P(B)} = P(A) \tag{6.5.13} \end{align} \] 원인과 결과, 근거와 추론, 가정과 조건부 결론조건부확률 \(P(A|B)\)에서 사건(주장/명제) \(B\), \(A\)는 각각
으로 생각할 수도 있다. 또 결합확률의 정의를 바꿔 쓰면 다음과 같이 되는데, \[ \begin{align} P(A,B) = P(A|B) P(B) \tag{6.5.14} \end{align} \] 이 식은 다음과 같은 관점에서 볼 수 있다.
예제위 식을 응용하면 다음과 같은 수식도 성립한다. \[ \begin{align} P(A,B,C) = P(A|B,C)P(B,C) \tag{6.5.15} \end{align} \] 확률표기에서 쉼표(comma)가 교집합을 뜻한다는 것을 기억하면 이 식은 쉽게 증명할 수 있다. \[\begin{split} \begin{align} \begin{aligned} P(A,B,C) &= P(A \cap B \cap C) \\ &= P(A \cap (B \cap C)) \\ &= P(A|B \cap C)P(B \cap C) \\ &= P(A|B,C)P(B,C) \end{aligned} \tag{6.5.16} \end{align} \end{split}\] 연습 문제 6.5.3다음 수식을 증명하라. (1) \[ \begin{align} P(A,B,C,D) = P(A,B|C,D)P(C,D) \tag{6.5.17} \end{align} \] (2) \[ \begin{align} P(A,B|C)P(C) = P(A|B,C)P(B,C) \tag{6.5.18} \end{align} \] (3) \[ \begin{align} P(A,B,C|D,E) = \dfrac{P(A,B|C,D,E)P(C,D|E)P(E)}{P(D,E)} \tag{6.5.19} \end{align} \] 연습 문제 6.5.4\(B,C\)가 독립인 사건일 때 다음이 성립함을 증명하라. \[ \begin{align} P(A,B|C) = P(A|B,C)P(B) \tag{6.5.20} \end{align} \] 사슬 법칙조건부확률과 결합확률의 관계를 확장하면 복수의 사건 \(X_1, X_2, \dots, X_N\)에 대한 조건부 확률을 다음처럼 쓸 수 있다. 이를 **사슬 법칙(chain rule)**이라고 한다. \[\begin{split} \begin{align} \begin{aligned} P(X_1, X_2) &= P(X_1) P(X_2 | X_1) \\ P(X_1, X_2, X_3) &= P(X_3 | X_1, X_2) P(X_1, X_2) \\ &= P(X_1) P(X_2 | X_1) P(X_3 | X_1, X_2) \\ P(X_1, X_2, X_3, X_4) &= P(X_4 | X_1, X_2, X_3) P(X_1, X_2, X_3) \\ &= P(X_1) P(X_2 | X_1) P(X_3 | X_1, X_2) P(X_4 | X_1, X_2, X_3) \\ & \vdots \\ P(X_1, \dots, X_N) &= P(X_1) \prod_{i=2}^{N} P( X_{i} | X_1, \dots X_{i-1}) \end{aligned} \tag{6.5.21} \end{align} \end{split}\] 확률변수**확률적인 숫자 값을 출력하는 변수를 확률변수(random variable)**라고 한다. 확률변수에 대한 더 수학적인 정의는 이후에 다시 공부할 것이다. 여기에서는 주사위처럼 어떤 숫자가 나올 수 있지만 정확히 어떤 숫자가 나올지 예측할 수는 없는 기계라고 생각하면 된다. 확률변수는 보통 \(X\), \(Y\)처럼 알파벳 대문자로 표기한다. 위의 범인 찾기 문제에서는 두 확률변수 \(X\), \(Y\)를 정의할 수 있다. 확률변수 \(X\)는 성별을 나타내고 확률변수 \(Y\)는 머리카락이 긴지 짧은지를 나타낸다.
확률변수는 확률분포를 그 안에 내포하고 있어서 그 확률분포에 따라 숫자를 출력할 수 있다. 확률변수 \(X\)가 가진 확률을 확률변수의 확률 \(P(X)\)라고 한다. 위 예에서 확률변수 \(X\)는 사건 \(A\)와 사건 \(A^C\)를 가질 수 있고 각 사건에 할당된 확률은 다음과 같은 표로 나타낼 수 있다. 확률변수 \(X\)의 값 확률변수 \(X\)의 사건 각 사건에 할당된 확률 X=0 \(A\) \(P(X=0) = P(A) = \dfrac{12}{20}\) X=1 \(A^C\) \(P(X=1) = P(A^C) = \dfrac{8}{20}\) 결합확률의 확률분포는 각 확률변수가 가질 수 있는 값의 조합으로 나타난다. 예를 들어 확률변수 \(X\)는 사건 \(A\)와 사건 \(A^C\)를 가질 수 있고 확률변수 \(Y\)는 사건 \(B\)와 사건 \(B^C\)를 가질 수 있으므로 두 사건의 조합에 대한 결합확률은 다음 표와 같이 표현한다. 이 표에서 확률값은 머리카락 긴 남자가 3명인 경우(경우 1)에서 구한 값이다. \(X\)의 값 \(Y\)의 값 \(X\)의 사건 \(Y\)의 사건 각 사건의 조합에 할당된 확률 X=0 Y=0 \(A\) \(B\) \(P(X=0,Y=0) = P(A, B) = \dfrac{3}{20}\) X=0 Y=1 \(A\) \(B^C\) \(P(X=0,Y=1) = P(A, B^C) = \dfrac{9}{20}\) X=1 Y=0 \(A^C\) \(B\) \(P(X=1,Y=0) = P(A^C, B) = \dfrac{7}{20}\) X=1 Y=1 \(A^C\) \(B^C\) \(P(X=1,Y=1) = P(A^C, B^C) = \dfrac{1}{20}\) 두 확률변수 \(X\), \(Y\)가 가질 수 있는 모든 사건의 조합에 대해 독립이 성립하면 두 확률변수 \(X\), \(Y\)가 독립이라고 한다. 위 결합확률 표에서 주변확률의 곱을 구해서 결합확률과 비교해보면 확률변수 \(X\), \(Y\)는 독립이 아니라는 것을 알 수 있다. \(X\)의 값 \(Y\)의 값 \(X\)의 확률 \(Y\)의 확률 주변확률의 곱 결합확률 X=0 Y=0 \(P(X=0)=0.6\) \(P(Y=0)=0.5\) \(P(X=0)P(Y=0)=0.3\) \(P(X=0,Y=0)=\dfrac{3}{20}\) X=0 Y=1 \(P(X=0)=0.6\) \(P(Y=0)=0.5\) \(P(X=0)P(Y=0)=0.3\) \(P(X=0,Y=0)=\dfrac{9}{20}\) X=1 Y=0 \(P(X=0)=0.4\) \(P(Y=0)=0.5\) \(P(X=0)P(Y=0)=0.2\) \(P(X=0,Y=0)=\dfrac{7}{20}\) X=1 Y=1 \(P(X=0)=0.4\) \(P(Y=0)=0.5\) \(P(X=0)P(Y=0)=0.2\) \(P(X=0,Y=0)=\dfrac{1}{20}\) 연습 문제 6.5.5(경우 2)에 대해 위와 같은 표를 완성하고 확률변수 \(X\), \(Y\)가 독립임을 보여라. 피지엠파이 패키지pgmpy(Probabilistic Graphical Models in Python) 패키지를 사용하면 이산확률모형을 쉽게 구현할 수 있다. 피지엠파이 패키지는 다음 명령으로 설치한다. 피지엠파이 패키지의 +------+--------+ | X | P(X) | +======+========+ | X(0) | 0.6000 | +------+--------+ | X(1) | 0.4000 | +------+--------+2 클래스는 결합확률 모형을 만드는 데 사용하는 클래스다. 사용법은 다음과 같다. JointProbabilityDistribution(variables, cardinality, values)
+------+--------+ | X | P(X) | +======+========+ | X(0) | 0.6000 | +------+--------+ | X(1) | 0.4000 | +------+--------+3에 들어가는 인수가 사건의 이름이 아니라 확률변수의 이름이라는 점에 주의하라. pgmpy에서는 사건의 이름을 명시적으로 지정할 수 없고 입력한 사건의 수가 \(K\)일 때, \(0, 1, \ldots, K-1\)와 같이 숫자로 지정된다. 범인 찾기 예제에서 성별을 나타내는 확률변수 \(X\)와 머리카락 길이를 나타내는 확률변수 \(Y\)의 확률을 다음과 같이 표로 정의할 수 있다. from pgmpy.factors.discrete import JointProbabilityDistribution as JPD px = JPD(['X'], [2], np.array([12, 8]) / 20) print(px) +------+--------+ | X | P(X) | +======+========+ | X(0) | 0.6000 | +------+--------+ | X(1) | 0.4000 | +------+--------+ 연습 문제 6.5.6위의 범인 찾기 문제의 예에서 확률변수 \(Y\)의 확률을 +------+--------+ | X | P(X) | +======+========+ | X(0) | 0.6000 | +------+--------+ | X(1) | 0.4000 | +------+--------+2 클래스 객체 +------+--------+ | X | P(X) | +======+========+ | X(0) | 0.6000 | +------+--------+ | X(1) | 0.4000 | +------+--------+8로 구현하라. 확률변수 \(X\)와 확률변수 \(Y\)의 결합확률은 다음처럼 정의한다. pxy = JPD(['X', 'Y'], [2, 2], np.array([3, 9, 7, 1]) / 20) print(pxy) +------+------+----------+ | X | Y | P(X,Y) | +======+======+==========+ | X(0) | Y(0) | 0.1500 | +------+------+----------+ | X(0) | Y(1) | 0.4500 | +------+------+----------+ | X(1) | Y(0) | 0.3500 | +------+------+----------+ | X(1) | Y(1) | 0.0500 | +------+------+----------+ 연습 문제 6.5.7위의 범인 찾기 문제의 예에서 남자 12명 중 머리카락이 긴 사람이 6명인 경우(경우 2)의 결합확률 모형을 +------+--------+ | X | P(X) | +======+========+ | X(0) | 0.6000 | +------+--------+ | X(1) | 0.4000 | +------+--------+2 클래스 객체 pxy = JPD(['X', 'Y'], [2, 2], np.array([3, 9, 7, 1]) / 20) print(pxy)0로 구현하라. +------+--------+ | X | P(X) | +======+========+ | X(0) | 0.6000 | +------+--------+ | X(1) | 0.4000 | +------+--------+2 클래스는 결합확률로부터 주변확률을 계산하는 pxy = JPD(['X', 'Y'], [2, 2], np.array([3, 9, 7, 1]) / 20) print(pxy)2 메서드, pxy = JPD(['X', 'Y'], [2, 2], np.array([3, 9, 7, 1]) / 20) print(pxy)3 메서드와 조건부확률을 계산하는 pxy = JPD(['X', 'Y'], [2, 2], np.array([3, 9, 7, 1]) / 20) print(pxy)4 메서드를 제공한다. marginal_distribution(values, inplace=True)
marginalize(values, inplace=True)
conditional_distribution(values, inplace=True)
pxy = JPD(['X', 'Y'], [2, 2], np.array([3, 9, 7, 1]) / 20) print(pxy)2 메서드는 인수로 받은 확률변수에 대한 주변확률분포를 구한다. 다음 코드는 결합확률로부터 주변확률 \(P(A)\), \(P(A^C)\)를 계산한다. pmx = pxy.marginal_distribution(['X'], inplace=False) print(pmx) +------+--------+ | X | P(X) | +======+========+ | X(0) | 0.6000 | +------+--------+ | X(1) | 0.4000 | +------+--------+ pxy = JPD(['X', 'Y'], [2, 2], np.array([3, 9, 7, 1]) / 20) print(pxy)3 메서드는 인수로 받은 확률변수를 주변화(marginalize)하여 나머지 확률변수에 대한 주변확률분포를 구한다. 다음 코드도 앞과 마찬가지로 결합확률로부터 주변확률 \(P(A)\), \(P(A^C)\)를 계산한다. from pgmpy.factors.discrete import JointProbabilityDistribution as JPD px = JPD(['X'], [2], np.array([12, 8]) / 20) print(px)0 +------+--------+ | X | P(X) | +======+========+ | X(0) | 0.6000 | +------+--------+ | X(1) | 0.4000 | +------+--------+ 다음 코드는 결합확률로부터 주변확률 \(P(B)\), \(P(B^C)\)를 계산한다. from pgmpy.factors.discrete import JointProbabilityDistribution as JPD px = JPD(['X'], [2], np.array([12, 8]) / 20) print(px)2 from pgmpy.factors.discrete import JointProbabilityDistribution as JPD px = JPD(['X'], [2], np.array([12, 8]) / 20) print(px)3 pxy = JPD(['X', 'Y'], [2, 2], np.array([3, 9, 7, 1]) / 20) print(pxy)4 메서드를 사용하면 어떤 확률변수가 어떤 사건이 되는 조건에 대해 조건부확률값을 계산한다. 다음 코드는 결합확률로부터 조건부확률 \(P(B|A)\), \(P(B^C|A)\)를 계산한다. from pgmpy.factors.discrete import JointProbabilityDistribution as JPD px = JPD(['X'], [2], np.array([12, 8]) / 20) print(px)4 from pgmpy.factors.discrete import JointProbabilityDistribution as JPD px = JPD(['X'], [2], np.array([12, 8]) / 20) print(px)5 다음 코드는 결합확률로부터 조건부확률 \(P(B|A^C)\), \(P(B^C|A^C)\)를 계산한다. from pgmpy.factors.discrete import JointProbabilityDistribution as JPD px = JPD(['X'], [2], np.array([12, 8]) / 20) print(px)6 from pgmpy.factors.discrete import JointProbabilityDistribution as JPD px = JPD(['X'], [2], np.array([12, 8]) / 20) print(px)7 다음 코드는 결합확률로부터 조건부확률 \(P(A|B)\), \(P(A^C|B)\)를 계산한다. from pgmpy.factors.discrete import JointProbabilityDistribution as JPD px = JPD(['X'], [2], np.array([12, 8]) / 20) print(px)8 from pgmpy.factors.discrete import JointProbabilityDistribution as JPD px = JPD(['X'], [2], np.array([12, 8]) / 20) print(px)9 marginal_distribution(values, inplace=True)0 메서드를 이용하면 두 확률변수 간의 독립도 확인할 수 있다. +------+--------+ | X | P(X) | +======+========+ | X(0) | 0.6000 | +------+--------+ | X(1) | 0.4000 | +------+--------+0 두 개의 +------+--------+ | X | P(X) | +======+========+ | X(0) | 0.6000 | +------+--------+ | X(1) | 0.4000 | +------+--------+2 객체끼리 곱하면 두 분포가 독립이라는 가정하에 결합확률을 구한다. 이 값과 원래의 결합확률을 비교하면 독립이 아니라는 것을 알 수 있다. +------+--------+ | X | P(X) | +======+========+ | X(0) | 0.6000 | +------+--------+ | X(1) | 0.4000 | +------+--------+1 연습 문제 6.5.8위에서 구현한 +------+--------+ | X | P(X) | +======+========+ | X(0) | 0.6000 | +------+--------+ | X(1) | 0.4000 | +------+--------+2 클래스 객체 pxy = JPD(['X', 'Y'], [2, 2], np.array([3, 9, 7, 1]) / 20) print(pxy)0로부터 주변확률 모형 및 조건부확률 모형을 구하라. 또 marginal_distribution(values, inplace=True)0 메서드를 이용하여 사건 A, B의 독립을 확인하라. |