1. 소개: 대수의 법칙은 무엇을 주장하는 것일까
대수의 법칙(Law of Large Numbers)은 통계·확률에서 가장 자주 등장하는 법칙 중 하나이며, 도박이나 투자/트레이딩을 하는 분들이 자주 인용되는 개념이기도 합니다. 핵심 메시지는 단순합니다. 적절한 조건 아래에서, 표본 크기 n이 커질수록 표본평균(혹은 경험적 평균)이 이론적 기대값에 가까워진다는 보장을 합니다. 즉, “반복”이 불확실성을 줄여 준다는 정리라고 이해를 할 수 있겠습니다.
다만 대수의 법칙을 제대로 이해하지 않으면 오해를 하기 쉽습니다. 예를 들어 공정한 동전을 여러 번 던지면 “앞면이 나올 확률이 로 수렴한다”고들 말합니다. 그런데 이 말은 구체적으로 무엇을 의미할까요?
가령 동전을 10번 던질 때 “정확히 5번 앞면”이 나올 확률은 약 0.246으로, 0.5와는 거리가 멉니다. 그렇다면 “대수의 법칙은 시행 횟수가 커지면 효과가 나타나니, 10,000번 던지면 정확히 절반(5,000번) 앞면이 나올 확률이 0.5에 가까워지지 않겠느냐”라는 생각을 할 수 있습니다. 하지만 그것은 틀린 생각입니다. 오히려 “정확히 절반”이 나올 확률은 n이 커질수록 0으로 수렴합니다.
그렇다면 대수의 법칙에서 정말로 로 수렴하는 대상은 무엇일까요? 이 글은 동전 던지기 예제를 통해, 대수의 법칙의 핵심을 시뮬레이션으로 확인해 보려 합니다.
2. 던진 횟수의 정확히 반 만큼 앞면이 나올 확률은 어떻게 될까?
공정한 동전을 n번 던져서 나온 앞면의 개수를
라고 하겠습니다. 이때 은 이항분포를 따르므로(공정한 동전이라면 ),
특히 n이 짝수일 때,
여기서 저희는 n이 무한으로 발산할 때 가 어떻게 변하는지 알고 싶습니다. 먼저 이론적으로 수식 (1)을 단순화 하는 방법 중 하나는 Stirling's Approximation (스털링 공식)을 사용하는 것입니다. 스털링 공식은 계승식을 다음과 같은 표현식으로 근사하는 방법입니다.

스털링 공식을 수식(1)에 적용한다면 아래와 같은 식이 도출 됩니다.
그러면 수식 (2)에서 n이
즉, 는 에서 0으로 수렴합니다.
이론적으로 확인하는 방법은 어렵지 않지만, 직관적으로 해당 현상을 어떻게 해석하면 될까요?
이항 분포의 확률은 왜 의 비율로 감소하는가?
표준편차와 변동의 스케일
먼저, n번의 동전 던지기에서 앞면이 나온 횟수를 이라고 가정하겠습니다. 이때 의 표준편차는 다음과 같은 공식으로 주어집니다.
여기서 C는 상수(평범한 동전의 경우 0.5)입니다.
위 식에서 확인할 수 있는 것은 표준편차가 의 멀티플이라는 것이며, 시행 횟수 n이 증가함에 따라, 앞면이 나오는 횟수 은 평균값인 n/2 를 중심으로 대략 의 스케일 내에서 요동친다는 사실입니다.
이러한 변동의 스케일은 우리가 '일어날 법하다'라고 간주할 수 있는 결과값의 개수가 대략 과 비례한다는 것을 의미합니다.
확률의 보존
확률 분포를 수학적으로 정의하기 위해서는 모든 가능한 결과의 전체 확률 합은 반드시 1이 되어야 합니다.
만약 '일어날 법한' 결과의 가짓수가 의 비율로 늘어난다면, 그중 하나의 특정한 값에 할당되는 확률은 전체 합 1을 유지하기 위해 대략 의 비율로 감소해야만 합니다.
정리하자면, 동전을 던지는 횟수 n이 늘어날수록, 우리가 마주할 수 있는 경우의 수는 지수적으로 폭발합니다. 하지만 표준편차는 속도로 상대적으로 천천히 늘어납니다. 즉, 평균 근처에 몰려 있는 '가능성 있는 후보들'의 숫자는 많아지는데, 전체 확률의 합은 항상 1이어야 하니 개별 후보가 가져갈 수 있는 확률 조각은 점점 작아질 수밖에 없습니다.
시뮬레이션은 직관과 이론을 확인하기 위한 툴로 굉장히 유용합니다.
아래 파이썬 코드는 n이 짝수일 때 던진 횟수의 반 만큼 앞면을 던질 확률을 계산해 시각적으로 확인합니다.
import math
import numpy as np
import matplotlib.pyplot as plt
def prob_exact_half(n):
# n이 짝수일 때, 정확히 n/2개 앞면이 나올 확률
assert n % 2 == 0
return math.comb(n, n // 2) / (2 ** n)
x_vals = np.arange(10, 1000, 2)
y_vals = [prob_exact_half(int(n)) for n in x_vals]
# 시각화
plt.figure(figsize=(10, 5))
plt.plot(x_vals, y_vals)
plt.title(r"Probability of exactly $n/2$ heads: $\binom{n}{n/2}2^{-n}$")
plt.xlabel("n (number of tosses)")
plt.ylabel(r"$P(Y_n = n/2)$")
plt.grid(alpha=0.3)
plt.show()
그래프를 보면 n이 커질수록 확률이 점점 떨어지는 것을 확인할 수 있습니다.
3. 그럼 대수의 법칙은 무엇을 말하는 것일까?
저희는 던진 횟수의 정확히 반만큼 앞면을 던질 확률이 n이 무한대로 감에 따라 0으로 수렴하는 것을 보았습니다. 그렇다면, "공정한 동전의 앞면이 나올 확률이 1/2로 수렴한다"는 문장은 정확히 무엇을 의미할까요? 사실 이 문장은 대수의 법칙의 직접적인 결과입니다. 그리고 사실 대수의 법칙은 약한 대수의 법칙과 강한 대수의 법칙 두 가지 버젼이 존재합니다. 먼저 가장 많이 쓰이는 약한 대수의 법칙부터 살펴보겠습니다.
약한 대수의 법칙 (Weak Law of Large Numbers, or WLLN)
먼저 저희는 동전을 n번 던졌을 떄 나올 수 있는 앞면의 비율을 다음과 같이 n번의 결과들의 평균으로 정의할 수 있습니다.
만약 공정한 동전을 던진다면 입니다.
약한 대수의 법칙은 아래와 같은 형식으로 자주 등장합니다.
여기서 이며, 는 i번째 던지기가 앞면(=1)인지 뒷면(=0)인지를 나타냅니다. 수식(3)을 약한 대수의 법칙(WLLN)이라 불리며, 표본 크기 n이 무한대로 감에 따라 추정치 이 참된 매개변수 로 확률 수렴한다고 말합니다.
시뮬레이션을 통해 해당 주장이 사실임을 어떻게 확인 할 수 있을까요? 우선 추정치가 참된 매개변수로 확률 수렴한다는 것이 실제로 무엇을 의미하는지 이해 해야겠죠. 수식 (3)은 다음과 같이 재진술될 수 있습니다. 어떤 에 대하여,
여기서 은 n번의 던지기가 주어졌을 때의 실행 평균, 즉 n번 던졌을 때 앞면이 나올 경험적 확률입니다. 여기서 깨달아야 할 중요한 사실은 (4)가 개별 샘플 경로 에 대한 문장이 아니라, 추정치 또는 함수 에 대한 문장이라는 점입니다. 즉, WLLN은 시점 n때 전체 샘플 공간 에서 우리가 기대할 수 있는 것에 대한 정보를 제공하지만, 특정 경로 가 시점 n이후에 어떻게 행동해야 하는지에 대한 가이드라인은 제공하지 않습니다.
직관을 돕기 위해 다음과 같은 사고 실험을 해봅시다. 먼저 를 고정합니다. 이제 어떤 먼 미래 시점인 을 생각해 보세요. 그러면 시간 에서 샘플 경로 가 어떻게 실현되었느냐에 따라 은 다를 것입니다. 만약 우리가 이 모든 추정치들 중 실제로 주변에 형성된 -밴드를 벗어나는 것들을 세본다면, 그 비율은 0에 매우 가까울 것입니다. 즉, WLLN은 시간 에서 샘플 경로들로부터 계산한 대부분의 추정치 값이 주변에 형성된 -밴드 내에 포함될 것임을 주장합니다.
그렇다면 약한 대수의 법칙이 주장하지 않는 것은 무엇일까요?
이제 WLLN이 주장하지 않는 것을 설명하기 위해, 시점 에서 의 -밴드 내에 있는 샘플 경로 를 하나 골라봅시다. WLLN은 개별 샘플 경로에 대한 제약을 가하지 않기 때문에, 우리는 이 샘플 경로가 오랜 시간 동안 1, 1, 1, ...의 값을 실현한다고 생각할 수 있습니다 (즉, 시간 부터 연속적으로 앞면만 나옵니다). 그러면 훨씬 먼 미래 시점인 에서 측정했을 때, 은 보다 ...




