본문 바로가기

표본공간과 조건부확률

가능한 결과의 집합인 표본공간과 그 부분집합인 사건으로 확률을 정의하고, 경우의 수를 세어 확률을 구해도 되는 조건을 확인합니다. 여사건과 합사건의 확률, 배반과 확률 0의 차이, 조건을 알면 표본공간이 줄어드는 조건부확률을 두 주사위 예제로 계산합니다.

주사위를 던져 짝수가 나올 확률이 1/2이라는 것은 여섯 가지 결과 가운데 세 가지가 짝수이기 때문입니다. 하지만 결과의 개수를 세는 것만으로 확률이 되려면, 모든 결과가 똑같이 일어날 수 있어야 합니다. 이 글에서는 집합의 표현과 연산의 집합과 합과 곱의 법칙, 중복 세기의 세는 방법으로 확률을 정의하고, 무언가를 알게 되었을 때 확률이 어떻게 바뀌는지 다룹니다.

표본공간과 사건

시행에서 일어날 수 있는 모든 결과의 집합을 표본공간(sample space)이라 하고 Ω로 씁니다. 표본공간의 부분집합을 사건(event)이라고 합니다. 주사위 하나를 던지면 Ω={1,2,3,4,5,6}\Omega=\{1,2,3,4,5,6\}이고, "짝수가 나온다"는 사건은 {2,4,6}\{2,4,6\}입니다. 사건을 집합으로 보면 "A 또는 B"는 합집합 A∪BA\cup B, "A이고 B"는 교집합 A∩BA\cap B, "A가 아니다"는 여집합 AcA^c가 됩니다.

유한 표본공간에서는 결과 ω마다 0 이상의 확률 p(ω)p(\omega)를 주되 모두 더해 1이 되게 하고, 사건의 확률을 그 사건에 속한 결과들의 확률의 합으로 정합니다. 모든 결과의 확률이 같다면 p(ω)=1/∣Ω∣p(\omega)=1/|\Omega|이므로, 사건의 확률은 경우의 수의 비 P(A)=∣A∣/∣Ω∣P(A)=|A|/|\Omega|가 됩니다. 이 식은 결과들이 똑같이 일어날 수 있다고 가정할 때만 쓸 수 있습니다. 한쪽으로 기운 주사위라면 결과마다 다른 확률을 더해야 합니다.

여사건과 합사건

정의에서 바로 몇 가지 성질이 나옵니다. 모든 사건 A에 대해 0≤P(A)≤10\le P(A)\le1이고 P(Ω)=1P(\Omega)=1입니다. A와 그 여사건은 겹치지 않고 합치면 Ω이므로 P(Ac)=1−P(A)P(A^c)=1-P(A)입니다. 두 사건의 합사건은 포함·배제와 같은 이유로 P(A∪B)=P(A)+P(B)−P(A∩B)P(A\cup B)=P(A)+P(B)-P(A\cap B)이고, 세 사건에서도 같은 모양의 식이 성립합니다.

두 사건이 동시에 일어날 수 없을 때, 곧 A∩B=∅A\cap B=\varnothing일 때 두 사건을 배반(mutually exclusive)이라고 합니다. 배반이면 교집합의 확률이 0이라서 P(A∪B)=P(A)+P(B)P(A\cup B)=P(A)+P(B)입니다. 그러나 거꾸로 교집합의 확률이 0이라고 해서 언제나 배반인 것은 아닙니다. Ω={1,2,3}\Omega=\{1,2,3\}에서 p(1)=0p(1)=0, p(2)=p(3)=1/2p(2)=p(3)=1/2로 정하고 A={1,2}A=\{1,2\}, B={1,3}B=\{1,3\}으로 두면, 교집합 {1}\{1\}은 비어 있지 않지만 확률은 0입니다. 모든 결과의 확률이 양수인 표본공간, 예를 들어 공정한 주사위에서는 교집합의 확률이 0이면 교집합이 비어 있으므로 배반이라고 말할 수 있습니다.

더 깊이: 여사건으로 푸는 생일 문제

"n명 가운데 생일이 같은 사람이 적어도 한 쌍 있다"는 사건은 같은 쌍이 한 쌍인 경우, 두 쌍인 경우, 세 명이 같은 경우처럼 갈래가 많아 직접 세기 어렵습니다. 여사건인 "모두 생일이 다르다"는 훨씬 세기 쉬우므로, 1년을 365일로 보고 날마다 생일일 확률이 같다고 가정해 이쪽을 셉니다. 첫 사람은 아무 날이나 되고, 둘째는 남은 364일, 셋째는 363일 가운데 하나여야 하므로 모두 다를 확률은 365365⋅364365⋯365−n+1365\frac{365}{365}\cdot\frac{364}{365}\cdots\frac{365-n+1}{365}입니다.

이 값을 1에서 빼면 같은 생일이 있을 확률이 됩니다. MathWorld의 생일 문제에 따르면 이 확률이 처음으로 1/2을 넘는 것은 23명일 때로, 약 0.507입니다. 날짜가 365가지인데 23명만으로 반을 넘는 것은, 사람의 수가 아니라 비교할 쌍의 수 (232)=253\binom{23}{2}=253이 커지기 때문입니다.

같은 계산은 해시값이 겹치는 충돌이 일어날 확률을 어림할 때도 쓰입니다. 결과가 d가지인 해시에 값을 n개 넣으면 n이 대략 d\sqrt d 정도만 되어도 충돌이 생길 가능성이 커지며, 이를 생일 역설(birthday paradox)이라고 부릅니다.

조건을 알면 표본공간이 줄어든다

주사위를 던졌는데 4 이상이 나왔다는 것을 알았다고 합시다. 이제 가능한 결과는 4, 5, 6뿐이고, 그 가운데 짝수는 4와 6이므로 짝수일 확률은 2/3입니다. B가 일어났다는 것을 알 때 A의 확률을 조건부확률(conditional probability)이라 하고, P(B)>0P(B)>0일 때 다음과 같이 정의합니다.

P(A∣B)=P(A∩B)P(B)P(A\mid B)=\frac{P(A\cap B)}{P(B)}

조건 B 안으로 표본공간을 줄이고, 그 안에서 A가 차지하는 비율을 구하는 것입니다. 짝수 세 개를 그대로 분자에 두면 조건 밖의 2까지 세게 되어 틀립니다. 정의를 바꾸어 쓰면 P(A∩B)=P(B) P(A∣B)P(A\cap B)=P(B)\,P(A\mid B)가 되어, 두 사건이 함께 일어날 확률을 차례로 계산할 수 있습니다. 두 주사위를 던지는 시행으로 몇 가지 조건부확률을 계산해 보겠습니다.

from fractions import Fraction
from itertools import product

omega = set(product(range(1, 7), repeat=2))


def P(event):
    return Fraction(len(event), len(omega))


def given(event, condition):
    return P(event & condition) / P(condition)


total7 = {w for w in omega if w[0] + w[1] == 7}
first3 = {w for w in omega if w[0] == 3}
doubles = {w for w in omega if w[0] == w[1]}
high = {w for w in omega if w[0] + w[1] >= 10}
total12 = {w for w in omega if w[0] + w[1] == 12}
print(P(total7), given(total7, first3))
print(P(doubles), given(doubles, high))
print(given(total12, doubles), given(doubles, total12))
1/6 1/6
1/6 1/3
1/6 1

omega는 두 주사위의 눈을 순서쌍으로 적은 36가지 결과의 집합이고, 모든 결과의 확률이 같으므로 P는 원소의 개수를 36으로 나눕니다. 사건은 조건을 만족하는 결과의 집합으로 만들고, &로 교집합을 구합니다. Fraction은 1/6 같은 값을 반올림 없이 분수로 계산합니다.

첫 줄에서 합이 7일 확률은 1/6이고, 첫 주사위가 3이라는 것을 알아도 여전히 1/6입니다. 첫 눈이 무엇이든 합을 7로 만드는 둘째 눈은 하나뿐이기 때문입니다. 둘째 줄의 같은 눈은 원래 1/6이지만, 합이 10 이상이라는 것을 알면 (4, 6), (5, 5), (6, 4), (5, 6), (6, 5), (6, 6)의 여섯 결과 가운데 두 개라서 1/3로 커집니다. 셋째 줄은 P(A∣B)P(A\mid B)와 P(B∣A)P(B\mid A)가 다를 수 있음을 보여 줍니다. 같은 눈이 나왔을 때 합이 12일 확률은 1/6이지만, 합이 12이면 반드시 (6, 6)이라 같은 눈일 확률은 1입니다. 조건부확률에서는 무엇이 조건인지를 바꾸면 안 됩니다.

정리

  • 표본공간은 일어날 수 있는 모든 결과의 집합이고, 사건은 그 부분집합입니다. "또는", "그리고", "아니다"는 합집합, 교집합, 여집합에 해당합니다.
  • 결과들이 똑같이 일어날 수 있을 때만 P(A)=∣A∣/∣Ω∣P(A)=|A|/|\Omega|로 경우의 수를 세어 확률을 구합니다.
  • P(Ac)=1−P(A)P(A^c)=1-P(A)이고, P(A∪B)=P(A)+P(B)−P(A∩B)P(A\cup B)=P(A)+P(B)-P(A\cap B)입니다. 배반이면 교집합의 확률이 0이지만, 교집합의 확률이 0이라고 언제나 배반인 것은 아닙니다.
  • 조건부확률 P(A∣B)=P(A∩B)/P(B)P(A\mid B)=P(A\cap B)/P(B)는 표본공간을 B로 줄여 계산하며, P(B)>0P(B)>0이어야 하고 P(B∣A)P(B\mid A)와 다를 수 있습니다.

연습 문제

1. 합사건과 곱사건

공정한 주사위에서 A를 "짝수", B를 "3의 배수"라 할 때 P(A∪B)P(A\cup B)와 P(A∩B)P(A\cap B)를 구하세요.

해설 보기

A={2,4,6}A=\{2,4,6\}, B={3,6}B=\{3,6\}이고 교집합은 {6}\{6\}이라 P(A∩B)=1/6P(A\cap B)=1/6입니다. 합집합은 {2,3,4,6}\{2,3,4,6\}이라 P(A∪B)=4/6=2/3P(A\cup B)=4/6=2/3입니다. 공식으로 계산해도 1/2 + 1/3 − 1/6 = 2/3으로 같습니다. 6을 두 번 세지 않도록 교집합을 한 번 빼는 것이 핵심입니다.

2. 첫 결과를 알 때

공정한 동전을 두 번 던졌고, 첫 결과가 앞면이라는 것을 압니다. 두 결과가 같을 조건부확률은 얼마인가요?

해설 보기

결과는 HH, HT, TH, TT의 네 가지이고 확률은 각각 1/4입니다. 조건을 만족하는 결과는 HH와 HT이고, 그 가운데 두 결과가 같은 것은 HH 하나이므로 답은 1/2입니다. 조건을 생각하지 않고 네 결과에서 같은 것 HH와 TT를 세어 1/2이라고 해도 우연히 값은 같지만, TT는 조건 밖이라 세면 안 되는 결과입니다. 조건에 맞는 결과부터 다시 나열하는 습관이 필요합니다.

3. 합을 알 때 같은 눈

두 주사위의 합이 8이라는 것을 알 때, 두 눈이 같을 확률은 얼마인가요?

해설 보기

합이 8인 결과는 (2, 6), (3, 5), (4, 4), (5, 3), (6, 2)의 다섯 가지이고, 그 가운데 두 눈이 같은 것은 (4, 4) 하나이므로 1/5입니다. 본문의 코드에서 합이 8인 사건을 만들어 given(doubles, ...)으로 계산해도 같은 값이 나옵니다. (3, 5)와 (5, 3)처럼 순서만 다른 결과를 하나로 보아 세 가지로 세면 1/3이 되는데, 순서만 다른 두 결과는 각각 따로 일어나므로 (4, 4)보다 두 배 자주 나옵니다. 똑같이 일어나는 결과로 세지 않았으므로 틀린 답입니다.

확률을 계산하기 전에 결과들이 똑같이 일어날 수 있는지, 조건의 확률이 0이 아닌지부터 확인해 보세요. 조건부확률을 더 읽고 싶다면 OpenStax의 조건부확률 설명을 참고할 수 있습니다. 다음 글 독립과 반복 시행에서는 첫 줄의 결과처럼 조건이 확률을 바꾸지 않는 독립을 다룹니다.