독일 탱크 문제(German tank problem)는 일련번호가 매겨진 물건 몇 개만 보고 전체 생산량을 추정하는 통계 문제다. 표본 중 가장 큰 번호에 표본 사이 평균 간격을 더한 값은 여러 번 평균 내면 참값에 맞는다. 그 오차는 표본 수가 늘수록 대략 반비례해 줄어든다.
일련번호 몇 개로 무엇을 알 수 있나

새로 나온 물건을 몇 개 손에 쥐면 번호가 눈에 들어온다. 택배 상자 옆면의 관리 번호, 영수증 하단의 발행 번호, 공연 티켓 스텁에 찍힌 일련번호. 번호 하나만 있을 때는 거기서 읽을 것이 없다. 그런데 같은 물건을 네댓 개쯤 모아 놓고 번호를 나란히 적어 보면 숫자들이 제법 넓게 흩어져 있다. 그러면 이런 물음이 따라붙는다. 이 회사는 지금까지 이걸 몇 개나 만들었을까?
물음이 답할 만한 것이 되려면 조건이 하나 필요하다. 번호가 1번부터 차례로 빠짐없이 붙어 있어야 하는데, 한 대를 만들 때마다 다음 번호를 찍는 방식이면 그렇게 된다. 이 조건이 붙는 순간 번호는 이름표가 아니라 셈이 된다. 100번이 찍혀 있다는 것은 그 앞에 99개가 있었다는 기록이기도 하다.
기호는 셋이면 충분하다. 전체 개수를 $N$이라 하자. $N$은 모르는 값이고, 그중 $k$개를 우연히 손에 넣어 번호를 읽었을 뿐이다. 손에 든 번호 중 가장 큰 것을 $m$이라 부른다.
이 상황에는 이름이 붙어 있다. 독일 탱크 문제(German tank problem)다. 2차대전 중 연합군이 노획하거나 파괴한 독일 전차에서 섀시·기어박스·엔진의 부품 번호를 떼어 적었고, 그 번호들로 독일이 한 달에 전차를 몇 대나 뽑아내는지를 추정한 데서 왔다. 전선에서 몇 대를 만났느냐가 아니라, 만난 몇 대에 찍힌 숫자가 근거였다. 이미 손에 들어온 부품 번호에서 답을 꺼낸 셈이다.
함정은 첫 직관에 있다. 본 것 중 가장 큰 번호가 60번이라면 적어도 60대는 만들었다는 뜻이니, 60을 답으로 삼고 싶어진다. 실제로 그 숫자는 확실한 근거를 하나 쥐고 있다. 60번이 찍힌 물건이 여기 있으니 전체가 60개보다 적을 수는 없다.
문제는 그 근거가 한쪽 방향으로만 확실하다는 점이다. 60은 아래에서 받쳐 주는 바닥일 뿐, 위쪽으로 얼마나 더 있는지에 대해서는 아무 말도 하지 않는다. 그래서 60은 답이 아니라 실마리다. 이 글은 실마리가 왜 실마리에 그치는지를 먼저 밝히고, 그 위에 무엇을 얼마나 보태야 답이 되는지를 센다.
최댓값은 언제나 작게 본다 — 그래서 식이 이렇다
표본의 최댓값 $m$은 전체 개수 $N$보다 클 수 없다. 운이 아주 좋아 마지막 번호를 집었을 때만 둘이 같고, 나머지 모든 경우에는 $m$이 $N$보다 작다. 그러니 $m$을 그대로 답으로 쓰면 답은 늘 실제보다 작게 나온다. 조금 작은 게 아니라 한쪽으로만 작다. 절대 넘치는 법이 없는 추정인 셈이다.
얼마나 작은지는 숫자로 확인할 수 있다. 전체가 250개인 세계에서 다섯 개를 뽑으면 최댓값의 평균은 209.2다. 스무 개를 뽑아도 239.0에 머문다. 표본을 네 배로 늘려 스무 개를 봐도 여전히 열 개 넘게 모자란다는 뜻이다.
최댓값은 표본을 늘릴수록 참값에 다가가지만, 언제나 아래쪽에서만 다가간다. 그리고 모자란 양은 우연이 아니라 표본 크기가 정해 준다. 정해진 양이라면 되돌려 놓을 수도 있다.
보태야 할 양은 손에 든 번호가 알려 준다. 번호를 작은 것부터 줄 세워 보자. 1번부터 $m$번까지 자리가 $m$개 있는데, 그중 실제로 본 것은 $k$개뿐이고 나머지 $m – k$개는 못 본 번호다.
못 본 번호가 들어갈 자리는 정해져 있다. 첫 번호 앞의 틈, 그리고 이웃한 두 번호 사이의 틈들이다. 첫 번호 앞에 틈이 하나, 번호 사이에 틈이 $k-1$개이니 틈은 모두 $k$개다. 못 본 번호 $m-k$개가 그 $k$개의 틈에 나뉘어 들어가 있으므로, 틈 하나의 평균 길이는 못 본 번호 수를 틈 수로 나눈 값이다. 정리하면 $m/k – 1$이 된다.
여기까지는 관측한 사실만 센 것이다. 본 번호들 사이가 평균 얼마나 벌어져 있는지는 계산이 아니라 관찰에 가깝다. 이제 한 걸음만 더 가면 된다.
$m$ 위에도 못 본 번호들이 있다. 그것이 마지막 틈이다. 그 틈이 아래쪽 틈들보다 특별히 넓거나 좁을 이유가 없으니, 길이도 평균적으로 같다고 본다. 이 글에서 짐작이 들어가는 자리는 여기 하나뿐이다. 그렇게 보면 전체 개수의 추정값은 최댓값 위에 틈 하나를 얹은 값이 된다.
교과서에 자주 나오는 예로 손으로 한 번 굴려 보자. 번호 네 개 {19, 40, 42, 60}을 봤다고 하자. 표본 크기가 4, 최댓값이 60이니 계산에 필요한 것은 이 둘뿐이고, 19와 40과 42가 어디쯤에 있었는지는 굳이 보지 않아도 된다. 60번까지의 자리 60개 중 본 것이 4개이니 못 본 번호가 56개, 틈은 4개, 틈 하나의 평균 길이는 14다. 최댓값 60 위에 그 14를 얹으면 74가 나온다. 답은 60이 아니라 74다.
식 1이 이 글의 답이다. 눈으로 본 60보다 14가 더 있다고 말하는 식이고, 그 14는 손에 든 번호들이 서로 얼마나 떨어져 있었는지에서 그대로 나온다. 아래로는 이 식이 왜 하필 이 모양인지, 한 번의 답이 얼마나 흔들리는지, 그리고 1947년에 실제로 무슨 일이 있었는지를 차례로 확인한다. 식 자체는 여기서 이미 다 나왔다.
왜 하필 이 식인가 — 최댓값의 분포
틈 이야기는 직관이다. 맞는지 보려면 최댓값이 어떤 값을 얼마나 자주 갖는지 세어야 하고, 세는 데 기호가 하나 필요하다. $\binom{n}{k}$는 서로 다른 $n$개 중에서 $k$개를 고르는 가짓수다. 여섯 개 중 둘을 고르는 방법이 15가지이므로 $\binom{6}{2} = 15$이다.
말로 먼저 놓자. 최댓값이 정확히 $m$이려면 표본 안에 $m$번이 들어 있어야 하고, 나머지 $k-1$개는 모두 $m$보다 작은 번호에서 나와야 한다. 그런 경우의 수는 $m-1$개 중에서 $k-1$개를 고르는 가짓수이고, 전체 경우의 수는 $N$개 중 $k$개를 고르는 가짓수다. 둘을 나누면 확률이다.
식 2로 최댓값의 평균을 계산하면 $E[M] = k(N+1)/(k+1)$이 나온다. 이 값을 식 1에 넣으면 정확히 $N$이 된다. 이항계수 항등식 두 개면 끝나는 계산이다.
평균이 참값에 맞는다는 성질에는 이름이 있다. 비편향(unbiased)이다. 한 번의 추정이 정확하다는 뜻이 아니라, 같은 방식으로 수없이 추정해 그 값들을 평균 내면 참값에 닿는다는 뜻이다. 250개짜리 세계를 놓고 표본 크기를 1부터 50까지 바꿔 가며 정확식으로 계산해 보면, 식 1의 기댓값은 일곱 경우 모두 정확히 250이 된다.
추정은 얼마나 흔들리나
평균이 맞는다는 것과 한 번의 답이 믿을 만하다는 것은 다르다. 추정할 때마다 값은 위아래로 흔들리고, 그 크기는 표준편차로 잰다. 흔들림의 크기는 표본 크기와 전체 개수가 정한다.
250개짜리 세계에 식 3를 넣으면 방향이 분명하다. 표본이 2개면 88.2, 5개면 41.9, 10개면 22.4, 20개면 11.5다. 눈여겨볼 것은 줄어드는 속도다.
표본을 2개에서 20개로 열 배 늘리면 흔들림이 88.2에서 11.5로 대략 8분의 1이 된다. 통계에서 익숙한 것은 표본 수의 제곱근에 반비례하는 감소, 즉 열 배를 모아야 오차가 3분의 1로 주는 쪽이다. 그런데 식 3는 표본 수에 대략 반비례한다. 평균 추정의 $1/\sqrt{k}$보다 빨리 준다는 뜻이고, 번호 하나를 더 얻는 값어치가 그만큼 크다.
이제 직접 굴려 볼 차례다. 250개짜리 세계에서 표본을 뽑아 식 1로 추정하기를 10만 번 반복하니, 실측 표준편차는 표본 2개에서 88.2, 5개에서 41.9, 10개에서 22.5, 20개에서 11.4였다. 이론값과 0.1 안에서 맞는다. 그림 1에서 분포가 좁아지는 모양이 보인다. 위쪽에 벽처럼 잘린 경계가 생기는 것은 최댓값이 참값을 넘지 못하기 때문이다.
그림 2는 식 1을 표본평균을 두 배 하고 1을 빼는 방법과 나란히 놓았다. 표본 20개에서 두 방법의 RMSE(root mean square error, 평균제곱오차의 제곱근)는 11.4와 31.1이다. 최댓값을 그대로 쓰면 15.4인데, 그림에는 넣지 않았다. 평균 두 배는 큰 번호가 쥐고 있는 정보를 흘려버려 가장 나쁘다.
1947년, 실제로 이렇게 맞혔다
전쟁이 끝나고 2년 뒤, 이 방법을 실제로 굴렸던 두 저자가 미국통계학회지(JASA)에 결과를 공개했다. Ruggles와 Brodie의 1947년 논문이다. 89쪽 표에는 월별로 세 숫자가 나란히 실려 있다. 일련번호 분석의 추정, 당시 정보기관의 추정, 전후에 확인된 슈페어 부처의 실제 생산량이다.
그림 3의 세 달을 숫자로 읽으면 이렇다. 1941년 6월 실제 생산은 271대였는데, 정보기관 추정은 1,550대로 실제의 5.7배였고 일련번호 추정은 244대로 10% 낮았다. 1940년 6월은 실제가 122대다. 정보기관 추정 1,000대로 8.2배, 일련번호 추정은 169대로 39% 높았다. 1942년 8월은 실제 342대에 정보기관 추정 1,550대로 4.5배, 일련번호 추정은 327대로 4% 낮았다.
이 사례를 소개하는 글들이 흔히 인용하는 "월평균 246 / 1,400 / 245" 세 숫자는 1947년 원전 표에 없는 행이다. 이 글은 원전 89쪽에서 확인한 세 달의 값만 쓴다.
원전을 보면 이들이 쓴 방법은 이 글이 유도한 교과서 공식이 아니었다. 독일의 섀시 번호는 제조사별 구간과 모델별 100 단위 블록으로 미리 배정돼 있었고, 블록 끝에는 쓰이지 않은 번호가 남았다. 연구팀은 표본의 끝 두 자리가 어디에 몰리는지를 읽어 블록이 얼마나 채워졌는지를 역산했다.
1번부터 빈틈없이 이어지는 번호라는 전제가 현실에서는 깨져 있었고, 깨진 자리의 모양 자체가 정보였다. 반대로 기어박스 번호는 달랐다. 전차 종류마다 한두 개의 끊기지 않은 오름차순 열로 이어졌고, 그래서 표본이 아주 적어도 정확했다. 공식이 이긴 게 아니다. 번호 체계가 어떻게 만들어졌는지를 읽어낸 쪽이 이겼다.
gearbox markings of one relatively new German tank offered the same possibilities … as a large sample of chassis serial numbers
비교적 새 독일 전차 한 대의 기어박스 각인이 섀시 일련번호를 대량으로 모은 것과 같은 구실을 했다.
Ruggles & Brodie (1947)어디든 번호가 있으면 닿는다
같은 계산은 전차가 아니어도 돌아간다. 필요한 재료가 번호 몇 개뿐이니, 번호가 순서대로 붙는 것이면 무엇이든 대상이 된다. 1885년 아일랜드의 먼스터 은행(Munster Bank)이 문을 닫았을 때가 그런 경우였다. 청산 과정에서 코크(Cork) 본점의 배당금을 찾아가지 않은 계좌 48건의 번호가 기록에 남았는데, 그중 가장 큰 번호가 1812번이었다.
이 48건은 누가 고른 표본이 아니다. 배당금을 찾아갈 형편이 되는지, 주소가 바뀌었는지 같은 사정이 계좌 번호와 상관없이 갈랐으니, 본점 고객 명부에서 무작위로 뽑힌 것에 가깝다. 계좌 번호를 1번부터 순서대로 발급했다면, 이 본점에는 고객이 모두 몇 명 있었을까. 표본 크기와 최댓값이 있으니 식 1에 넣기만 하면 된다.
from fractions import Fraction
from math import sqrt
k = 48 # 배당 미수령 계좌 수 (표본 크기)
m = 1812 # 그중 가장 큰 계좌 번호
N_hat = Fraction(m * (k + 1), k) - 1
sd = sqrt((float(N_hat) - k) * (float(N_hat) + 1) / (k * (k + 2)))
print(f"추정 고객 수: {N_hat} = {float(N_hat)}")
print(f"흔들림(sd) : {sd:.1f}")추정 고객 수: 7395/4 = 1848.75
흔들림(sd) : 37.31848.75명이다. 표본 48건에서 흔들림은 37.3 정도이고, 같은 데이터로 계산한 정확 95% 신뢰구간은 1812에서 1926 사이다. 구간이 위아래로 대칭이 아닌 점이 눈에 띈다. 아래 끝이 1812인 것은 그 번호를 실제로 봤기 때문이다.
1812번 계좌가 있었으니 고객은 최소한 1812명이고, 그보다 적을 가능성은 0이다. 반면 위쪽은 열려 있어서, 우리가 유독 낮은 번호만 골라 봤을 가능성이 남는다. 그 가능성을 95%까지 끌어모아도 1926에서 멈춘다. 백 년도 더 지난 은행 장부에서, 남은 계좌 번호 48개가 본점 고객 수를 100명 남짓한 폭으로 지목하는 셈이다. 은행이 남긴 것은 고객 명부가 아니라 찾아가지 않은 배당금 목록뿐인데도 그렇다.
전제가 깨지면 계산도 함께 흔들린다. 첫째, 표본이 번호 전체에서 고르게 나와야 한다. 오래된 낮은 번호가 특정 지역이나 특정 전선에만 몰려 있으면 최댓값이 실제보다 낮게 잡힌다. 둘째, 번호가 1번부터 빈틈없이 이어져야 한다 — 1947년 원전이 마주친 블록 갭이 이 전제가 깨진 자리다. 셋째, 표본이 너무 적으면 흔들림이 답만큼 커진다. 표본이 하나뿐이면 250개짜리 세계에서 표준편차가 144.3에 이른다.
이 계산에 특별한 데이터가 필요하지 않다는 점이 오히려 문제를 만든다. 출하 번호든 발급 번호든, 순서대로 붙어 있고 몇 개가 밖으로 새어 나가는 순간 전체 규모가 함께 새어 나간다. Clark 등(2021)은 번호를 난수로 만들거나 일부러 높은 번호에서 시작하는 관행을 든다. 순서대로 붙은 번호가 개수를 그대로 흘린다는 것을 알기 때문이다. 수표책이 1번이 아니라 100번부터 시작하는 것이 그런 예다.
방어가 따로 필요할 만큼 번호는 많은 것을 말한다. 뒤집어 말하면, 번호가 순서대로 매겨진 것이라면 몇 개만 보고도 전체 개수를 오차 범위와 함께 말할 수 있다. 그리고 그 오차는 번호를 더 모으는 만큼, 대략 반비례해 줄어든다.
더 읽기
- Ruggles, R. & Brodie, H. (1947), "An Empirical Approach to Economic Intelligence in World War II", Journal of the American Statistical Association 42(237):72–91. https://doi.org/10.1080/01621459.1947.10501915
- Clark, G., Gonye, A. & Miller, S. J. (2021), "Lessons from the German Tank Problem", Mathematical Intelligencer 43(4):19–28. http://arxiv.org/abs/2101.08162v2
- Höhle, M. & Held, L. (2006), "Bayesian Estimation of the Size of a Population", LMU SFB 386 Discussion Paper 499. https://doi.org/10.5282/ubm/epub.2094
- 관련 글: 벤포드 법칙 검정에 파일 3,619개가 걸렸다 — 보이는 숫자만으로 보이지 않는 것을 추정하는 다른 방식.