KAPITEL 4
Kontinuierliche Verteilungen
Die Verteilungen, mit denen wir bislang gearbeitet haben, werden als empirische Verteilungen bezeichnet, weil sie auf empirischen Beobachtungen aufbauen, was zwangsläufig
gleichbedeutend mit endlichen Stichproben ist.
Die Alternative dazu ist eine kontinuierliche Verteilung, die durch eine kontinuierliche
CDF (statt einer Treppenfunktion) charakterisiert ist. Viele reale Phänomene lassen sich
durch kontinuierliche Verteilungen approximieren.
Die Exponentialverteilung
Ich beginne mit der Exponentialverteilung, weil sich damit leicht arbeiten lässt. In der
Realität begegnet man der Exponentialverteilung beispielsweise, wenn man sich mit Serien
von Ereignissen befasst und die Zeitspanne zwischen den einzelnen Ereignissen misst, die
als »Zwischenankunftszeiten« bezeichnet werden (engl. interarrival times). Wenn die
Auftretenswahrscheinlichkeit der Ereignisse zu jedem beliebigen Zeitpunkt gleich ist, hat
die Verteilung der Zwischenankunftszeiten Ähnlichkeit mit einer Exponentialverteilung.
Die CDF der Exponentialverteilung lautet:
CDF(x) = 1 - e-λ x
Der Parameter λ bestimmt die Form der Verteilung. Abbildung 4-1 zeigt, wie die CDF für
λ = 2 aussieht.
Allgemein berechnet sich der Mittelwert einer Exponentialverteilung als 1/λ, der Mittelwert dieser Verteilung ist also 0,5. Der Median entspricht log(2)/λ, das ist grob gerechnet
0,35.
Als Beispiel einer Verteilung, die angenähert exponential ist, sehen wir uns die Zwischenankunftszeiten von Neugeborenen an. Am 18. Dezember 1997 wurden in einem Krankenhaus in Brisbane 44 Kinder geboren.1 Die Geburtszeitpunkte aller 44 Kinder wurden in
einer lokalen Zeitung bekannt gegeben; Sie finden die Daten in der Datei babyboom.dat.
1 Dieses Beispiel basiert auf den Informationen und Daten aus Dunn, »A Simple Dataset for Demonstrating
Common Distributions« (Journal of Statistics Education, 7(3), 1999).
|
43
Abbildung 4-1: CDF einer Exponentialverteilung
Abbildung 4-2 zeigt die CDF der Zwischenankunftszeiten in Minuten. Dem Anschein
nach hat sie die Form einer Exponentialverteilung, aber wie können wir uns in diesem
Punkt vergewissern?
Abbildung 4-2: CDF der Zwischenankunftszeiten
Eine Möglichkeit besteht darin, die komplementäre CDF, 1 – CDF(x), auf einer logarithmierten y-Skala abzutragen. Für Daten aus einer Exponentialverteilung ist das Ergebnis
eine Gerade. Sehen wir mal, ob das hier funktioniert.
44
|
Kapitel 4: Kontinuierliche Verteilungen
Wenn Sie die komplementäre CDF (CCDF) eines Datensatzes plotten, den Sie für exponentialverteilt halten, würden Sie eine Funktion wie die folgende erwarten:
y e-λx
Nach Logarithmierung beider Seiten ergibt sich:
log(y) -λx
Auf einer logarithmierten y-Skala ist die CCDF eine Gerade mit Steigung –λ.
Abbildung 4-3 zeigt die CCDF der Zwischenankunftszeiten auf einer logarithmierten
y-Skala. Sie ist nicht absolut gerade, was darauf hinweist, dass die Exponentialverteilung
nur eine Annäherung ist. Sehr wahrscheinlich trifft die zugrunde liegende Annahme – dass
eine Geburt zu jedem beliebigen Zeitpunkt gleichwahrscheinlich ist – nicht zu 100% zu.
Abbildung 4-3: CCDF der Zwischenankunftszeiten
Übung 4-1:
Für kleine n würden wir nicht erwarten, dass eine empirische Verteilung exakt mit einer
kontinuierlichen Verteilung übereinstimmt. Eine der Möglichkeiten, den Grad der Passgenauigkeit zu überprüfen, besteht darin, eine Stichprobe aus der kontinuierliche Verteilung zu ziehen und zu sehen, wie gut sie zu den Daten passt.
Die Funktion expovariate im Modul random zieht für einen gegebenen Wert λ Zufallswerte
aus einer Exponentialverteilung. Erzeugen Sie damit 44 Werte aus einer Exponentialverteilung mit dem Mittelwert 32,6. Plotten Sie die CCDF auf einer logarithmierten
y-Skala und vergleichen Sie das Ergebnis mit Abbildung 4-3.
Tipp: Die logarithmierte y-Skala können Sie mit der Funktion pyplot.yscale anlegen.
Die Exponentialverteilung
|
45
Oder aber Sie nehmen, wenn Sie mit myplot arbeiten, die Funktion Cdf, die das optionale
logische Argument complement übernimmt, mit dem die Funktion bestimmt, ob eine CDF
oder eine CCDF geplottet wird, sowie die optionalen String-Argumente xscale und
yscale, die die Achsentransformation steuern. Eine CCDF mit einer logarithmierten
y-Skala würden Sie mit folgendem Funktionsaufruf plotten:
myplot.Cdf(cdf, complement=True, xscale=’linear’, yscale=’log’)
Übung 4-2:
Erfassen Sie die Geburtstage aller Ihrer Kommilitonen aus einer Ihrer Veranstaltungen,
sortieren Sie sie und berechnen Sie die Zwischenankunftszeiten in Tagen. Plotten Sie die
CDF der Zwischenankunftszeiten und anschließend die CCDF, Letztere mit logarithmierter y-Skala. Sieht das Ergebnis nach einer Exponentialverteilung aus?
Die Pareto-Verteilung
Die Pareto-Verteilung ist nach dem Ökonomen Vilfredo Pareto benannt, der mit ihrer
Hilfe die Einkommensverteilung beschrieben hat (siehe http://de.wikipedia.org/wiki/
Pareto-Verteilung). Später wurde sie auch dazu verwendet, Phänomene aus den Naturund Sozialwissenschaften zu beschreiben, unter anderem die Größe von Groß- und Kleinstädten, Sandkörnern und Meteoriten, Waldbränden und Erdbeben.
Die CDF der Pareto-Verteilung sieht so aus:
Die Parameter xm und a bestimmen Lage und Form der Verteilung. xm entspricht dem
kleinsten möglichen Wert. Abbildung 4-4 zeigt die CDF einer Pareto-Verteilung mit den
Parametern xm = 0,5 und a = 1.
Der Median dieser Verteilung beträgt
ist also 1, das 95. Perzentil ist dagegen 10. Im Vergleich dazu liegt das 95. Perzentil der
Exponentialverteilung mit dem Median 1 nur bei 1,5.
46
|
Kapitel 4: Kontinuierliche Verteilungen
Abbildung 4-4: CDF einer Pareto-Verteilung
Es gibt einen einfachen Sichttest, mit dem man entscheiden kann, ob eine empirische
Verteilung einer Pareto-Verteilung entspricht: Auf einer Log-Log-Skala entspricht ihre
CCDF einer Geraden. Wenn Sie die CCDF einer Stichprobe aus einer Pareto-Verteilung
auf einer linearen Skala abtragen, würden Sie eine Funktion wie diese hier erwarten:
Nach Logarithmierung beider Seiten ergibt sich:
log(y) –a (log(x) – log(xm))
Wenn Sie also log(y) gegen log(x) abtragen, sollte das Ergebnis wie eine Gerade mit
Steigung –a und Achsenabschnitt –a log(xm) aussehen.
Übung 4-3:
Im Modul random ist die Funktion paretovariate enthalten, die für eine gegebene ParetoVerteilung Zufallswerte erzeugt. Man kann einen Parameter für a übergeben, aber nicht
für xm. Der Standardwert für xm ist 1; eine Verteilung mit einem anderen Parameter
können Sie durch Multiplikation mit xm erzeugen.
Schreiben Sie eine Hüllfunktion namens paretovariate, die Parameter für a und xm
übernimmt und mithilfe von random.paretovariate Werte für eine zweiparametrige
Pareto-Verteilung erzeugt.
Erzeugen Sie mit Ihrer neuen Funktion eine Stichprobe aus einer Pareto-Verteilung.
Berechnen Sie die CCDF und plotten Sie sie auf einer Log-Log-Skala. Ist das Ergebnis
eine Gerade? Welche Steigung hat sie?
Die Pareto-Verteilung
|
47
Übung 4-4:
Um ein Gefühl für die Pareto-Verteilung zu bekommen, stellen Sie sich vor, wie die Welt
aussehen würde, wenn die menschliche Körpergröße Pareto-verteilt wäre. Für die Parameter xm = 100 cm und a = 1,7 erhalten wir eine Verteilung mit einem akzeptablen
Minimum von 100 cm und einem Median von 150 cm.
Erzeugen Sie mit dieser Verteilung 6 Milliarden Zufallswerte! Welchen Mittelwert hat
diese Stichprobe? Wie groß ist der Anteil der Population, der kleiner als der Mittelwert ist?
Und wie groß ist der größte Mensch in der Pareto-Welt?
Übung 4-5:
Das Zipfsche Gesetz basiert auf der Beobachtung, wie häufig verschiedene Wörter und
Begriffe verwendet werden. Die gebräuchlichsten haben eine besonders hohe Häufigkeit,
andererseits existieren viele weniger gebräuchliche, wie »Hapax legomenon«, die nur sehr
selten auftreten. Das Zipfsche Gesetz postuliert, dass die Worthäufigkeiten in einem Textkörper – die Linguisten nennen das einen »Korpus« – annähernd der Pareto-Verteilung
folgen.
Suchen Sie sich einen umfangreichen Korpus in elektronischem Format, egal in welcher
Sprache. Zählen Sie aus, wie oft jedes Wort vorkommt. Bestimmen Sie die CCDF der
Worthäufigkeiten und plotten Sie sie in einem log-log-skalierten Koordinatensystem.
Trifft das Zipfsche Gesetz zu? Angenähert wie groß fällt a aus?
Übung 4-6:
Die Weibull-Verteilung ist eine Generalisierung der Exponentialverteilung, die in der
Lebensdauer- und Ausfallanalyse eine Rolle spielt (siehe http://de.wikipedia.org/wiki/
Weibull-Verteilung). Ihre CDF lautet:
Können Sie eine Transformation finden, durch die sich die Weibull-Verteilung als gerade
Linie darstellen lässt? Was zeigen Steigung und Achsenabschnitt der Geraden an?
Erzeugen Sie mithilfe von random.weibullvariate eine Stichprobe aus einer Weibull-Verteilung und testen Sie Ihre Transformation damit.
Die Normalverteilung
Die Normalverteilung (seltener auch Gauß-Verteilung) ist deshalb die am häufigsten
verwendete kontinuierliche Verteilung, weil sich mit ihr – zumindest angenähert – sehr,
sehr viele Phänomene beschreiben lassen. Es zeigt sich, dass es gute Gründe für ihre
Allgegenwärtigkeit gibt, um die wir uns im Abschnitt »Der zentrale Grenzwertsatz« auf
Seite 84 kümmern werden.
48
|
Kapitel 4: Kontinuierliche Verteilungen
Die Normalverteilung besitzt viele Eigenschaften, durch die sie für die Datenanalyse sehr
zugänglich wird – aber ihre CDF gehört nicht dazu. Anders als die anderen Verteilungen,
die wir uns bisher angesehen haben, gibt es keinen in sich geschlossenen Ausdruck für die
CDF einer Normalverteilung. Die am häufigsten verwendete Alternative ist, sie als (Gaußsche) Fehlerfunktion zu schreiben, eine spezielle Funktion, die üblicherweise als erf(x)
notiert wird:
Die Parameter m und s entsprechen Mittelwert und Standardabweichung der Verteilung.
Wenn Ihnen jetzt wegen dieser Formeln die Augen schmerzen, lassen Sie sich bitte nicht
beunruhigen – mit Python lässt sich das einfach implementieren.2 Es gibt viele schnelle
und präzise Methoden, erf(x) zu approximieren. Eine davon finden Sie in der Datei erf.py,
die die Funktion NormalCdf sowie die (aus scipy.special importierte) Funktion erf
enthält. Die Definition von NormalCdf sieht beispielsweise so aus:
def NormalCdf(x, mu=0, sigma=1):
"""
CDF für einen Wert aus einer gegebenen Normalverteilung evaluieren.
Argumente:
x: Wert aus einer Normalverteilung [float]
mu: Mittelwert der Verteilung [numerisch]
sigma: Standardabweichung der Verteilung [numerisch]
Rückgabe:
CDF-Wert [float]
"""
return StandardNormalCdf((x - mu) / sigma)
Abbildung 4-5 zeigt die CDF der Normalverteilung mit den Parametern m = 2,0 und
s = 0,5. Das s-förmige Erscheinungsbild dieser Kurve ist ein einprägsames Charakteristikum der CDF einer Normalverteilung.
2 Ab Python 3.2 ist es sogar noch einfacher, erf ist im math-Modul enthalten.
Die Normalverteilung
|
49
Abbildung 4-5: CDF einer Normalverteilung
Abbildung 4-6: CDF der Geburtsgewichte unter einem Normalverteilungsmodell
Im vorigen Kapitel haben wir uns die Verteilung der Geburtsgewichte in den NSFG-Daten
angesehen. Abbildung 4-6 zeigt die empirische CDF des Gewichts aller Lebendgeburten
sowie die CDF einer Normalverteilung mit identischem Mittelwert und Standardabweichung.
Die Normalverteilung ist für diesen Datensatz ein gutes Modell. Ein Modell ist eine
nützliche Vereinfachung. Im vorliegenden Fall ist sie nützlich, weil sich die gesamte Ver50
|
Kapitel 4: Kontinuierliche Verteilungen
teilung mit lediglich zwei Zahlen, m = 116,5 und s = 19,9, zusammenfassen lässt und der
verbleibende Fehler (der Unterschied zwischen Modell und Daten) gering ist.
Unterhalb des 10. Perzentils zeigt sich eine Diskrepanz zwischen Daten und Modell; es
gibt mehr leichte Kinder, als wir nach der Normalverteilung erwarten würden. Wenn wir
daran interessiert wären, Frühgeburten zu studieren, wäre es wichtig, diesen Teil der
Verteilung in den Griff zu bekommen, es wäre also vielleicht nicht ganz angemessen, dort
nach einem Normalverteilungsmodell zu arbeiten.
Übung 4-7:
Der Wechsler Intelligenztest für Erwachsene (WIE) ist ein psychologisches Testverfahren
mit dem Ziel, die Intelligenz eines erwachsenen Probanden zu bestimmen.3 Die Normen
sind so transformiert, dass die Testergebnisse der Referenzpopulation normalverteilt sind
mit m = 100 und s = 15.
Untersuchen Sie mithilfe von erf.NormalCdf die Häufigkeit seltener Ereignisse in einer
Normalverteilung. Welcher Anteil der Population hat einen IQ oberhalb des Mittelwerts?
Wie groß ist der Anteil oberhalb von 115? Von 130? Von 145?
Ein »Six-Sigma-Ereignis« ist ein Wert, der um sechs Standardabweichungen vom Mittelwert abweicht, dementsprechend wäre ein Six-Sigma-IQ einer von 190. Bei einer Weltbevölkerung von sechs Milliarden – wie viele Personen mit einem IQ von 190 oder mehr
könnten wir erwarten?4
Übung 4-8:
Stellen Sie die CDF der Schwangerschaftsdauer aller Lebendgeburten grafisch dar. Sieht
das Ergebnis wie eine Normalverteilung aus?
Berechnen Sie Mittelwert und Standardabweichung der Stichprobe und plotten Sie eine
Normalverteilung mit diesen Parametern. Ist die Normalverteilung ein gutes Modell für
diese Daten?
Wenn Sie die empirische Verteilung mit zwei Kennwerten zusammenfassen müssten,
welche würden Sie wählen?
Der Normalwahrscheinlichkeitsplot
Für die Exponential-, die Pareto- und die Weibull-Verteilung gibt es einfache Transformationen, mit denen wir prüfen können, ob sich eine kontinuierliche Verteilung gut als
Modell für einen Datensatz eignet.
3 Ob er das wirklich leistet oder nicht, ist Gegenstand einer faszinierenden Kontroverse, deren gelegentliche
Untersuchung ich Ihnen empfehlen würde.
4 In diesem Zusammenhang interessiert Sie vielleicht die Lektüre dieses Artikels: http://en.wikipedia.org/wiki/
Christopher_Langan.
Der Normalwahrscheinlichkeitsplot
|
51
Für die Normalverteilung gibt es keine solche Transformation, es gibt allerdings eine
Alternative, den Normalwahrscheinlichkeitsplot. Er basiert auf Rankits: Wenn Sie aus
einer Normalverteilung n Werte erzeugen und sie sortieren, entspricht der k-te Rankit
dem Mittelwert der Verteilung des k-ten Werts.
Übung 4-9:
Schreiben Sie eine Funktion mit dem Namen Sample, die eine Stichprobe von sechs
Zufallszahlen aus einer Normalverteilung mit den Parametern m = 0 und s = 1 zieht.
Sortieren Sie die Werte und geben Sie sie zurück.
Schreiben Sie eine Funktion mit dem Namen Samples, die die Funktion Sample 1.000 Mal
aufruft und eine Liste mit 1.000 Listen zurückgibt.
Wenn Sie auf diese Liste von Listen die Funktion zip anwenden, enthält das Ergebnis
sechs Listen mit je sechs Werten. Berechnen Sie für jede dieser Listen den Mittelwert und
geben Sie das Ergebnis aus. Ich sage voraus, dass Sie etwas wie das Folgende bekommen
werden:
{–1,2672, –0,6418, –0,2016, 0,2016, 0,6418, 1,2672}
Wenn Sie die Anzahl der Aufrufe von Sample erhöhen, sollten die Ergebnisse in Richtung
dieser Werte konvergieren.
Rankits exakt zu berechnen, ist mäßig kompliziert, es gibt aber numerische Näherungsmethoden. Und es gibt ein Hauruck-Verfahren, das sogar noch einfacher zu implementieren ist:
1. Ziehen Sie aus einer Normalverteilung mit den Parametern m = 0 und s = 1 eine
Stichprobe derselben Größe wie Ihr Datensatz und sortieren Sie sie.
2. Sortieren Sie die Werte im Datensatz.
3. Plotten Sie die sortierten Werte des Datensatzes gegen die Zufallswerte.
Für große Datensätze funktioniert diese Methode gut. Für kleine Datensätze können Sie
eine Verbesserung erreichen, wenn Sie m(n+1) – 1 Werte aus der Normalverteilung
ziehen, wobei n der Umfang des Datensatzes und m ein Multiplikator ist. Beginnend
beim m-ten Element, übernehmen Sie anschließend alle m-ten Werte.
Diese Methode funktioniert auch mit anderen Verteilungen gut, vorausgesetzt, Sie wissen,
wie Sie eine Zufallsstichprobe dafür erzeugen.
Abbildung 4-7 zeigt einen Normalwahrscheinlichkeitsplot der Geburtsgewichte nach
dieser Hauruck-Methode.
52
|
Kapitel 4: Kontinuierliche Verteilungen
Abbildung 4-7: Normalwahrscheinlichkeitsplot des Geburtsgewichts
Der Kurvenverlauf in diesem Plot legt die Vermutung nahe, dass es Abweichungen von
der Normalverteilung gibt; dennoch ist dieses Modell für viele Zwecke gut (oder zumindest ausreichend) geeignet.
Übung 4-10:
Schreiben Sie eine Funktion mit dem Namen NormalPlot, die eine Sequenz mit Werten
übernimmt und einen Normalwahrscheinlichkeitsplot erzeugt. Eine Lösung finden Sie in
der Datei rankit.py.
Erzeugen Sie für die Wettlaufgeschwindigkeiten aus relay.py einen Normalwahrscheinlichkeitsplot. Ist die Normalverteilung ein gutes Modell für diese Daten? Eine Lösung
finden Sie in der Datei relay_normal.py.
Die Log-Normalverteilung
Wenn der Logarithmus einer Datenreihe einer Normalverteilung entspricht, sind die
Werte log-normal verteilt. Die CDF der Log-Normalverteilung ist die gleiche wie die der
Normalverteilung, nur dass x durch log(x) ersetzt wird.
CDFlog-normal(x) = CDFnormal(log(x))
Als Parameter der Log-Normalverteilung werden normalerweise m und s angegeben.
Denken Sie aber daran, dass diese Parameter nicht mit Mittelwert und Standardabweichung
Die Log-Normalverteilung
|
53
identisch sind; der Mittelwert einer Log-Normalverteilung entspricht exp(m + s2/2), und die
Standardabweichung ist regelrecht abstoßend.5
Es stellt sich heraus, dass das Gewicht von Erwachsenen annähernd log-normal verteilt
ist.6
Das Nationale Zentrum für die Vorbeugung chronischer Krankheiten und Gesundheitsförderung (National Center for Chronic Disease Prevention and Health Promotion) führt
als Teil des Kontrollsystems verhaltensbezogener Gesundheitsrisiken (Behavioral Risk
Factor Surveillance System, BRFSS) eine jährliche Befragung durch.7 Im Jahr 2008 wurden 414.509 Teilnehmer diesem Interview unterzogen und nach demografischen Angaben, nach Gesundheit und Gesundheitsrisiken befragt.
Unter den erfassten Daten befinden sich die Gewichtsangaben (in Kilogramm) von
398.484 Teilnehmern. Abbildung 4-8 zeigt die Verteilung von log(w) zusammen mit
einem Normalverteilungsmodell, wobei w das Gewicht in Kilogramm ist.
Abbildung 4-8: CDF des Gewichts von Erwachsenen (log-transformiert)
Das Normalverteilungsmodell passt gut zu den Daten, auch wenn die höchsten Gewichtsangaben das übersteigen, was wir hier selbst nach der Logarithmustransformation er5 Siehe http://de.wikipedia.org/wiki/Logarithmische_Normalverteilung.
6 Der Hinweis auf diese Möglichkeit stammt aus einem (hier nicht zitierten) Kommentar unter http://
mathworld.wolfram.com/LogNormalDistribution.html. Im Anschluss habe ich einen Artikel gefunden, in dem
die Logarithmustransformation postuliert und eine Begründung dafür angeboten wird: Penman & Johnson,
»The Changing Shape of the Body Mass Index Distribution Curve in the Population«, Preventing Chronic
Disease, 2006 July; 3(3): A74, online verfügbar unter http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1636707.
7 Centers for Disease Control and Prevention (CDC). Behavioral Risk Factor Surveillance System Survey Data.
Atlanta, Georgia: U.S. Department of Health and Human Services, Centers for Disease Control and Prevention,
2008.
54
|
Kapitel 4: Kontinuierliche Verteilungen
warten würden. Da die Verteilung von log(w) einer Normalverteilung entspricht, können
wir schließen, dass w log-normal verteilt ist.
Übung 4-11:
Suchen Sie im Begleitmaterial die BRFSS-Daten (CDBRFS08.ASC.gz) und meinen Code
zum Einlesen der Datendatei (brfss.py). Führen Sie brfss.py aus und vergewissern Sie sich,
dass für ein paar der Variablen zusammenfassende Statistiken ausgegeben werden.
Schreiben Sie ein Programm, das das Gewicht von Erwachsenen aus den BRFSS-Daten
ausliest und Normalwahrscheinlichkeitsplots für w und log(w) erzeugt. Eine Lösung
finden Sie in der Datei brfss_figs.py.
Übung 4-12:
Als Beispiel eines realen, Pareto-verteilten Phänomens wurde die Verteilung der Bevölkerungsdichte von Groß- und Kleinstädten vorgeschlagen.
Vom US-Zensusbüro werden Daten zu jeder Groß- und Kleinstadt in den Vereinigten
Staaten veröffentlicht. Ich habe ein kleines Programm geschrieben, das diese Daten aus
einer lokalen Datei einliest, die Teil des Begleitmaterials ist. Sie finden den Code in der
Datei populations.py.
1. Lesen Sie sich das Programm durch und stellen Sie sicher, dass Sie verstehen, was es
bewirkt; anschließend führen Sie es aus und lassen es die Daten herunterladen und
aufbereiten.
2. Schreiben Sie ein Programm, das die Verteilung der Bevölkerungszahlen der 14.593
Groß- und Kleinstädte des Datensatzes berechnet und grafisch darstellt.
3. Plotten Sie die CDF mit einer linearen und einer log(x)-Skala, um einen Eindruck von
der Form der Verteilung zu bekommen. Anschließend plotten Sie die CCDF log-logskaliert, um zu überprüfen, ob sie die typische Form einer Pareto-Verteilung hat.
4. Probieren Sie die anderen Transformationen und Plots in diesem Kapitel aus und
prüfen Sie, ob es für diese Daten ein besseres Modell gibt.
Welche Schlüsse ziehen Sie für die Verteilung der Größe von Groß- und Kleinstädten?
Eine Lösung finden Sie in der Datei populations_cdf.py.
Übung 4-13:
Die Bundessteuerbehörde der Vereinigten Staaten (Internal Revenue Service of the United
States, IRS) stellt unter http://irs.gov/taxstats Einkommensteuerdaten zur Verfügung.
Eine ihrer Dateien enthält Informationen zum individuellen Einkommen im Jahr 2008, Sie
finden diese Daten in der Datei 08in11si.csv im Begleitmaterial. Ich habe die Daten in ein
textbasiertes Format konvertiert, das als CSV bezeichnet wird (steht für »kommagetrennte
Werte«, comma-separated values); einlesen können Sie solche Daten mit dem csv-Modul.
Die Log-Normalverteilung
|
55
Leiten Sie aus diesem Datensatz die Einkommensverteilung ab. Ist irgendeine der kontinuierlichen Verteilungen in diesem Kapitel ein angemessenes Modell für diese Daten?
Eine Lösung finden Sie in der Datei irs.py.
Warum Modelle?
Zu Beginn dieses Kapitels habe ich gesagt, dass sich viele reale Phänomene mit kontinuierlichen Verteilungen modellieren lassen. »Na und?«, mögen Sie sich fragen.
Wie jedes andere Modell sind kontinuierliche Verteilungen eine Abstraktion, das heißt,
sie lassen Details aus, die als irrelevant betrachtet werden. Eine Verteilung aus beobachteten Daten könnte beispielsweise Messfehler oder stichprobenspezifische Eigenheiten
enthalten; kontinuierliche Modelle glätten solche idiosynkratischen Anteile.
Kontinuierliche Modelle stellen aber auch eine Form der Datenkompression dar. Wenn
das Modell gut an die Daten angepasst ist, lässt sich mit einer geringen Anzahl an
Parametern eine riesige Datenmenge »verdichten«.
Es ist manchmal überraschend, wenn ein natürliches Phänomen einer kontinuierlichen
Verteilung folgt, allerdings können solche Beobachtungen zu Einblicken in physikalische
Systeme führen. Manchmal lässt sich erklären, warum eine empirische Verteilung eine
bestimmte Form hat. Pareto-Verteilungen sind beispielsweise oft das Ergebnis generativer
Prozesse mit positivem Feedback (sogenannter Preferential-Attachment-Prozesse, siehe
http://de.wikipedia.org/wiki/Skalenfreies_Netz).
Wie wir in Kapitel 6 sehen werden, machen kontinuierliche Verteilungen Anleihen bei der
Analysis.
Zufallszahlen erzeugen
Kontinuierliche CDFs sind nützlich zur Erzeugung von Zufallszahlen. Unter der Voraussetzung, dass eine effiziente Methode zur Berechnung der inversen CDF, ICDF(p),
existiert, lassen sich Zufallszahlen aus einer passenden Verteilung erzeugen, indem wir
zuerst Werte aus einer Gleichverteilung zwischen 0 und 1 ziehen und anschließend an die
folgende Gleichung übergeben:
x = ICDF(p)
Die CDF der Exponentialverteilung lautet beispielsweise:
p = 1 – e-λx
Durch Auflösung nach x ergibt sich:
x = –log(1 – p) / λ
56
|
Kapitel 4: Kontinuierliche Verteilungen
In Python ließe sich also schreiben:
def expovariate(lam):
"""
Zufallszahl aus einer Exponentialverteilung
mit gegebenem Parameter lambda ziehen.
Argumente:
lam: lambda-Parameter der Exponentialverteilung [numerisch]
Rückgabe:
Zufallswert [float]
"""
p = random.random()
x = -math.log(1-p) / lam
return x
Ich habe den Parameter hier lam genannt, weil lambda eins der eingebauten Schlüsselwörter in Python ist. Die meisten Implementierungen von random.random können 0, aber
nicht 1 zurückgeben, deshalb kann 1 – p 1, aber nicht 0 werden – und das ist gut so, weil
log(0) undefiniert ist.
Übung 4-14:
Schreiben Sie eine Funktion weibullvariate, die die Parameter lam und k übernimmt und
einen Zufallswert aus der Weibull-Verteilung mit diesen Parametern zurückgibt.
Glossar
Empirische Verteilung
Die Verteilung aller Werte einer Stichprobe.
Fehlerfunktion
Eine spezielle mathematische Funktion, die wegen ihrer Verbindung zur Untersuchung und Beschreibung von Messfehlern so genannt wird.
Hapax legomenon
Ein Wort oder Begriff, der lediglich ein einziges Mal in einem Korpus vorkommt. In
diesem Buch sind wir ihm bereits zwei Mal begegnet.
Kontinuierliche Verteilung
Eine Verteilung, die durch eine kontinuierliche Funktion beschrieben wird.
Korpus
Eine Textmenge oder ein Text-»Körper«, der als Stichprobe einer Sprache herangezogen wird.
Modell
Eine sinnvolle Vereinfachung. Kontinuierliche Verteilungen eignen sich oft gut als
Modell für komplexere empirische Verteilungen.
Glossar
|
57
Normalwahrscheinlichkeitsplot
Ein Diagramm, in dem die sortierten Werte einer Stichprobe unter der Annahme der
Normalverteiltheit gegen ihre Erwartungswerte abgetragen werden.
Rankit
Der Erwartungswert eines Elements in einer sortierten Liste mit Werten aus einer
Normalverteilung.
Zwischenankunftszeiten (engl. interarrival times)
Der zeitliche Abstand zwischen zwei Ereignissen.
58
|
Kapitel 4: Kontinuierliche Verteilungen