Ile Niemcy zbudowali czołgów czyli o estymacji rozmiaru populacji 08/16/2010
Posted by Mikołaj Morzy in eksploracja danych, nauka.trackback
W trakcie wojny ważnym zadaniem wywiadów była ocena mocy produkcyjnych przeciwników. W szczególności, Anglicy próbowali za wszelką cenę dowiedzieć się, ile Niemcy produkowali czołgów miesięcznie. Do dyspozycji mieli techniki wywiadowcze, informacje przesyłane przez organizacje podziemne z okupowanych krajów, a także zdjęcia lotnicze i modele niemieckiego przemysłu. Na podstawie takich danych wywiad dokonywał szacunków niemieckiego potencjału przemysłowego. Co ciekawe, szacunki podawane przez angielski wywiad były dramatycznie zawyżone.
Zupełnie niespodziewanie w sukurs aliantom przyszła statystyka. Anglicy posiadali jeszcze rzecz bezcenną: próbki badanej populacji. Populacją był, rzecz jasna, zbiór wszystkich niemieckich czołgów, natomiast próbkę stanowiły wraki zdobyte na polu walki we Francji i Afryce. Wraki te posiadały tabliczki znamionowe, na których wytłoczono numery seryjne. Alianci prawidłowo zakładali, że przywiązani do porządku Niemcy będą numerować produkowane czołgi w sposób spójny i niesprzeczny, w szczególności, że numeracja będzie wzrastała. Aby ocenić maksymalny numer seryjny czołgu na podstawie dostępnej próbki zdobytych wraków posłużono się następującą formułą:
, gdzie to estymowany rozmiar populacji, to rozmiar próbki, a to maksymalny numer seryjny w próbce.
Wyniki okazały się zdumiewająco dobre. Poniżej zamieściłem porównanie oszacowań i rzeczywistej produkcji czołgów dla dwóch różnych momentów wojny:
miesiąc | rzeczywista produkcja | przewidywania wywiadu | statystyka |
---|---|---|---|
czerwiec 1940 | 122 | 1000 | 169 |
czerwiec 1941 | 271 | 1550 | 244 |
sierpień 1942 | 342 | 1550 | 327 |
Z czystej ciekawości postanowiłem sprawdzić, jak ta formuła zadziała dla danych syntetycznych. Wygenerowałem zbiór liczący sobie ponad różnych liczb i losowałem z niego próbki o bardzo niewielkim rozmiarze, próbując znaleźć oryginalny rozmiar populacji na podstawie maksymalnej liczby znajdowanej w każdej próbce. Poniżej zamieszczam wynik tego ćwiczenia:
Zauważcie, że dysponując próbką stanowiącą zaledwie 0.01% (jedną dziesięciotysięczną) rozmiaru oryginalnej populacji szacowany rozmiar tej populacji jest obarczony zaledwie 2% błędem. Jeśli do dyspozycji mamy 0.02% populacji, nie powinniśmy się pomylić o więcej niż 1%. Podejrzewam, że rzeczywiste numery seryjne są generowane w bardziej skomplikowany sposób, a nie posiadam pod ręką niestety żadnego zbioru danych, na którym mógłbym to sprawdzić. W moim przypadku zbiór liczb odpowiadał ciągłej sekwencji rosnących liczb całkowitych. Jeśli ktoś chce/ma czas/ma ochotę, to z przyjemnością upublicznimy wynik podobnego eksperymentu na rzeczywistych danych na tych łamach.
Warto zapamiętać ten trik, bo może okazać się przydatny w wielu niespodziewanych miejscach. Np. do wykradzenia tajemnicy handlowej konkurencji. W 2008 roku posłużono się podobną metodą, aby na podstawie numerów seryjnych iPhone’ów zamieszczanych przez właścicieli na forum internetowym oszacować liczbę telefonów sprzedanych przez Apple’a.
Kulerskie, ale skąd ten wzór właściwie? Masz jakieś odnośniki?
Niestety nie, natknąłem się na tę historyjkę przypadkiem (może być apokryficzna) i dodałem do niej prosty test. Jestem szczerze zdumiony dokładnością tak prostego triku. Jak pisałem, w wolnej chwili postaram się znaleźć rzeczywisty zbiór danych z prawdziwymi numerami seryjnymi i sprawdzić, czy przy rzeczywistych danych wzór działa równie dobrze.