콘텐츠로 이동

확률의 공리

앞 절에서 결과마다 무게를 달아 확률을 만들었다. 그런데 무게를 아무렇게나 달아도 되는가? 어떤 사건의 확률이 음수여도 괜찮은가? 겹치지 않는 두 사건의 확률을 더했더니 전체보다 커져도 괜찮은가?

그럴 리 없다. 무게가 지켜야 할 규칙은 놀랄 만큼 적다. 세 줄이면 충분하고, 확률론의 나머지는 전부 그 세 줄에서 따라 나온다. 1933년 콜모고로프가 정리한 이 세 줄을 확률의 공리라 한다.

이 절은 세 개의 정리로 이루어진다. 공리가 무엇인가(정리 1), 거기서 무엇이 따라 나오는가(정리 2), 그리고 왜 유한이 아니라 가산 무한까지 요구하는가(정리 3)이다.

1. 무게가 지켜야 할 최소한의 규칙

세 규칙은 모두 "무게" 그림에서 당연해 보이는 것들이다. 무게는 음수일 수 없고 전체보다 무거울 수도 없으며, 빈 것에는 무게가 없고 전체를 다 합치면 1이며, 겹치지 않는 덩어리는 따로 재서 더해도 된다.

정리 1. 콜모고로프 공리 — 범위·정규화·가산가법성

확률측도 \(P\)는 사건 위에 정의된 실숫값 함수로서 다음 셋을 만족한다.

\[ \begin{aligned} &\textbf{(1) 범위} && 0 \leq P(A) \leq 1 \quad \text{모든 사건 } A \text{에 대해} \\[4pt] &\textbf{(2) 정규화} && P(\emptyset) = 0, \quad P(\Omega) = 1 \\[4pt] &\textbf{(3) 가산가법성} && P\!\left(\bigcup_{i=1}^{\infty} A_i\right) = \sum_{i=1}^{\infty} P(A_i) \quad \text{서로소인 } A_1, A_2, \ldots \text{에 대해} \end{aligned} \]

공리에 적었지만 논리적으로는 빼도 되는 둘

위 목록에는 없어도 되는 것이 둘 들어 있다. 공리 (1)의 위쪽 부등호 \(P(A) \leq 1\)과 공리 (2)의 \(P(\emptyset) = 0\)이다. 이 둘은 나머지에서 유도된다. 따라서 둘을 지우고

\[ P(A) \ge 0, \qquad P(\Omega) = 1, \qquad \text{가산가법성} \]

셋만 남겨도 확률론은 그대로 서 있으며, 실제로 그렇게 적는 책이 많다. 그럼에도 적어 두는 것은 "확률은 0과 1 사이다", "빈 사건에는 무게가 없다"가 공리와 나란히 놓일 만큼 기본적인 사실이기 때문이다.

다만 무엇이 진짜 가정이고 무엇이 편의인지는 알고 있어야 한다. 두 증명 모두 서너 줄이면 끝나므로 연습문제 1에서 직접 해 보라. 둘 다 공집합으로 자리를 메워 공리 (3)을 쓰는 같은 수법이며, 전체 무게가 1로 유한하다는 점이 결정적으로 쓰인다.

먼저 \(P\)가 함수라는 점을 분명히 해 두자. 함수에는 정의역과 공역이 있어야 하는데, \(P\)의 정의역은 수가 아니라 사건이다.

\[ A \;\longmapsto\; P(A), \qquad A \subseteq \Omega, \quad P(A) \in [0, 1] \]

집합을 넣으면 수가 나온다. 앞 절의 벽돌 그림으로 말하면 \(P\)는 "사건에 속한 벽돌들의 무게를 재는 저울"이고, 그래서 정의역이 \(\Omega\)가 아니라 \(\Omega\)의 부분집합들의 모임이다. 이 모임이 정확히 무엇이어야 하는지는 연습문제 11에서 다룬다.

공리 (3)에서 합집합이 무한하다는 점이 핵심이다. 서로 배반인 두 사건에 대한 익숙한 규칙

\[ P(A \cup B) = P(A) + P(B) \qquad (A \cap B = \emptyset) \]

은 나머지를 모두 공집합으로 두면 나오는 특수한 경우다.

보기 1. 짝수 또는 홀수. 공정한 주사위에서 \(A = \{2,4,6\}\), \(B = \{1,3,5\}\)라 하자. \(A \cap B = \emptyset\)이므로

풀이
\[ P(A \cup B) = P(A) + P(B) = \tfrac{3}{6} + \tfrac{3}{6} = 1 \]

이고, \(A \cup B = \Omega\)이므로 정규화 공리와 어긋나지 않는다.

공리는 확률이 무엇인지 말하지 않는다

공리는 확률이 지켜야 할 문법만 정한다. 그 수를 무엇으로 읽을지는 공리 바깥의 문제이며, 크게 두 갈래가 있다.

  • 빈도로 읽기. "내일 비 올 확률 0.7"은 같은 기상 조건의 날 10일 중 약 7일에 비가 온다는 뜻이다. 반복 가능한 실험에 자연스럽다.
  • 믿음의 정도로 읽기. "이 후보가 당선될 확률 0.7"은 반복할 수 없는 사건이다. 여기서 0.7은 내가 가진 확신의 크기이며, 새 정보가 오면 갱신된다(베이즈 정리).

두 해석은 같은 공리를 쓰므로 계산 규칙이 완전히 같다. 갈리는 것은 계산이 아니라 무엇에 확률을 붙일 수 있는가이다.

보기 2. 콜모고로프 공리를 수치로 확인하기. 주사위 두 개의 무게 목록을 놓는다. 공정한 쪽은 \((\tfrac16, \ldots, \tfrac16)\)이고 기운 쪽은 \((0.1, 0.1, 0.1, 0.1, 0.1, 0.5)\)다.

(1) 결과마다 무게 \(p_1, \ldots, p_6 \ge 0\)을 달고 \(P(A) = \sum_{i \in A} p_i\)로 정의하면 공리 (3)이 저절로 성립함을 보이시오. 그래서 코드가 확인할 것이 둘뿐인 까닭을 말하시오.

(2) 기운 주사위에서 \(P(\text{짝수})\)와 그 여집합의 확률을 공리만으로 계산하고, 두 목록이 공리를 만족하는지 코드로 확인하시오.

풀이

(1) 가법성은 가정이 아니라 합의 성질이다. 무게 목록 \(p_1, \ldots, p_6\)에서 출발해 \(P(A) = \sum_{i \in A} p_i\)로 정의했다고 하자. \(A\)와 \(B\)가 서로소이면 \(A \cup B\)에 속한 첨자의 모임은 \(A\)의 첨자와 \(B\)의 첨자를 겹침 없이 이어 붙인 것이므로

\[ P(A \cup B) = \sum_{i \in A \cup B} p_i = \sum_{i \in A} p_i + \sum_{i \in B} p_i = P(A) + P(B) \]

이다. 유한개든 가산무한개든 같다. 항이 모두 음이 아니어서 급수가 절대수렴하므로 항의 순서를 바꾸어 묶어도 합이 변하지 않기 때문이다. \(P(\emptyset) = 0\)도 같은 자리에서 나온다. 공집합에 속한 첨자가 하나도 없으므로 빈 합, 곧 \(0\)이다.

그러므로 무게로 확률을 만드는 순간 공리 (3)과 \(P(\emptyset) = 0\)은 공짜로 따라온다. 남는 것은 무게 자체에 대한 두 조건뿐이다.

\[ p_i \ge 0 \ \text{(모든 } i\text{)}, \qquad \sum_{i=1}^{6} p_i = 1 \]

코드의 단언문이 정확히 이 둘이고, 셋째 공리에 주석만 달려 있는 이유가 이것이다.

(2) 기운 주사위. 짝수는 \(\{2, 4, 6\}\)이므로 무게를 더하면 된다.

\[ P(\{2,4,6\}) = 0.1 + 0.1 + 0.5 = 0.7 \]

여집합은 정리 2의 여집합 규칙으로 \(1 - 0.7 = 0.3\)이고, 직접 더해도 \(0.1 + 0.1 + 0.1 = 0.3\)으로 같다. 둘의 합이 \(1\)인 것이 정규화 공리다.

import numpy as np

def verify_axioms(probabilities):
    """이산 확률분포가 콜모고로프의 세 공리를 만족하는지 확인한다."""
    # 공리 1: 확률은 0 과 1 사이다
    assert all(0 <= p <= 1 for p in probabilities), "Range violated"

    # 공리 2: 전체 확률이 1 이다
    #   P(공집합) = 0 은 따로 확인할 것이 없다. 공집합에 속한 결과가 하나도
    #   없으므로 무게의 합이 빈 합, 즉 0 이기 때문이다.
    total = sum(probabilities)
    assert np.isclose(total, 1.0), f"Normalization violated: total = {total}"

    # 공리 3: 서로소 사건의 확률은 더해진다(만드는 방식으로 이미 보장된다)
    print("All axioms satisfied!")
    print(f"  Total probability: {total:.4f}")
    print(f"  Min probability:   {min(probabilities):.4f}")
    print(f"  Max probability:   {max(probabilities):.4f}")

# 공정한 주사위
fair_die = [1/6] * 6
verify_axioms(fair_die)

# 한쪽으로 기운 주사위
loaded_die = [0.1, 0.1, 0.1, 0.1, 0.1, 0.5]
verify_axioms(loaded_die)

# 사건의 확률은 무게를 더한 것이다. 짝수는 {2, 4, 6} 이므로 2, 4, 6번 칸.
for name, probs in [("fair  ", fair_die), ("loaded", loaded_die)]:
    p_even = probs[1] + probs[3] + probs[5]
    print(f"{name}: P(even) = {p_even:.4f},  P(odd) = {1 - p_even:.4f},"
          f"  sum = {p_even + (1 - p_even):.4f}")

출력:

All axioms satisfied!
  Total probability: 1.0000
  Min probability:   0.1667
  Max probability:   0.1667
All axioms satisfied!
  Total probability: 1.0000
  Min probability:   0.1000
  Max probability:   0.5000
fair  : P(even) = 0.5000,  P(odd) = 0.5000,  sum = 1.0000
loaded: P(even) = 0.7000,  P(odd) = 0.3000,  sum = 1.0000

손으로 더한 \(0.7\)과 \(0.3\)이 코드의 마지막 줄과 같고, 두 목록 모두 단언문을 통과했다. 두 길이 맞는다.

찌그러진 주사위도 공리를 만족한다는 점에 주목하라. 공리는 확률이 공정할 것을 요구하지 않는다. 기운 쪽의 무게가 \(0.1\)에서 \(0.5\)까지 다섯 배 차이 나지만 음이 아니고 합이 \(1\)이면 그것으로 충분하다. 공리가 걸러 내는 것은 "불공정한 주사위"가 아니라 "무게가 음수이거나 합이 \(1\)이 아닌 목록"이다.

2. 세 줄에서 나머지가 따라 나온다

공리가 세 줄뿐이라는 것은 인색해 보이지만, 실제로 쓰는 규칙들이 전부 여기서 유도된다. 아래 다섯 가지는 확률 계산에서 거의 매번 쓰이는 것들이다.

정리 2. 공리의 따름정리 — 유한가법성·여집합·단조성·포함배제·본페로니

임의의 사건 \(A, B, A_1, \ldots, A_n\)에 대해 다음이 성립한다.

\[ \begin{aligned} &\textbf{유한가법성} && P\!\left(\bigcup_{i=1}^{n} A_i\right) = \sum_{i=1}^{n} P(A_i) \quad \text{서로소인 } A_1, \ldots, A_n \text{에 대해} \\[4pt] &\textbf{여집합} && P(A^c) = 1 - P(A) \\[4pt] &\textbf{단조성} && A \subseteq B \;\Longrightarrow\; P(A) \leq P(B) \\[4pt] &\textbf{포함배제} && P(A \cup B) = P(A) + P(B) - P(A \cap B) \\[4pt] &\textbf{본페로니} && \sum_{i=1}^{n} P(A_i) - \sum_{i<j} P(A_i \cap A_j) \;\leq\; P\!\left(\bigcup_{i=1}^{n} A_i\right) \;\leq\; \sum_{i=1}^{n} P(A_i) \end{aligned} \]

다섯 중 뒤의 셋은 그림 한 장으로 먼저 보아 두는 편이 낫다. 앞 절 표본공간과 사건의 상자 그림을 그대로 쓴다. 바깥 상자가 \(\Omega\)이고 안의 도형이 사건이며, 도형의 넓이가 확률이라고 읽으면 된다.

공리의 따름정리 — 여집합, 단조성, 포함배제

여집합은 상자를 도형과 나머지 둘로 가른 것이다. 둘은 서로소이고 합이 \(\Omega\)이므로 넓이의 합이 1이다. 단조성은 작은 도형이 큰 도형 안에 들어 있으면 넓이도 작다는 말이다. 차이 \(B \setminus A\)의 넓이가 음수일 수 없다는 것이 증명의 전부다. 포함배제는 겹친 부분이 두 번 칠해졌으니 한 번 지우라는 말이다. 오른쪽 그림의 가운데 렌즈 모양이 \(P(A) + P(B)\)에서 두 번 세어진 부분이다.

다섯 가지가 나오는 순서가 있다. 앞의 것이 뒤의 것의 재료가 되므로 그 차례대로 보자.

유한가법성은 공집합으로 자리를 메워 얻는다. 공리 (3)은 무한 열에 대한 진술인데, 유한개만 있을 때는 \(A_{n+1} = A_{n+2} = \cdots = \emptyset\)으로 두면 된다. 서로소 조건이 그대로 유지되므로

\[ P\!\left(\bigcup_{i=1}^{n} A_i\right) \overset{(3)}{=} \sum_{i=1}^{\infty} P(A_i) = \sum_{i=1}^{n} P(A_i) \]

이다. 마지막 등호에서 꼬리 항이 사라지는 것이 공리 (2)의 \(P(\emptyset) = 0\)이다. 유한가법성이 가산가법성의 특수한 경우라는 말의 내용이 이것이며, 공집합을 공리에 함께 적어 둔 덕을 여기서 바로 본다.

여집합과 단조성은 유한가법성의 두 줄짜리 따름이다(연습문제 2, 5). 특히 단조성에 \(A \subseteq \Omega\)를 넣으면 \(P(A) \leq 1\)이 다시 나온다. 공리 (1)에 적어 둔 상한과 같은 결론이며, 앞의 주석에서 그 부등호를 빼도 된다고 한 이유가 여기서 한 번 더 확인된다. 공리에 적혀 있다고 해서 가정이라는 뜻은 아니다.

포함배제는 "겹치는 부분을 두 번 세지 말라"는 말이다. \(P(A) + P(B)\)는 \(A \cap B\)를 두 번 세므로 한 번 빼 준다(연습문제 3). 사건이 셋이면 두 번 뺀 것을 한 번 되돌려 주어야 한다.

\[ \begin{aligned} P(A \cup B \cup C) = {}& P(A) + P(B) + P(C) \\ &- P(A \cap B) - P(B \cap C) - P(C \cap A) \\ &+ P(A \cap B \cap C) \end{aligned} \]

부호가 \(+, -, +\)로 번갈아 나타나고, \(n\)개로 가면 마지막 항이 \(\pm P(A_1 \cap \cdots \cap A_n)\)까지 이어진다.

본페로니 부등식은 그 번갈아 나오는 급수를 중간에서 자른 것이다. 첫 항에서 자르면 상한, 둘째 항에서 자르면 하한이 된다.

\[ \underbrace{\sum_i P(A_i) - \sum_{i<j} P(A_i \cap A_j)}_{\text{둘째 항까지 — 하한}} \;\leq\; P\!\left(\bigcup_i A_i\right) \;\leq\; \underbrace{\sum_i P(A_i)}_{\text{첫 항만 — 상한}} \]

자르는 위치를 뒤로 밀수록 상한과 하한이 번갈아 나오며 참값을 조여 온다. 그 일반형과 수치 확인은 연습문제 8에 있다.

실무에서 압도적으로 많이 쓰이는 것은 위쪽, 즉 겹침을 아예 모를 때 쓰는 상한이다. 9장의 다중검정에서 이 부등식이 결정적으로 쓰인다. 수준 \(\alpha\)로 \(n\)번 검정하면 적어도 한 번 잘못 기각할 확률이 \(n\alpha\) 이하이므로, 각 검정을 \(\alpha/n\)으로 하면 전체 오류율이 \(\alpha\) 아래로 묶인다. 의존 구조를 몰라도 언제나 성립한다는 것이 이 부등식의 힘이다.

3. 유한이 아니라 무한까지 요구하는 이유

공리 (3)에서 유한 합집합만 요구해도 위의 따름정리는 전부 나온다. 그렇다면 왜 굳이 무한까지 요구할까?

정리 3. 가산가법성과 측도의 연속성 — 극한을 확률 안으로 들여오기

가산가법성은 확률에 극한을 취할 권리를 준다. 사건들이 커지며 쌓여 갈 때

\[ A_1 \subseteq A_2 \subseteq A_3 \subseteq \cdots, \qquad A = \bigcup_{n=1}^{\infty} A_n \]

이면

\[ P(A) = \lim_{n \to \infty} P(A_n) \]

이 성립한다. 이를 측도의 연속성이라 한다.

증명

쌓여 가는 사건열을 서로소인 껍질로 쪼갠다. \(C_1 = A_1\), 그리고 \(n \geq 2\)에 대해

\[ C_n = A_n \setminus A_{n-1} \]

이라 두자. \(A_1 \subseteq A_2 \subseteq \cdots\)이므로 \(C_1, C_2, \ldots\)는 서로소이고

\[ \bigcup_{i=1}^{n} C_i = A_n, \qquad \bigcup_{i=1}^{\infty} C_i = A \]

이다. 공리 (3)을 오른쪽 등식에, 유한가법성을 왼쪽 등식에 적용하면

\[ P(A) = \sum_{i=1}^{\infty} P(C_i) = \lim_{n \to \infty} \sum_{i=1}^{n} P(C_i) = \lim_{n \to \infty} P(A_n) \]

을 얻는다. 가운데 등호는 무한급수가 부분합의 극한이라는 정의 그대로다. \(\square\)

줄어드는 사건열 \(B_1 \supseteq B_2 \supseteq \cdots\)에 대해서는 여집합을 취해 \(A_n = B_n^c\)로 두면 위 결과가 그대로 적용되어 \(P(\bigcap_n B_n) = \lim_n P(B_n)\)을 준다. 연습문제 9의 보렐–칸텔리 보조정리가 이 형태를 쓴다.

유한 가법성만으로는 이 성질이 보장되지 않으며, 그 대가가 크다.

  • 극한정리를 쓸 수 없다. 큰수의 법칙은 "거의 확실한 수렴"을 말하는데, 이는 가산 개의 사건에 대한 진술이다.
  • 연속분포를 만들 수 없다. 구간을 무한히 잘게 쪼개어 확률을 부여하는 일이 가산 연산이다.
  • 역설이 들어온다. 유한 가법성만 요구하면 정수 전체 위의 "균등분포" 같은 것이 허용되는데, 이는 가산가법성과 양립하지 않는다.

콜모고로프가 가산가법성을 택한 이유가 이것이다. 확률론을 측도론과 같은 언어로 쓸 수 있게 되고, 그 순간 해석학의 도구 전체를 가져다 쓸 수 있게 된다.

확률 0과 불가능은 다르다

유한한 표본공간에서는 \(P(A) = 0\)과 \(A = \emptyset\)이 같다. 보통의 주사위에서 7이 나올 확률이 0인 것은 7이 애초에 표본공간에 없기 때문이다.

그러나 표본공간이 연속이면 둘이 갈린다. \([0,1]\)에서 균등하게 수를 뽑을 때 \(P(\{0.5\}) = 0\)이지만 \(0.5\)가 나오는 것이 불가능하지는 않다. 자세한 논의는 앞 절 표본공간과 사건의 정리 3에 있다.

이 구별이 가능해진 것도 가산가법성 덕분이다. 확률 0인 사건을 가산 개 모아도 여전히 확률 0이라는 사실이 "거의 확실하게"라는 개념을 떠받친다.

연습문제

연습문제 1. 정리 1의 공리 목록에는 없어도 되는 것이 둘 있다. 공리 (1)의 위쪽 부등호 \(P(A) \leq 1\)과 공리 (2)의 \(P(\emptyset) = 0\)이다. 나머지 셋 — \(P(A) \geq 0\), \(P(\Omega) = 1\), 가산가법성 — 만으로 이 둘을 각각 증명하라. 그리고 어느 단계에서 전체 무게가 유한하다는 사실이 쓰이는지 밝혀라.

풀이

(가) \(P(\emptyset) = 0\). \(\emptyset \cap \emptyset = \emptyset\)이므로 공집합은 자기 자신과도 서로소다. 따라서

\[ \Omega = \Omega \cup \emptyset \cup \emptyset \cup \cdots \]

는 서로소인 가산 합집합이고, 가산가법성에 의해

\[ P(\Omega) = P(\Omega) + \sum_{j=1}^{\infty} P(\emptyset) \]

이다. \(P(\Omega) = 1\)은 유한하므로 양변에서 지울 수 있어 \(\sum_j P(\emptyset) = 0\)이고, 각 항이 \(0\) 이상이니 \(P(\emptyset) = 0\)이다. \(\square\)

(나) \(P(A) \leq 1\). \(A\)와 \(A^c\)는 서로소이고, 나머지 자리를 공집합으로 채우면

\[ \Omega = A \cup A^c \cup \emptyset \cup \emptyset \cup \cdots \]

이므로 가산가법성과 (가)의 \(P(\emptyset) = 0\)에 의해

\[ 1 = P(\Omega) = P(A) + P(A^c) \]

이다. \(P(A^c) \geq 0\)이므로 \(P(A) = 1 - P(A^c) \leq 1\)이다. \(\square\)

순환이 아님을 확인하라. (나)는 \(P(A^c) \geq 0\)만 쓴다. 즉 공리 (1)의 아래쪽 부등호만 쓰고 증명하려는 위쪽은 쓰지 않는다. (가)도 마찬가지다.

유한성이 쓰이는 곳. (가)에서 \(P(\Omega)\)를 양변에서 지우는 단계다. \(P(\Omega) = \infty\)라면 \(\infty = \infty + c\)가 모든 \(c\)에 대해 성립하므로 아무것도 결론 낼 수 없다.

그래서 두 조건의 지위가 같지 않다. 일반 측도론에서는 \(\mu(\Omega) = \infty\)가 허용되어 (가)의 소거를 할 수 없고, 그래서 \(\mu(\emptyset) = 0\)을 측도의 정의에 넣는다. 반면 상한은 측도론에 아예 없는 조건이다. \(\mu(A) \leq 1\)은 전체 무게를 1로 못박은 확률에만 있는 것이다. 둘 다 편의로 적어 두었지만, 측도의 정의와 모양이 맞는 쪽은 \(P(\emptyset) = 0\) 하나다.

연습문제 2. 확률의 세 공리만을 사용해 임의의 사건 \(A\)에 대해 \(P(A^c) = 1 - P(A)\)임을 증명하라.

풀이

\(A\)와 \(A^c\)는 서로 배반이고 \(A \cup A^c = \Omega\)이므로 가법성 공리에 의해

\[ P(A \cup A^c) = P(A) + P(A^c) \]

이다. 정규화 공리에 의해 \(P(\Omega) = 1\)이므로

\[ 1 = P(A) + P(A^c) \]

이고, 정리하면

\[ P(A^c) = 1 - P(A) \]

이다. \(\square\)

연습문제 3. 공리로부터 임의의 두 사건 \(A\)와 \(B\)에 대해 다음이 성립함을 증명하라.

\[ P(A \cup B) = P(A) + P(B) - P(A \cap B) \]
풀이

\(A \cup B\)를 서로소인 합집합으로 쓴다. \(A \cup B = A \cup (B \cap A^c)\)이고 \(A\)와 \(B \cap A^c\)는 서로소임에 유의하라. 가법성 공리에 의해

\[ P(A \cup B) = P(A) + P(B \cap A^c) \]

이다. 마찬가지로 \(B = (B \cap A) \cup (B \cap A^c)\)도 서로소인 합집합이므로

\[ P(B) = P(B \cap A) + P(B \cap A^c) \]

이고, \(P(B \cap A^c)\)에 대해 풀면

\[ P(B \cap A^c) = P(B) - P(A \cap B) \]

이다. 이를 대입하면

\[ P(A \cup B) = P(A) + P(B) - P(A \cap B) \]

를 얻는다. \(\square\)

연습문제 4. 어떤 학생이 \(P(A) = 0.4\), \(P(B) = 0.5\), \(P(A \cup B) = 0.8\)이라고 주장한다. 다른 학생은 \(P(A) = 0.7\), \(P(B) = 0.6\), \(P(A \cap B) = 0.1\)이라고 주장한다. 각 배정이 공리와 모순되지 않는지 판정하라.

풀이

첫 번째 학생: 포함배제를 쓰면 \(P(A \cap B) = P(A) + P(B) - P(A \cup B) = 0.4 + 0.5 - 0.8 = 0.1\)이다. \(0 \leq 0.1 \leq \min(0.4, 0.5)\)이고 모든 확률이 \([0,1]\)에 있으므로 이 배정은 공리와 모순되지 않는다.

두 번째 학생: \(P(A \cup B) = P(A) + P(B) - P(A \cap B) = 0.7 + 0.6 - 0.1 = 1.2\)여야 한다. 그러나 정규화 공리는 \(P(A \cup B) \leq P(\Omega) = 1\)을 요구한다. \(1.2 > 1\)이므로 이 배정은 공리를 위반하며 따라서 불가능하다.

연습문제 5. 공리를 사용해 \(A \subseteq B\)이면 \(P(A) \leq P(B)\)임을(확률의 단조성) 증명하라.

풀이

\(A \subseteq B\)이므로 \(B = A \cup (B \cap A^c)\)로 쓸 수 있고, \(A\)와 \(B \cap A^c\)는 서로소다. 가법성 공리에 의해

\[ P(B) = P(A) + P(B \cap A^c) \]

이다. 공리 (1)에 의해 \(P(B \cap A^c) \geq 0\)이므로

\[ P(B) = P(A) + P(B \cap A^c) \geq P(A) \]

이다. \(\square\)

연습문제 6. 본페로니 부등식. 임의의 사건 \(A_1, \ldots, A_n\)에 대해 \(P(\bigcup_i A_i) \le \sum_i P(A_i)\)임을 증명하라. 이것은 언제 유용한가?

풀이

\(n\)에 대한 귀납법으로 증명한다. 기저 단계 \(n = 1\): 자명하게 \(P(A_1) \le P(A_1)\)이다.

귀납 단계: \(P(\bigcup_{i=1}^k A_i) \le \sum_{i=1}^k P(A_i)\)라고 가정하자. 포함배제에 의해

\[ P(A_1 \cup \cdots \cup A_{k+1}) = P(\bigcup_{i=1}^k A_i) + P(A_{k+1}) - P((\bigcup_{i=1}^k A_i) \cap A_{k+1}) \]

이고 마지막 항이 음이 아니므로

\[ P(\bigcup_{i=1}^{k+1} A_i) \le P(\bigcup_{i=1}^k A_i) + P(A_{k+1}) \le \sum_{i=1}^k P(A_i) + P(A_{k+1}) = \sum_{i=1}^{k+1} P(A_i) \]

이다. \(\square\)

용도: 다중비교에서 각각 수준 \(\alpha\)로 \(n\)번의 가설검정을 수행한다고 하자. 적어도 한 번 잘못 기각할 확률은 본페로니에 의해 \(P(\bigcup_i \text{Reject}_i \mid H_0) \le n\alpha\)다. 따라서 수준 \(\alpha/n\)으로 검정하면 가족단위 오류율이 \(\le \alpha\)가 된다. 본페로니 보정은 보수적이지만 의존 구조와 무관하게 언제나 타당하다.

연습문제 7. \(\sigma\)-가법성 대 유한 가법성. 차이를 진술하고 측도론적 확률이 왜 더 강한 성질을 요구하는지 설명하라.

풀이

유한 가법성: 서로소인 (유한 모임) \(A_1, \ldots, A_n\)에 대해 \(P(\bigcup_{i=1}^n A_i) = \sum_{i=1}^n P(A_i)\).

\(\sigma\)-가법성(가산가법성, 콜모고로프의 공리 3): 서로소인 사건의 가산무한 열 \(A_1, A_2, \ldots\)에 대해 \(P(\bigcup_{i=1}^\infty A_i) = \sum_{i=1}^\infty P(A_i)\).

왜 \(\sigma\)-가법성인가? 유용한 여러 결과가 이를 필요로 한다.

  • 측도의 연속성: \(A_1 \subseteq A_2 \subseteq \ldots\)이고 \(A = \bigcup A_n\)이면 \(P(A) = \lim P(A_n)\)이다. 극한정리에 결정적이다.
  • 확률밀도의 존재: 연속분포를 정의하려면 임의로 잘게 나눈 부분들에 확률을 부여해야 하는데, 이는 가산 연산이다.
  • 강한 큰수의 법칙: 가산 합집합으로 정의되는 거의 확실한 수렴을 필요로 한다.

유한 가법성만으로는 역설적인 배정이 허용된다(예: 직관적이지만 \(\sigma\)-가법적이지 않은 정수 위의 "균등" 분포). 콜모고로프는 이런 것들을 배제하고 확률을 측도론과 연결하기 위해 \(\sigma\)-가법성을 택했다.

연습문제 8. 연습문제 6의 본페로니 부등식은 포함배제 공식을 첫 항에서 자른 것이다. 더 자르면 어떻게 되는가? 절단 차수에 따라 상계와 하계가 번갈아 나옴을 보이고 수치로 확인하라.

풀이

포함배제 공식은

\[ P\!\left(\bigcup_{i=1}^n A_i\right) = \sum_i P(A_i) - \sum_{i<j} P(A_i \cap A_j) + \sum_{i<j<k} P(A_i \cap A_j \cap A_k) - \cdots \]

이다. 보네페로니 부등식(일반화된 본페로니)은 이 급수를 \(m\)번째 항에서 자르면

\[ m \text{ 이 홀수} \;\Rightarrow\; \text{부분합} \ge P\!\left(\bigcup A_i\right), \qquad m \text{ 이 짝수} \;\Rightarrow\; \text{부분합} \le P\!\left(\bigcup A_i\right) \]

임을 말한다. \(m = 1\)인 경우가 연습문제 6의 본페로니 부등식이다.

import numpy as np
from itertools import combinations

rng = np.random.default_rng(0)
N, n = 400_000, 5
p = rng.uniform(0.15, 0.4, n)
X = rng.random((N, n)) < p                    # 독립인 다섯 사건

truth = np.mean(X.any(axis=1))
print(f"참 P(합집합) = {truth:.6f}\n")

terms = []
for k in range(1, n + 1):
    terms.append(sum(np.mean(X[:, list(c)].all(axis=1))
                     for c in combinations(range(n), k)))

print(f"{'절단 차수 m':>12}{'부분합':>12}{'관계':>10}{'오차':>12}")
partial = 0.0
for k in range(1, n + 1):
    partial += (-1) ** (k + 1) * terms[k - 1]
    rel = "상계" if k % 2 == 1 else "하계"
    print(f"{k:>12}{partial:>12.6f}{rel:>10}{partial - truth:>+12.6f}")

출력:

참 P(합집합) = 0.752478

     절단 차수 m         부분합        관계          오차
           1    1.194400        상계   +0.441922
           2    0.641637        하계   -0.110840
           3    0.765327        상계   +0.012850
           4    0.751905        하계   -0.000573
           5    0.752477        상계   -0.000000

부분합이 참값을 번갈아 넘나들며 조여 온다.

\(m\) 부분합 오차
\(1\) \(1.194\) \(+0.442\) (상계)
\(2\) \(0.642\) \(-0.111\) (하계)
\(3\) \(0.765\) \(+0.013\) (상계)
\(4\) \(0.752\) \(-0.0006\) (하계)
\(5\) \(0.752477\) \(0\) (정확 — 부동소수 오차만 남는다)

\(m = 1\)일 때 \(1.194\)로 \(1\)을 넘는 것에 주목하라. 본페로니 상계는 확률이 아닐 수 있다. 그래도 부등식으로는 유효하며, 다만 그 경우 아무 정보도 주지 못한다.

왜 유용한가.

  • \(m = 2\)에서 이미 쓸 만한 하계를 얻는다. 항의 개수가 \(\binom{n}{1} + \binom{n}{2}\)로 전체 \(2^n - 1\)보다 훨씬 적다.
  • \(n\)이 크면 포함배제를 끝까지 계산할 수 없다. \(n = 30\)이면 항이 \(10\)억 개가 넘는다. 절단이 실용적 유일한 방법이다.
  • 다중검정 보정의 근거가 \(m=1\) 본페로니다. 1장 절충 문서 연습문제 8에서 본 그 부등식이며, 보수적인 이유가 여기서 분명해진다. 첫 항만 쓰므로 겹침을 전혀 반영하지 않는다. \(\square\)

연습문제 9. 정리 \(3\)의 측도의 연속성을 응용하라. 보렐–칸텔리 보조정리를 진술하고 수치로 확인하라.

풀이

사건열 \(A_1, A_2, \ldots\)에 대해 "무한히 자주 일어난다"는 사건을

\[ \{A_n \text{ i.o.}\} = \bigcap_{m=1}^\infty \bigcup_{n \ge m} A_n \]

로 정의한다. 측도의 연속성이 이 무한 연산을 다룰 수 있게 해 준다.

제\(1\) 보조정리. \(\sum_n P(A_n) < \infty\)이면 \(P(A_n \text{ i.o.}) = 0\)이다.

증명 스케치. \(B_m = \bigcup_{n \ge m} A_n\)이라 하면 \(B_m\)은 감소열이고 \(\bigcap_m B_m = \{A_n \text{ i.o.}\}\)이다. 정리 \(3\)의 위에서의 연속성으로

\[ P(A_n \text{ i.o.}) = \lim_m P(B_m) \le \lim_m \sum_{n\ge m} P(A_n) = 0 \]

이다. 마지막 등호는 수렴하는 급수의 꼬리가 \(0\)으로 가기 때문이다. \(\square\)

제\(2\) 보조정리. \(A_n\)이 독립이고 \(\sum_n P(A_n) = \infty\)이면 \(P(A_n \text{ i.o.}) = 1\)이다.

import numpy as np

rng = np.random.default_rng(0)
window = np.arange(5000, 10_000)

for label, p_fn in [("p_n = 1/n^2  (합이 수렴)", lambda n: 1 / n ** 2),
                    ("p_n = 1/n    (합이 발산)", lambda n: 1 / n)]:
    p = p_fn(window)
    hits = np.mean([(rng.random(len(window)) < p).any() for _ in range(300)])
    print(f"{label}")
    print(f"  구간 합 = {p.sum():.4f}")
    print(f"  이 구간에서 한 번이라도 일어날 확률: 모의 {hits:.4f}, "
          f"이론 {1 - np.exp(-p.sum()):.4f}\n")

출력:

p_n = 1/n^2  (합이 수렴)
  구간 합 = 0.0001
  이 구간에서 한 번이라도 일어날 확률: 모의 0.0000, 이론 0.0001

p_n = 1/n    (합이 발산)
  구간 합 = 0.6932
  이 구간에서 한 번이라도 일어날 확률: 모의 0.5100, 이론 0.5000

\(p_n = 1/n^2\)이면 \(n \ge 5000\) 구간 전체에서 사건이 일어날 확률이 \(0.0001\)에 불과하다. 꼬리 합이 \(0\)으로 가므로 결국 아무 일도 일어나지 않는다.

\(p_n = 1/n\)이면 같은 구간에서 확률이 \(0.51\)이다. 그리고 구간을 뒤로 옮겨도 그 확률이 \(0\)으로 가지 않는다(\(\sum 1/n\)이 발산하므로). 그래서 무한히 자주 일어난다.

왜 이것이 중요한가.

  • 큰수의 강법칙 증명의 핵심 도구다. "거의 확실한 수렴"을 다루려면 무한히 많은 사건의 극한을 확률로 계산해야 하는데, 그것이 정확히 측도의 연속성이 하는 일이다.
  • 유한 가법성만으로는 불가능하다. 연습문제 7의 답이 여기서 구체화된다. \(\{A_n \text{ i.o.}\}\)는 가산 무한 번의 합집합과 교집합으로 만들어지므로, 가산가법성이 없으면 이 사건에 확률을 부여할 수조차 없다.
  • 두 보조정리의 비대칭. 제\(1\)은 독립을 요구하지 않지만 제\(2\)는 요구한다. 독립이 없으면 \(\sum P(A_n) = \infty\)여도 \(P(A_n \text{ i.o.}) = 0\)일 수 있다(예: 모든 \(A_n\)이 같은 사건). \(\square\)

연습문제 10. 가산가법성이 무엇을 금지하는지 보여라. 자연수 전체에 "균등한" 확률을 줄 수 있는가?

풀이

불가능하다. 각 자연수에 같은 확률 \(c\)를 준다고 하자. 가산가법성에 의해

\[ 1 = P(\mathbb{N}) = P\!\left(\bigcup_{n=1}^\infty \{n\}\right) = \sum_{n=1}^\infty c \]

인데, \(c > 0\)이면 우변이 \(\infty\)이고 \(c = 0\)이면 \(0\)이다. 어느 쪽도 \(1\)이 될 수 없다. \(\square\)

import numpy as np

print("자연수에 균등 확률을 주려는 시도")
for c in (1e-3, 1e-6, 1e-9, 0.0):
    # 앞의 N 개만 더해도 발산하거나 0 이다
    for N in (10 ** 3, 10 ** 6, 10 ** 9):
        print(f"  c={c:.0e}, 앞 {N:.0e}개의 합 = {c * N:.3e}", end="")
        if c * N > 1:
            print("   → 이미 1 을 넘었다")
            break
        print()
    if c == 0:
        print("  c=0 이면 전체 합이 0")
print("\n어떤 c 도 합을 정확히 1 로 만들 수 없다")

print("\n반면 유한집합에서는 문제가 없다")
for N in (10, 1000, 10 ** 6):
    print(f"  {N}개 원소에 각 1/{N}: 합 = {N * (1 / N):.1f}")

출력:

자연수에 균등 확률을 주려는 시도
  c=1e-03, 앞 1e+03개의 합 = 1.000e+00
  c=1e-03, 앞 1e+06개의 합 = 1.000e+03   → 이미 1 을 넘었다
  c=1e-06, 앞 1e+03개의 합 = 1.000e-03
  c=1e-06, 앞 1e+06개의 합 = 1.000e+00
  c=1e-06, 앞 1e+09개의 합 = 1.000e+03   → 이미 1 을 넘었다
  c=1e-09, 앞 1e+03개의 합 = 1.000e-06
  c=1e-09, 앞 1e+06개의 합 = 1.000e-03
  c=1e-09, 앞 1e+09개의 합 = 1.000e+00
  c=0e+00, 앞 1e+03개의 합 = 0.000e+00
  c=0e+00, 앞 1e+06개의 합 = 0.000e+00
  c=0e+00, 앞 1e+09개의 합 = 0.000e+00
  c=0 이면 전체 합이 0

어떤 c 도 합을 정확히 1 로 만들 수 없다

반면 유한집합에서는 문제가 없다
  10개 원소에 각 1/10: 합 = 1.0
  1000개 원소에 각 1/1000: 합 = 1.0
  1000000개 원소에 각 1/1000000: 합 = 1.0

유한 가법성만 요구하면 이런 "균등 분포"가 존재한다. 바나흐–타르스키 유형의 구성으로, 선택공리를 쓰면 자연수 위에 유한 가법적이고 모든 유한집합에 \(0\)을 주는 측도(밀도 측도)를 만들 수 있다. 그런 측도는 "짝수의 확률 \(= 1/2\)"처럼 자연밀도와 일치하는 값을 준다.

그것을 왜 쓰지 않는가.

  • 극한을 다룰 수 없다. 연습문제 9에서 본 대로 \(\lim_n P(A_n) = P(\lim_n A_n)\)이 성립하지 않으므로, 큰수의 법칙도 중심극한정리도 진술할 수 없다.
  • 기댓값이 잘 정의되지 않는다. 단조수렴정리와 지배수렴정리가 가산가법성 위에 서 있다.
  • 유일성을 잃는다. 그런 유한 가법적 측도는 유일하지 않으며, 어느 것을 쓰느냐에 따라 답이 달라진다.

실무적 함의. "무작위로 자연수 하나를 고른다"는 말은 정의되지 않는다. 마찬가지로 "무작위로 실수 하나를 고른다"도 범위를 정하지 않으면 무의미하다. 이런 무한 균등 직관이 만드는 역설(예: 두 봉투 문제의 어떤 변형)은 대개 존재하지 않는 분포를 가정한 데서 나온다.

반면 가산 집합에 균등하지 않은 확률은 얼마든지 가능하다. \(P(n) = 2^{-n}\)처럼 합이 \(1\)이 되면 된다. 금지되는 것은 균등성이지 가산성이 아니다. \(\square\)

연습문제 11. 공리는 확률을 어떤 집합에 부여할지 말해 주지 않는다. 왜 모든 부분집합에 확률을 줄 수 없으며, 그래서 무엇이 필요한가?

풀이

모든 부분집합에 확률을 줄 수 있다면 좋겠지만 불가능하다. \([0,1)\) 위의 균등확률을 생각하자. 이 측도가 가져야 할 자연스러운 성질은 평행이동 불변성이다. 구간을 옮겨도 길이가 변하지 않으므로

\[ P(A \oplus r) = P(A), \qquad A \oplus r = \{(a + r) \bmod 1 : a \in A\} \]

이어야 한다.

비탈리 집합. \(x \sim y \iff x - y \in \mathbb{Q}\)로 동치관계를 정의하고, 선택공리를 써서 각 동치류에서 대표원 하나씩을 골라 모은 집합을 \(V\)라 하자. 그러면 \([0,1)\)의 유리수 \(q_1, q_2, \ldots\)에 대해

\[ [0,1) = \bigsqcup_{i=1}^\infty (V \oplus q_i) \]

로 가산개의 서로 배반인 조각으로 정확히 분할된다. 가산가법성과 평행이동 불변성을 적용하면

\[ 1 = P([0,1)) = \sum_{i=1}^\infty P(V \oplus q_i) = \sum_{i=1}^\infty P(V) \]

인데, 우변은 \(P(V) = 0\)이면 \(0\)이고 \(P(V) > 0\)이면 \(\infty\)다. 어느 쪽도 \(1\)이 될 수 없다.

연습문제 10과 정확히 같은 구조의 모순이다. 결론은 \(P(V)\)가 존재할 수 없다는 것, 즉 \(V\)에는 확률을 부여할 수 없다는 것이다. \(\square\)

import numpy as np

print("연습문제 10 과 같은 형태의 모순")
print(f"{'P(V)':>10}{'가산합':>14}{'판정':>10}")
for c in (0.0, 1e-9, 1e-3, 0.5):
    total = "0" if c == 0 else "무한대"
    print(f"{c:>10.0e}{total:>14}{'모순':>10}")
print("\n어느 값도 1 을 줄 수 없으므로 P(V) 는 정의될 수 없다")

# 유한 근사로는 모순이 보이지 않는다
print("\n유한개 조각으로 자르면 아무 문제가 없다")
for k in (2, 10, 1000):
    print(f"  {k}조각으로 균등 분할: 각 1/{k}, 합 = {k * (1/k):.1f}")

출력:

연습문제 10 과 같은 형태의 모순
      P(V)           가산합        판정
     0e+00             0        모순
     1e-09           무한대        모순
     1e-03           무한대        모순
     5e-01           무한대        모순

어느 값도 1 을 줄 수 없으므로 P(V) 는 정의될 수 없다

유한개 조각으로 자르면 아무 문제가 없다
  2조각으로 균등 분할: 각 1/2, 합 = 1.0
  10조각으로 균등 분할: 각 1/10, 합 = 1.0
  1000조각으로 균등 분할: 각 1/1000, 합 = 1.0

그래서 확률공간은 세 쌍 \((\Omega, \mathcal{F}, P)\)이다.

요소 역할
\(\Omega\) 가능한 결과 전체
\(\mathcal{F}\) 확률을 부여할 사건들의 모임 (\(\sigma\)-대수)
\(P\) \(\mathcal{F}\) 위의 함수

\(\mathcal{F}\)가 만족해야 할 조건은 공리 자체가 요구하는 것들이다. 여집합 규칙을 쓰려면 \(A \in \mathcal{F} \Rightarrow A^c \in \mathcal{F}\)여야 하고, 가산가법성을 쓰려면 가산 합집합에 대해 닫혀 있어야 한다. \(\sigma\)-대수의 정의가 곧 "공리를 적용할 수 있는 집합족"의 정의다.

실무에서 걱정할 일은 거의 없다. 실수 위에서는 보렐 \(\sigma\)-대수(구간들로부터 생성되는 최소 \(\sigma\)-대수)를 쓰는데, 여기에는 상상할 수 있는 거의 모든 집합이 들어 있다. 비탈리 집합처럼 선택공리로만 만들어지는 병리적 집합만 빠진다.

그럼에도 \(\mathcal{F}\)가 중요한 이유가 따로 있다. 확률변수의 정의(가측함수), 조건부기댓값, 여과(filtration)와 마팅게일 이론이 모두 "어느 시점에 어떤 정보를 알고 있는가"를 \(\sigma\)-대수로 표현한다. \(\mathcal{F}\)는 병리적 집합을 막는 장치이기 전에 정보를 형식화하는 언어다. \(\square\)

정리하며

확률론 전체가 세 줄 위에 서 있다.

  • 정리 1은 그 세 줄을 적었다. 0과 1 사이이고, 빈 것은 0이며 전체는 1이고, 서로소이면 더한다. 이 가운데 \(P(A) \le 1\)과 \(P(\emptyset) = 0\)은 나머지에서 유도되므로 논리적으로는 없어도 된다(연습문제 1). 편의를 위해 적어 둔 것이지 가정이 아니다.
  • 정리 2는 거기서 실제로 쓰는 규칙들이 전부 따라 나옴을 보였다. 유한가법성, 여집합, 단조성, 포함배제, 본페로니. 공리에 적어 둔 상한 \(P(A) \le 1\)조차 단조성에서 다시 나온다.
  • 정리 3은 왜 유한이 아니라 가산 무한까지 요구하는지 설명했다. 극한을 확률 안으로 들여오기 위해서다.

공리가 이렇게 인색한 데는 이유가 있다. 규칙이 적을수록 그것을 만족하는 대상이 많아지고, 따라서 결론이 널리 적용된다. 주사위든 주가든 내일의 날씨든, 세 줄만 지키면 이 책의 나머지 전부가 그대로 적용된다.

이제 규칙은 갖췄다. 다음 절부터는 이 규칙 위에서 실제로 계산을 시작한다. 첫 번째 도구는 조건부확률 — 무언가를 알게 되었을 때 확률이 어떻게 달라지는가이다.