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