Bild einer Blume

Benfords Law

Nichts unter der Sonne ist Zufall - Lessing

Software
Opera-Tool
Mbox merge
Mbox Import
Benfords Law

Eclipse
Eclipse und C/C++

Office
Excel Balkengrafik
Excel Farben

Artikel
Computer rechnen anders!
Impressum

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:

Bildschirmfoto BenfordLaw


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.

Mailadresse als Bild (wegen Spam leider nötig...)
Top     Home Valid XHTML 1.0!