순서통계량 (Order Statistics)

표본의 최솟값, 최댓값, 중앙값의 분포와 결합분포

확률 표본을 크기순으로 재배열한 순서통계량(order statistics)의 정의, 주변 pdf, 결합 pdf를 다룬다. 이산 모집단에서의 순서통계량 분포(Theorem 5.4.3), 연속 모집단에서의 j번째 순서통계량 pdf(Theorem 5.4.4), 두 순서통계량의 결합 pdf(Theorem 5.4.6)를 증명하고, 균일분포 순서통계량의 베타분포 연결, 범위(range)와 중간범위(midrange)의 분포 도출까지 제시한다.

Statistics
저자

Kwangmin Kim

공개

2026년 03월 31일

1 개요

지금까지 다룬 통계량(표본평균, 표본분산)은 모든 관측값을 동등하게 사용한다. 그러나 때로는 관측값의 순서에 기반한 정보가 더 유용하다. 지난 50년간 기록된 최고 홍수 수위, 지난달 주택 매매가의 중앙값, 제품 수명의 최솟값 — 이들은 모두 순서통계량(order statistics)의 예이다.

순서통계량은 비모수 추론, 로버스트 추정, 극값 이론의 수학적 기반이며, 분포에 대한 가정이 약해도 사용할 수 있다는 점에서 표본평균/분산과 보완적인 역할을 한다 (Casella & Berger, 2002, Ch.5).

2 정의와 기본 개념

정의: 순서통계량 (Order Statistics, Definition 5.4.1)

확률 표본 \(X_1, \ldots, X_n\)순서통계량은 표본값을 오름차순으로 재배열한 것이다. 이를 \(X_{(1)}, \ldots, X_{(n)}\) 으로 표기한다 (Casella & Berger, 2002, Ch.5).

순서통계량은 \(X_{(1)} \leq X_{(2)} \leq \cdots \leq X_{(n)}\) 을 만족하는 확률변수이다:

  • \(X_{(1)} = \min_{1 \leq i \leq n} X_i\) : 최솟값
  • \(X_{(n)} = \max_{1 \leq i \leq n} X_i\) : 최댓값
  • \(X_{(\lceil n/2 \rceil)}\) : 표본 중앙값 (아래에서 정밀하게 정의)

원래 표본 \(X_1, \ldots, X_n\) 은 iid이지만, 순서통계량 \(X_{(1)}, \ldots, X_{(n)}\)독립이 아니다. \(X_{(1)}\) 이 크면 \(X_{(2)}\) 도 클 수밖에 없으므로, 순서를 부여하는 행위 자체가 의존성을 도입한다.

2.1 순서통계량에서 파생되는 통계량

통계량 정의 역할
표본 범위(range) \(R = X_{(n)} - X_{(1)}\) 산포의 측도
표본 중앙값(median) 아래 참조 위치의 측도 (로버스트)
사분위수 범위(IQR) \(X_{(0.75n)} - X_{(0.25n)}\) 로버스트 산포 측도
중간범위(midrange) \(V = (X_{(1)} + X_{(n)})/2\) 위치의 측도

2.2 표본 중앙값의 정의

\[ M = \begin{cases} X_{((n+1)/2)} & \text{$n$ 이 홀수} \\ (X_{(n/2)} + X_{(n/2+1)})/2 & \text{$n$ 이 짝수} \end{cases} \]

평균 vs 중앙값: 야구 선수 연봉의 사례

1988년 메이저리그 연봉 협상에서 구단주 측은 “평균 연봉이 $433,659이니 연금이 충분하다”고 주장했고, 선수 측은 “절반 이상이 $250,000 미만을 받는다”고 반박했다. 둘 다 맞았다. 구단주는 평균(mean)을, 선수는 중앙값(median)을 말한 것이다. 연봉 $200만 이상인 소수의 스타 선수가 평균을 끌어올리지만 중앙값에는 거의 영향을 주지 않는다. 극단값이 있는 데이터에서는 중앙값이 “전형적 값”을 더 잘 대표한다 (Casella & Berger, 2002, Ch.5).

2.3 표본 백분위수

\((100p)\) 번째 표본 백분위수는 대략 \(np\) 개의 관측값이 이보다 작고 \(n(1-p)\) 개가 이보다 큰 관측값이다. \(p = 0.5\) 이면 중앙값, \(p = 0.25\) 이면 하위 사분위수, \(p = 0.75\) 이면 상위 사분위수이다.

3 이산 모집단에서의 순서통계량 분포

정리: 이산 순서통계량의 분포 (Theorem 5.4.3)

\(X_1, \ldots, X_n\) 이 pmf \(f_X(x_i) = p_i\) 인 이산분포에서의 확률 표본이고, \(x_1 < x_2 < \cdots\) 가 가능한 값들의 오름차순 나열이라 하자. \(P_i = p_1 + p_2 + \cdots + p_i\) ( \(P_0 = 0\) )로 정의하면:

\[ P(X_{(j)} \leq x_i) = \sum_{k=j}^{n} \binom{n}{k} P_i^k (1 - P_i)^{n-k} \]

\[ P(X_{(j)} = x_i) = \sum_{k=j}^{n} \binom{n}{k} \left[P_i^k(1-P_i)^{n-k} - P_{i-1}^k(1-P_{i-1})^{n-k}\right] \]

(Casella & Berger, 2002, Ch.5)

증명의 핵심 아이디어: \(Y\) 를 ” \(X_1, \ldots, X_n\)\(x_i\) 이하인 것의 개수”라 하자. 각 \(X_l\) 에 대해 \(\{X_l \leq x_i\}\) 를 “성공”으로 정의하면:

  • 성공 확률: \(P_i = P(X_l \leq x_i)\) (동일 분포)
  • 각 시행은 독립 (iid)
  • 따라서 \(Y \sim \text{Binomial}(n, P_i)\)

사건 \(\{X_{(j)} \leq x_i\}\) 는 “\(n\) 개 중 적어도 \(j\) 개가 \(x_i\) 이하”인 사건 \(\{Y \geq j\}\) 와 동치이다. 이를 이항분포의 확률로 표현하면 첫 번째 식을 얻고, \(P(X_{(j)} = x_i) = P(X_{(j)} \leq x_i) - P(X_{(j)} \leq x_{i-1})\) 로 두 번째 식을 얻는다.

직관적으로, “표본에서 \(j\) 번째로 작은 값이 \(x_i\) 이하”라는 것은 “적어도 \(j\) 개의 관측값이 \(x_i\) 이하”라는 것과 같다. 이 동치 관계가 순서통계량 분포의 핵심이다.

4 연속 모집단에서의 순서통계량 pdf

연속 모집단에서는 두 관측값이 같을 확률이 0이므로 \(P(X_{(1)} < X_{(2)} < \cdots < X_{(n)}) = 1\) 이다. 이 사실이 pdf 도출을 단순화한다.

4.1 \(j\) 번째 순서통계량의 주변 pdf

정리: \(j\) 번째 순서통계량의 pdf (Theorem 5.4.4)

\(X_{(1)}, \ldots, X_{(n)}\) 이 cdf \(F_X(x)\) 와 pdf \(f_X(x)\) 를 가진 연속 모집단에서의 확률 표본의 순서통계량이면, \(X_{(j)}\) 의 pdf는:

\[ f_{X_{(j)}}(x) = \frac{n!}{(j-1)!(n-j)!} f_X(x) [F_X(x)]^{j-1} [1 - F_X(x)]^{n-j} \]

(Casella & Berger, 2002, Ch.5)

4.2 pdf의 직관적 해석

이 공식의 각 요소는 명확한 확률적 의미를 가진다:

\[ f_{X_{(j)}}(x) = \underbrace{\frac{n!}{(j-1)!(n-j)!}}_{\text{배치 수}} \cdot \underbrace{f_X(x)}_{\text{$x$ 근처}} \cdot \underbrace{[F_X(x)]^{j-1}}_{\text{$x$ 미만 $j-1$개}} \cdot \underbrace{[1-F_X(x)]^{n-j}}_{\text{$x$ 초과 $n-j$개}} \]

요소 의미
\(\frac{n!}{(j-1)!(n-j)!}\) \(n\) 개의 관측값 중 \(j-1\) 개가 \(x\) 미만, 1개가 \(x\) 근처, \(n-j\) 개가 \(x\) 초과인 배치의 수
\(f_X(x)\) 정확히 하나의 관측값이 \(x\) 근처에 있을 확률 밀도
\([F_X(x)]^{j-1}\) \(j-1\) 개의 관측값이 \(x\) 보다 작을 확률 (각각 독립)
\([1-F_X(x)]^{n-j}\) \(n-j\) 개의 관측값이 \(x\) 보다 클 확률 (각각 독립)
비유: 경주에서 \(j\) 번째 도착

\(n\) 명이 달리기를 한다. \(j\) 번째로 골인하는 사람의 기록이 \(x\) 근처일 확률을 구하려면: (1) \(j-1\) 명이 \(x\) 보다 빨리 골인하고, (2) 1명이 정확히 \(x\) 근처에 골인하며, (3) \(n-j\) 명이 \(x\) 보다 느리게 골인하는 경우의 수를 세면 된다. 이것이 위 공식의 구조이다.

4.3 증명 (개요)

\(Y\) 를 ” \(X_1, \ldots, X_n\)\(x\) 이하인 것의 개수”라 하면 \(Y \sim \text{Binomial}(n, F_X(x))\) 이다. \(X_{(j)}\) 의 cdf는:

\[ F_{X_{(j)}}(x) = P(Y \geq j) = \sum_{k=j}^{n} \binom{n}{k} [F_X(x)]^k [1-F_X(x)]^{n-k} \]

이를 \(x\) 에 대해 미분하면 텔레스코핑(telescoping)에 의해 대부분의 항이 소거되어 Theorem 5.4.4의 결과를 얻는다. 소거가 일어나는 이유는 \(\binom{n}{k+1}(k+1) = \binom{n}{k}(n-k)\) 이라는 항등식 때문이다.

4.4 특수 경우: 최솟값과 최댓값

\(j = 1\) (최솟값)과 \(j = n\) (최댓값)은 특히 중요하다:

\[ f_{X_{(1)}}(x) = n f_X(x) [1 - F_X(x)]^{n-1} \]

\[ f_{X_{(n)}}(x) = n f_X(x) [F_X(x)]^{n-1} \]

최솟값의 pdf에서 \([1-F_X(x)]^{n-1}\) 은 나머지 \(n-1\) 개가 모두 \(x\) 보다 클 확률이다. \(n\) 이 커질수록 이 확률이 빠르게 줄어들므로, 최솟값의 분포는 왼쪽으로 집중된다.

5 균일분포 순서통계량과 베타분포

균일분포에서의 순서통계량은 베타분포와의 연결로 특히 중요하다.

5.1 균일분포 순서통계량의 pdf

\(X_1, \ldots, X_n \overset{iid}{\sim} \text{Uniform}(0, 1)\) 이면 \(f_X(x) = 1\) , \(F_X(x) = x\) ( \(x \in (0, 1)\) )이므로:

\[ f_{X_{(j)}}(x) = \frac{n!}{(j-1)!(n-j)!} x^{j-1}(1-x)^{n-j} = \frac{\Gamma(n+1)}{\Gamma(j)\Gamma(n-j+1)} x^{j-1}(1-x)^{(n-j+1)-1} \]

이는 \(\text{Beta}(j, n-j+1)\) 의 pdf이다. 따라서:

결과: 균일분포 순서통계량의 베타분포

\(X_1, \ldots, X_n \overset{iid}{\sim} \text{Uniform}(0, 1)\) 이면:

\[ X_{(j)} \sim \text{Beta}(j, n-j+1) \]

따라서 \(E[X_{(j)}] = \frac{j}{n+1}\) , \(\text{Var}(X_{(j)}) = \frac{j(n-j+1)}{(n+1)^2(n+2)}\)

이 결과의 직관: \(n\) 개의 균일 난수를 \([0, 1]\) 에 뿌리면, \(j\) 번째로 작은 값은 평균적으로 \(j/(n+1)\) 에 위치한다. 10개를 뿌리면 3번째로 작은 값은 평균 \(3/11 \approx 0.273\) 에 있다. 이것은 \([0, 1]\) 구간을 \(n+1\) 개의 동일한 간격으로 나눈 것과 같다.

분산은 \(j\) 가 중앙에 가까울수록 작고(중앙값이 가장 안정적), 양 끝에 가까울수록 크다(최솟값과 최댓값이 가장 불안정). 이것이 중앙값이 로버스트 통계량인 이유의 수학적 근거이다.

6 두 순서통계량의 결합 pdf

정리: 두 순서통계량의 결합 pdf (Theorem 5.4.6)

\(1 \leq i < j \leq n\) 에 대해, \(X_{(i)}\)\(X_{(j)}\) 의 결합 pdf는:

\[ f_{X_{(i)}, X_{(j)}}(u, v) = \frac{n!}{(i-1)!(j-1-i)!(n-j)!} f_X(u) f_X(v) [F_X(u)]^{i-1} [F_X(v) - F_X(u)]^{j-1-i} [1-F_X(v)]^{n-j} \]

단, \(-\infty < u < v < \infty\) (Casella & Berger, 2002, Ch.5)

6.1 결합 pdf의 직관적 해석

이 공식도 “구간 나누기”로 이해할 수 있다:

───────────────────────────────────────────────
    < u       u 근처      u~v 사이      v 근처      > v
   i-1개       1개        j-1-i개        1개       n-j개
  F(u)^{i-1}  f(u)  [F(v)-F(u)]^{j-1-i} f(v)  [1-F(v)]^{n-j}
───────────────────────────────────────────────

\(n\) 개의 관측값을 다섯 구간으로 나누어 배치하는 다항분포적 논증이다.

6.2 모든 순서통계량의 결합 pdf

\(n\) 개 순서통계량 전체의 결합 pdf는 놀랍도록 간단하다:

\[ f_{X_{(1)}, \ldots, X_{(n)}}(x_1, \ldots, x_n) = \begin{cases} n! \prod_{i=1}^{n} f_X(x_i) & -\infty < x_1 < \cdots < x_n < \infty \\ 0 & \text{그 외} \end{cases} \]

\(n!\) 이 나타나는 이유: 값의 집합 \(\{x_1, \ldots, x_n\}\) 에 대해, 원래 표본 \(X_1, \ldots, X_n\) 에 이 값들을 배정하는 방법은 \(n!\) 가지이고, 이 모든 배정이 같은 순서통계량을 산출한다. 따라서 원래 결합 pdf \(\prod f_X(x_i)\)\(n!\) 을 곱한 것이 순서통계량의 결합 pdf가 된다.

7 범위와 중간범위의 분포

7.1 균일분포에서의 범위와 중간범위

\(X_1, \ldots, X_n \overset{iid}{\sim} \text{Uniform}(0, a)\) 에서 범위 \(R = X_{(n)} - X_{(1)}\) 과 중간범위 \(V = (X_{(1)} + X_{(n)})/2\) 의 분포를 도출한다.

Theorem 5.4.6에서 \(i = 1\) , \(j = n\) 으로 놓으면:

\[ f_{X_{(1)}, X_{(n)}}(x_1, x_n) = \frac{n(n-1)(x_n - x_1)^{n-2}}{a^n}, \quad 0 < x_1 < x_n < a \]

변환 \(R = X_{(n)} - X_{(1)}\) , \(V = (X_{(1)} + X_{(n)})/2\) (야코비안 \(= -1\) )를 적용하면:

\[ f_{R,V}(r, v) = \frac{n(n-1)r^{n-2}}{a^n}, \quad 0 < r < a, \quad r/2 < v < a - r/2 \]

7.2 범위의 주변 pdf

\(V\) 를 적분하면:

\[ f_R(r) = \frac{n(n-1)r^{n-2}(a-r)}{a^n}, \quad 0 < r < a \]

\(a = 1\) 이면 \(R \sim \text{Beta}(n-1, 2)\) 이다. 일반적으로 \(R/a \sim \text{Beta}(n-1, 2)\) 이며, 따라서:

\[ E[R/a] = \frac{n-1}{n+1}, \quad \text{Var}(R/a) = \frac{2(n-1)}{(n+1)^2(n+2)} \]

표본 크기가 커질수록 범위는 \(a\) 에 가까워진다. 이는 직관적이다 — 관측값이 많아지면 최솟값은 0에, 최댓값은 \(a\) 에 가까워지므로 범위가 \(a\) 에 수렴한다.

7.3 중간범위의 주변 pdf

\(R\) 의 적분 범위가 \(v\) 의 위치에 따라 달라진다:

\[ f_V(v) = \begin{cases} \frac{n(2v)^{n-1}}{a^n} & 0 < v \leq a/2 \\ \frac{n[2(a-v)]^{n-1}}{a^n} & a/2 < v \leq a \end{cases} \]

이 pdf는 \(a/2\) 에 대해 대칭이고 \(a/2\) 에서 최댓값을 가진다. \(n\) 이 커질수록 중간범위는 \(a/2\) 근처에 집중된다.

8 코드 예시

8.1 Step 1: 순수 Python 구현 (순서통계량 pdf 검증)

import math
import random

random.seed(42)

n = 10
n_sim = 100000

# 균일(0,1) 표본에서 j번째 순서통계량의 평균과 분산
print("=== 균일(0,1) 순서통계량: E[X_(j)] = j/(n+1) ===")
order_stats = {j: [] for j in range(1, n + 1)}

for _ in range(n_sim):
    sample = sorted([random.random() for _ in range(n)])
    for j in range(1, n + 1):
        order_stats[j].append(sample[j - 1])

for j in [1, 3, 5, 8, 10]:
    mean_obs = sum(order_stats[j]) / len(order_stats[j])
    mean_theory = j / (n + 1)
    var_obs = sum((x - mean_obs)**2 for x in order_stats[j]) / (len(order_stats[j]) - 1)
    var_theory = j * (n - j + 1) / ((n + 1)**2 * (n + 2))
    print(f"  X_({j:>2}): E={mean_obs:.4f} (이론: {mean_theory:.4f}), "
          f"Var={var_obs:.6f} (이론: {var_theory:.6f})")

# 범위 R = X_(n) - X_(1)의 분포
print(f"\n=== 범위 R = X_({n}) - X_(1), a=1 ===")
ranges = [order_stats[n][i] - order_stats[1][i] for i in range(n_sim)]
mean_R = sum(ranges) / len(ranges)
mean_R_theory = (n - 1) / (n + 1)
print(f"  E[R] = {mean_R:.4f} (이론: {mean_R_theory:.4f})")

이 코드는 균일분포 순서통계량이 \(\text{Beta}(j, n-j+1)\) 을 따르는지 평균과 분산으로 검증하고, 범위의 기댓값 \(E[R] = (n-1)/(n+1)\) 도 확인한다.

8.2 Step 2: scipy 구현 (순서통계량 분포와 응용)

import numpy as np
from scipy import stats

np.random.seed(42)

n = 20
n_sim = 100000

# --- 1. 순서통계량의 분포 검증 (KS test) ---
# 균일(0,1) 표본에서 j번째 순서통계량 ~ Beta(j, n-j+1)
print("=== 균일(0,1) 순서통계량 KS 검정 ===")
for j in [1, 5, 10, 15, 20]:
    order_j = np.array([
        np.sort(np.random.uniform(0, 1, n))[j - 1]
        for _ in range(n_sim)
    ])
    ks_stat, p_val = stats.kstest(order_j, 'beta', args=(j, n - j + 1))
    print(f"  X_({j:>2}) ~ Beta({j},{n-j+1}): KS={ks_stat:.4f}, p={p_val:.4f}")

# --- 2. 정규분포 순서통계량의 최솟값/최댓값 ---
print(f"\n=== 정규(0,1) 순서통계량, n={n} ===")
mins = np.array([np.random.normal(0, 1, n).min() for _ in range(n_sim)])
maxs = np.array([np.random.normal(0, 1, n).max() for _ in range(n_sim)])
medians = np.array([np.median(np.random.normal(0, 1, n)) for _ in range(n_sim)])

print(f"  E[X_(1)]  = {mins.mean():.4f}  (최솟값)")
print(f"  E[X_({n})] = {maxs.mean():.4f}  (최댓값)")
print(f"  E[중앙값] = {medians.mean():.4f}  (이론: 0)")
print(f"  SD[X_(1)]  = {mins.std():.4f}")
print(f"  SD[중앙값] = {medians.std():.4f}  ← 최솟값보다 안정적")

# --- 3. 표본 크기에 따른 범위의 변화 ---
print(f"\n=== 균일(0,1) 범위 E[R] = (n-1)/(n+1) ===")
for n_test in [5, 10, 20, 50, 100]:
    ranges = np.array([
        np.ptp(np.random.uniform(0, 1, n_test))
        for _ in range(n_sim)
    ])
    print(f"  n={n_test:>3}: E[R]={ranges.mean():.4f} (이론: {(n_test-1)/(n_test+1):.4f})")

# --- 4. 극값 분포: 지수분포 최솟값 ---
print(f"\n=== 지수(lambda=2) 최솟값 분포 ===")
lam = 2.0
n_exp = 10
mins_exp = np.array([
    np.random.exponential(1/lam, n_exp).min()
    for _ in range(n_sim)
])
# 지수분포 최솟값: X_(1) ~ Exp(n*lambda)
print(f"  E[X_(1)] = {mins_exp.mean():.4f} (이론: {1/(n_exp*lam):.4f})")
print(f"  SD[X_(1)] = {mins_exp.std():.4f} (이론: {1/(n_exp*lam):.4f})")

이 코드는 네 가지를 검증한다: (1) 균일분포 순서통계량이 베타분포를 따르는지 KS 검정, (2) 정규분포에서 최솟값, 최댓값, 중앙값의 기댓값과 안정성 비교, (3) 표본 크기에 따른 범위의 수렴, (4) 지수분포 최솟값이 \(\text{Exp}(n\lambda)\) 를 따르는지 확인 (지수분포의 최솟값 성질).

9 왜 순서통계량이 중요한가

응용 분야 순서통계량의 역할 구체적 예시
비모수 검정 순위 기반 검정 통계량 Wilcoxon 순위합 검정, Mann-Whitney \(U\) 검정
로버스트 추정 극단값에 둔감한 위치 추정 절사평균(trimmed mean), 중앙값
분포 무관 신뢰구간 순서통계량 기반 구간 \(P(X_{(r)} < \theta < X_{(s)})\) 형태의 구간
극값 이론 최댓값/최솟값의 점근 분포 Gumbel, Frechet, Weibull 분포 → 보험, 금융, 기후
품질관리 범위 기반 관리도 \(R\) -차트 (범위 관리도)
생존분석 순서 관측값 검열 데이터에서 사건 시간의 순서
Q-Q plot 표본 분위수 vs 이론 분위수 정규성 검정의 시각적 도구
부트스트랩 경험적 분포 함수 순서통계량으로 정의되는 계단함수

10 관련 주제

선행 지식

후속 주제

관련 개념

Subscribe

Enjoy this blog? Get notified of new posts by email: