표본공간과 조건부확률
가능한 결과의 집합인 표본공간과 그 부분집합인 사건으로 확률을 정의하고, 경우의 수를 세어 확률을 구해도 되는 조건을 확인합니다. 여사건과 합사건의 확률, 배반과 확률 0의 차이, 조건을 알면 표본공간이 줄어드는 조건부확률을 두 주사위 예제로 계산합니다.
주사위를 던져 짝수가 나올 확률이 1/2이라는 것은 여섯 가지 결과 가운데 세 가지가 짝수이기 때문입니다. 하지만 결과의 개수를 세는 것만으로 확률이 되려면, 모든 결과가 똑같이 일어날 수 있어야 합니다. 이 글에서는 집합의 표현과 연산의 집합과 합과 곱의 법칙, 중복 세기의 세는 방법으로 확률을 정의하고, 무언가를 알게 되었을 때 확률이 어떻게 바뀌는지 다룹니다.
표본공간과 사건
시행에서 일어날 수 있는 모든 결과의 집합을 표본공간(sample space)이라 하고 Ω로 씁니다. 표본공간의 부분집합을 사건(event)이라고 합니다. 주사위 하나를 던지면 이고, "짝수가 나온다"는 사건은 입니다. 사건을 집합으로 보면 "A 또는 B"는 합집합 , "A이고 B"는 교집합 , "A가 아니다"는 여집합 가 됩니다.
유한 표본공간에서는 결과 ω마다 0 이상의 확률 를 주되 모두 더해 1이 되게 하고, 사건의 확률을 그 사건에 속한 결과들의 확률의 합으로 정합니다. 모든 결과의 확률이 같다면 이므로, 사건의 확률은 경우의 수의 비 가 됩니다. 이 식은 결과들이 똑같이 일어날 수 있다고 가정할 때만 쓸 수 있습니다. 한쪽으로 기운 주사위라면 결과마다 다른 확률을 더해야 합니다.
여사건과 합사건
정의에서 바로 몇 가지 성질이 나옵니다. 모든 사건 A에 대해 이고 입니다. A와 그 여사건은 겹치지 않고 합치면 Ω이므로 입니다. 두 사건의 합사건은 포함·배제와 같은 이유로 이고, 세 사건에서도 같은 모양의 식이 성립합니다.
두 사건이 동시에 일어날 수 없을 때, 곧 일 때 두 사건을 배반(mutually exclusive)이라고 합니다. 배반이면 교집합의 확률이 0이라서 입니다. 그러나 거꾸로 교집합의 확률이 0이라고 해서 언제나 배반인 것은 아닙니다. 에서 , 로 정하고 , 으로 두면, 교집합 은 비어 있지 않지만 확률은 0입니다. 모든 결과의 확률이 양수인 표본공간, 예를 들어 공정한 주사위에서는 교집합의 확률이 0이면 교집합이 비어 있으므로 배반이라고 말할 수 있습니다.
더 깊이: 여사건으로 푸는 생일 문제
"n명 가운데 생일이 같은 사람이 적어도 한 쌍 있다"는 사건은 같은 쌍이 한 쌍인 경우, 두 쌍인 경우, 세 명이 같은 경우처럼 갈래가 많아 직접 세기 어렵습니다. 여사건인 "모두 생일이 다르다"는 훨씬 세기 쉬우므로, 1년을 365일로 보고 날마다 생일일 확률이 같다고 가정해 이쪽을 셉니다. 첫 사람은 아무 날이나 되고, 둘째는 남은 364일, 셋째는 363일 가운데 하나여야 하므로 모두 다를 확률은 입니다.
이 값을 1에서 빼면 같은 생일이 있을 확률이 됩니다. MathWorld의 생일 문제에 따르면 이 확률이 처음으로 1/2을 넘는 것은 23명일 때로, 약 0.507입니다. 날짜가 365가지인데 23명만으로 반을 넘는 것은, 사람의 수가 아니라 비교할 쌍의 수 이 커지기 때문입니다.
같은 계산은 해시값이 겹치는 충돌이 일어날 확률을 어림할 때도 쓰입니다. 결과가 d가지인 해시에 값을 n개 넣으면 n이 대략 정도만 되어도 충돌이 생길 가능성이 커지며, 이를 생일 역설(birthday paradox)이라고 부릅니다.
조건을 알면 표본공간이 줄어든다
주사위를 던졌는데 4 이상이 나왔다는 것을 알았다고 합시다. 이제 가능한 결과는 4, 5, 6뿐이고, 그 가운데 짝수는 4와 6이므로 짝수일 확률은 2/3입니다. B가 일어났다는 것을 알 때 A의 확률을 조건부확률(conditional probability)이라 하고, 일 때 다음과 같이 정의합니다.
조건 B 안으로 표본공간을 줄이고, 그 안에서 A가 차지하는 비율을 구하는 것입니다. 짝수 세 개를 그대로 분자에 두면 조건 밖의 2까지 세게 되어 틀립니다. 정의를 바꾸어 쓰면 가 되어, 두 사건이 함께 일어날 확률을 차례로 계산할 수 있습니다. 두 주사위를 던지는 시행으로 몇 가지 조건부확률을 계산해 보겠습니다.
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 1omega는 두 주사위의 눈을 순서쌍으로 적은 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로 커집니다. 셋째 줄은 와 가 다를 수 있음을 보여 줍니다. 같은 눈이 나왔을 때 합이 12일 확률은 1/6이지만, 합이 12이면 반드시 (6, 6)이라 같은 눈일 확률은 1입니다. 조건부확률에서는 무엇이 조건인지를 바꾸면 안 됩니다.
정리
- 표본공간은 일어날 수 있는 모든 결과의 집합이고, 사건은 그 부분집합입니다. "또는", "그리고", "아니다"는 합집합, 교집합, 여집합에 해당합니다.
- 결과들이 똑같이 일어날 수 있을 때만 로 경우의 수를 세어 확률을 구합니다.
- 이고, 입니다. 배반이면 교집합의 확률이 0이지만, 교집합의 확률이 0이라고 언제나 배반인 것은 아닙니다.
- 조건부확률 는 표본공간을 B로 줄여 계산하며, 이어야 하고 와 다를 수 있습니다.
연습 문제
1. 합사건과 곱사건
공정한 주사위에서 A를 "짝수", B를 "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의 조건부확률 설명을 참고할 수 있습니다. 다음 글 독립과 반복 시행에서는 첫 줄의 결과처럼 조건이 확률을 바꾸지 않는 독립을 다룹니다.