Das Benfordsche Gesetz - noch nie gehört?
Falls Sie davon noch nie gehört haben, dann wird Sie das
Folgende vermutlich überraschen! Wenn Sie das Gesetzt schon kennen,
können Sie es mit dem hier angebotenen kleinen Python-Script auf
Ihrem Rechner trotzdem mal ausprobieren. Hat Ihre Festplatte den
typischen nach Benford zu erwartenden Effekt bei der Dateigröße,
oder tanzt sie aus der Reihe?
Die Häufigkeit der ersten Ziffer
Wenn Sie sich eine Liste mit Zahlen anschauen, sagen wir z.B.
die Länge von Flüssen, alle Zahlenwerte aus der Tageszeitung oder
die Einwohnerzahlen der Städte eines Landes, was würden Sie
bezüglich der Häufigkeit der ersten Ziffer einer jeden Zahl
erwarten?
Es gibt 9 mögliche Ziffern (die 0 kann nicht als erste Ziffer
auftreten). Vermutlich erwarten Sie, das jede Ziffer mit der
gleichen Häufigkeit vorhanden ist, also jeder der neun Ziffern mit
11,1% Wahrscheinlichkeit vorkommt?
Durch die Entdeckung von Benford wissen wir aber, dass das nicht so
ist, jedenfalls nicht für viele Daten aus der realen Welt!
Zufallszahlen kommen tatsächlich genau mit der erwarteten
Häufigkeit von 11,1% in der ersten Ziffer vor, aber Daten aus der
realen Welt zeigen eine Vorliebe für kleine Werte als erste
Ziffer!
Nach Benford treten die ersten Ziffern in folgender Häufigkeit
auf:
| 1. Ziffer |
Häufigkeit in % |
| 1 |
30.1 |
| 2 |
17.6 |
| 3 |
12.5 |
| 4 |
9.7 |
| 5 |
7.9 |
| 6 |
6.7 |
| 7 |
5.8 |
| 8 |
5.1 |
| 9 |
4.6 |
Wenn Sie nach "Benfords Law" suchen, werden sie im Web viele Seiten
finden, die dieses Phänomen beschreiben. Wikipedia hat einen guten
Artikel dazu:
Das Benfordsche Gesetz
Ein kleines Script zu Berechnung der Häufigkeit der 1. Ziffer
Ich habe ein kleines Script,
BenfordLaw.pyw, geschrieben. Das Script
berechnet aus den Dateigrößen die Häufigkeit der ersten Ziffer, Sie
können also auf Ihrer Festplatte, auf einem anderen Laufwerk oder
einer CD prüfen, ob die Größe der Dateien (in Bytes) auch dem
Benford-Gesetzt folgt.
Welche Voraussetzungen benötige ich für das Script?
Das Script wurde unter Win2000 entwickelt und getestet [1]. Es ist
in Python geschrieben. Python ist eine interessante Scriptsprache und
Python muss auf Ihrem Rechner installiert sein, damit sie das Script
ausführen können! Python gibt es hier:
www.python.org. Getestet habe
ich mit der Version 2.3 (installieren Sie eine Version 2.x, nicht 3.x!). Nach Download
und Installation von Python kennt Windows die Verknüpfung für
Python-Files, die entweder auf .py oder
.pyw endet. Mit einem einfachen Doppelklick
können Sie nun Python-Scripte starten.
[1]: Dank Tipps von einem Anwender sollte die aktuelle Version
auch unter Linux laufen! Eventuell müssen Sie die 1. Zeile im
Script an Ihre Linux-Version anpassen und die Fileendung in py ändern.
Wie installiere ich das Script?
Damit Sie BenfordLaw.pyw verwenden können,
müssen Sie das Script noch von dieser Seite laden (Infos am Ende der
Seite). Das geladen Zip-File können Sie einfach in einen beliebigen
Ordner auspacken und dann, wenn Python schon installiert ist, das Script durch
Doppelklick auf BenfordLaw.pyw starten.
Die Bedienung
Die Bedienung ist sehr einfach - Sie müssen nur einen Pfad eingeben.
Das Script sucht dann ab diesen Pfad, inklusive aller Unterverzeichnisse,
nach den Dateien und gibt das Ergebnis, also die Häufigkeit, mit der die
erste Ziffer in der Dateigröße vorkommt, aus.
Der Dialog des Scripts sieht so aus:
Im Bildschirmfoto sehen wir auch gleich ein Beispiel.
Hier wurden alle Dateigrößen in c:\programme\ bewertet (17786 Dateien)
und wie man sieht, stimmt das Ergebnis sehr gut mit der
nach Benford erwarteten Häufigkeit für die erste Stelle überein!
(Hinweis: Dateien mit 0 Byte werden ignoriert).
Schauen wir ein zweites Ergebnis an:
Pfad: f:\
Anzahl Files berücksichtigt: 16259
Ziffer 1: 34.04% gefunden (30.10% theoretisch erwartet)
Ziffer 2: 17.84% gefunden (17.60% theoretisch erwartet)
Ziffer 3: 10.43% gefunden (12.50% theoretisch erwartet)
Ziffer 4: 12.51% gefunden ( 9.70% theoretisch erwartet)
Ziffer 5: 7.88% gefunden ( 7.90% theoretisch erwartet)
Ziffer 6: 6.40% gefunden ( 6.70% theoretisch erwartet)
Ziffer 7: 3.19% gefunden ( 5.80% theoretisch erwartet)
Ziffer 8: 3.24% gefunden ( 5.10% theoretisch erwartet)
Ziffer 9: 4.48% gefunden ( 4.60% theoretisch erwartet)
Hier handelt es sich um die CD aus der Zeitschrift Chip 02/2003. Die 4
kommt etwas häufiger vor und 7 und 8 sind etwas seltener als erwartet,
aber die Tendenz stimmt ganz gut.
Sehen wir uns noch ein letztes Ergebnis an:
Pfad: f:
Anzahl Files berücksichtigt: 696
Ziffer 1: 25.00% gefunden (30.10% theoretisch erwartet)
Ziffer 2: 13.36% gefunden (17.60% theoretisch erwartet)
Ziffer 3: 8.62% gefunden (12.50% theoretisch erwartet)
Ziffer 4: 5.32% gefunden ( 9.70% theoretisch erwartet)
Ziffer 5: 30.89% gefunden ( 7.90% theoretisch erwartet)
Ziffer 6: 4.74% gefunden ( 6.70% theoretisch erwartet)
Ziffer 7: 4.89% gefunden ( 5.80% theoretisch erwartet)
Ziffer 8: 3.88% gefunden ( 5.10% theoretisch erwartet)
Ziffer 9: 3.30% gefunden ( 4.60% theoretisch erwartet)
Dieses Beispiel weicht, besonders wegen der Ziffer 5, deutlich von
der Erwartung ab! Es handelt sich dabei um die CD, die der Zeitschrift
c't 9/2003 beilag. Auf dieser CD sind viele kleine HTML-Files vorhanden,
die alle jeweils ein Programm beschreiben und die daher alle sehr ähnlich
sind und alle um die 5xxx Bytes enthalten.
Dieses Beispiel zeigt, zumindest im Ansatz, das man durch Prüfung von
Zahlenreihen nach Benford durchaus eine Information erhält, ob es
sich um "natürliche" Zahlenreihen handelt, oder ob sich eher um systematisch
erzeugte, nicht dem Benford-Gesetz gehorchende Verteilung handelt.
Einige der Seiten über Benfords Law behaupten,
dass z.B. einige Versicherungen und Finanzämter diese Methode
benutzen, um verdächtigen Abrechnungen auf die Schliche zu
kommen.
Hier nun endlich der Download-Link:
Zur Erinnerung, es ist ein Script in Python, also zuerst Python
installieren, dann das heruntergeladene Zipfile in ein beliebiges
Verzeichnis auspacken und durch Doppelklick auf
BenfordLaw.pyw das Script starten!
Das Programm kann kostenlos verwendet werden. Keine Haftung.
Download:
benfordlaw_v_0_2.zip (ca. 3 KByte)
Vielleicht sind es doch die kleinen Dinge, die in unsere Welt zählen?
Oder es gibt einfach mehr kleine Dinge! ;-)
Falls Sie Kommentare oder Fragen haben schreiben Sie mir eine Email.
|