Was sind empirische kumulative Verteilungsfunktionen und was können wir damit tun? Um die erste Frage zu beantworten, gehen wir zunächst zurück und stellen sicher, dass wir „Verteilungen“ oder genauer gesagt „Wahrscheinlichkeitsverteilungen“verstehen.

Eine grundlegende Wahrscheinlichkeitsverteilung

Stellen Sie sich ein einfaches Ereignis vor, sagen wir, eine Münze dreimal umzudrehen., Hier sind alle möglichen Ergebnisse, wobei H = head und T = Zahl:

  • HHH
  • HHT
  • HTH
  • THH
  • HTT
  • TTH
  • THT
  • TTT

Nun Stell dir vor, H = „success“., Unsere Ergebnisse können wie folgt geändert werden:

  • HHH (3 Erfolge)
  • HHT (2 Erfolge)
  • HTH (2 Erfolge)
  • THH (2 Erfolge)
  • HTT (1 Erfolg)
  • TTH (1 Erfolg)
  • THT (1 Erfolg)
  • TTT (0 Erfolge)

Da es 8 mögliche Ergebnisse gibt, sind die Wahrscheinlichkeiten für 0, 1, 2 und 3 Erfolge

  • 0 Erfolge: 1/8
  • 1 Erfolge: 3/8
  • 2 Erfolge: 3/8
  • 3 Erfolge: 1/8

Wenn wir diese Wahrscheinlichkeiten summieren, erhalten wir 1. Und dies stellt die „Wahrscheinlichkeitsverteilung“ für unsere Veranstaltung dar., Formal folgt dieses Ereignis einer Binomialverteilung, da die Ereignisse unabhängig sind, es eine feste Anzahl von Versuchen gibt (3), die Wahrscheinlichkeit für jeden Flip gleich ist (0,5) und unser Ergebnis die Anzahl der „Erfolge“ in der Anzahl der Versuche ist. Tatsächlich haben wir gerade eine Binomialverteilung mit 3 Versuchen und einer Wahrscheinlichkeit von 0, 5 demonstriert. Dies wird manchmal als b(3,0, 5) abgekürzt., Wir können die Wahrscheinlichkeiten in R schnell mit der Funktion dbinom generieren:

dbinom(0:3, size = 3, prob = 0.5)## 0.125 0.375 0.375 0.125

Wir können diese Wahrscheinlichkeitsverteilung schnell mit der Funktion barplot visualisieren:

barplot(dbinom(x = 0:3, size = 3, prob = 0.5), names.arg = 0:3)

Die Funktion zum Generieren dieser Wahrscheinlichkeiten wird häufig als „density“ – Funktion bezeichnet, daher das „d“ vor binom., Verteilungen, die Wahrscheinlichkeiten für diskrete Werte erzeugen, wie das Binom in diesem Beispiel, werden manchmal als „Wahrscheinlichkeitsmassenfunktionen“ oder PMFs bezeichnet. Verteilungen, die Wahrscheinlichkeiten für kontinuierliche Werte erzeugen, wie z. B. Normal, werden manchmal als „Wahrscheinlichkeitsdichtefunktionen“ oder PDFs bezeichnet. In R wird jedoch unabhängig von PMF oder PDF die Funktion, die die Wahrscheinlichkeiten generiert, als „Dichte“ – Funktion bezeichnet.

Kumulative Verteilungsfunktion

Sprechen wir nun über „kumulative“ Wahrscheinlichkeiten., Dies sind Wahrscheinlichkeiten, die sich ansammeln, wenn wir uns entlang der x-Achse in unserer Wahrscheinlichkeitsverteilung von links nach rechts bewegen., Wenn wir uns das obige Verteilungsdiagramm ansehen, wäre das

  • \(P(X\le0)\)
  • \(P(X\le1)\)
  • \(P(X\le2)\)
  • \(P (X\le3)\)

Wir können diese schnell berechnen:

  • \(P (X\le0) = \ frac{1}{8}\)
  • \(P (X\le1) = \frac{1}{8} + \frac{3}{8} = \frac{1}{2}\)
  • \(P (X\le2) = \frac{1}{8} + \frac{3}{8} + \frac{3}{8} = \frac{7}{8}\)
  • \(P (X\le3) = \frac{1}{8} + \frac{3}{8} + \frac{3}{8} + \frac{1}{8} = 1\)

Die Verteilung dieser Wahrscheinlichkeiten wird als kumulative Verteilung bezeichnet., Auch hier gibt es eine Funktion in R, die diese Wahrscheinlichkeiten für uns generiert. Anstelle eines „d“ vor „binom“setzen wir ein „p“.

pbinom(0:3, size = 3, prob = 0.5)## 0.125 0.500 0.875 1.000

Diese Funktion wird oft nur als“ Verteilungsfunktion “ bezeichnet, was verwirrend sein kann, wenn Sie versuchen, Wahrscheinlichkeitsverteilungen im Allgemeinen zu umgehen. Das Zeichnen dieser Funktion erfordert etwas mehr Arbeit. Wir werden in Kürze einen einfacheren Weg demonstrieren, um dieses Diagramm zu erstellen, daher präsentieren wir den folgenden Code ohne Kommentar.,

Dieses Diagramm wird manchmal als Schrittdiagramm bezeichnet. Sobald Sie einen Punkt auf der x-Achse treffen,“ treten “ Sie zur nächsten Wahrscheinlichkeit auf. Die Wahrscheinlichkeit von 0 oder weniger beträgt 0,125. Daher die gerade Linie von 0 bis 1. Bei 1 steigen wir auf 0,5, weil die Wahrscheinlichkeit von 1 oder weniger, wenn 0,5. Und so weiter. Bei 3 haben wir einen Punkt bei 1. Die Wahrscheinlichkeit von 3 oder weniger ist hoch. Wir werden garantiert 3 oder weniger Erfolge in unserer Binomialverteilung erzielen.

Nun wollen wir zeigen, was wir oben mit einer kontinuierlichen Verteilung gemacht haben., Um es relativ einfach zu halten, verwenden wir die Standardnormalverteilung mit einem Mittelwert von 0 und einer Standardabweichung von 1. Im Gegensatz zu unserem obigen Coin-Flipping-Beispiel, das genau mit einer Binomialverteilung verstanden werden konnte, gibt es kein „Off-the-Shelf“ – Beispiel aus dem wirklichen Leben, das perfekt zu einer Standard-Normalverteilung passt. Deshalb müssen wir unsere Vorstellungskraft nutzen.

Zeichnen wir zuerst die Verteilung mit der Funktion curve. Das erste argument, dnorm(x), ist im Grunde die mathematische Formel, die die Linie zeichnet., Beachten Sie das “ d „vor“ Norm“; Dies ist die Funktion“ Dichte“. Die Standardwerte der Funktion dnorm sind mean = 0 und Standardabweichung = 1. Die Argumente from und to besagen, dass diese Kurve mit Werten von x im Bereich von -3 bis 3 gezeichnet wird.

curve(dnorm(x), from = -3, to = 3)

Die Kurve ist eine glatte Linie, was bedeutet, es ist eine Wahrscheinlichkeitsverteilung, die für alle reellen zahlen. Die Fläche unter der Kurve ist 1, da es sich um eine Wahrscheinlichkeitsverteilung handelt.,

Stellen Sie sich vor, Sie greifen in diese Verteilung ein und zeichnen eine Zahl. Wie hoch ist die Wahrscheinlichkeit, 1.134523768923 zu erhalten? Es ist im wesentlichen 0. Warum? Weil es \(\frac{1}{\infty}\) Chance gibt, es auszuwählen. Warum ist \(\infty\) im Nenner? Weil es unendlich viele Möglichkeiten gibt. Wenn das verwirrend erscheint, stellen Sie sich vor, Sie zoomen mit einer feineren und feineren Auflösung in die x-Achse, wobei sich Dezimalstellen bis zum Horizont erstrecken. Dies bedeutet, dass die Werte der y-Achse keine Wahrscheinlichkeit darstellen, sondern eher „Dichte“., Die Dichte ist im Wesentlichen die Wahrscheinlichkeit eines kleinen Wertebereichs geteilt durch diesen Bereich. Wenn das auch verwirrend erscheint, ist es in Ordnung. Denken Sie daran, dass wir keine normalen Verteilungen (oder eine kontinuierliche Verteilung) verwenden, um genaue Wahrscheinlichkeiten zu erhalten. Wir verwenden sie, um Wahrscheinlichkeiten für einen Wertebereich zu erhalten.

Wie hoch ist beispielsweise die Wahrscheinlichkeit, dass x kleiner oder gleich -1 ist? Dazu können wir die pnorm Funktion verwenden, die die kumulative Verteilungsfunktion für die Normalverteilung ist.,

pnorm(-1)## 0.1586553

Das mosaic Paket bietet die praktische plotDist Funktion zur schnellen Visualisierung dieser Wahrscheinlichkeit. Durch Platzieren von mosaic:: vor der Funktion können wir die Funktion aufrufen, ohne das Mosaikpaket zu laden. Das Argument groups besagt, dass zwei Regionen erstellt werden: eine für weniger als -1 und eine für größer als -1. Das Argument type='h' besagt, dass ein „histogrammartiges“ Diagramm gezeichnet wird. Die beiden Farben sind für die jeweiligen Regionen. Offensichtlich bedeutet „Norm“ eine normale Verteilung zeichnen., Auch hier ist der Standardwert Mittelwert 0 und Standardabweichung 1.

# install.packages('mosaic')mosaic::plotDist('norm', groups = x < -1, type='h', col = c('grey', 'lightblue')) 

Dieses Diagramm zeigt tatsächlich kumulative Wahrscheinlichkeit. Der blaue Bereich ist gleich 0.1586553, die Wahrscheinlichkeit, dass wir aus dieser Verteilung einen Wert von -1 oder weniger ziehen. Erinnern wir uns daran, dass wir die kumulative Verteilungsfunktion verwendet haben, um diesen Wert zu erhalten. Um alle kumulativen Wahrscheinlichkeiten für die Standardnormalverteilung zu visualisieren, können wir erneut die Funktion curve verwenden, diesmal jedoch mit pnorm.,

curve(pnorm(x), from = -3, to = 3)

Wenn wir -1 auf der x-Achse betrachten und direkt zur Linie gehen und dann direkt links zur x-Achse gehen, sollte es auf 0.1586553 landen. Wir können dies dem Plot mit segmentshinzufügen:

curve(pnorm(x), from = -3, to = 3)segments(x0 = -1, y0 = 0, x1 = -1, y1 = pnorm(-1), col = 'red')segments(x0 = -1, y0 = pnorm(-1), x1 = -3, y1 = pnorm(-1), col = 'blue') 

Dies ist wiederum eine glatte Linie, da es sich um eine unendliche Anzahl realer Werte handelt.,

Empirische kumulative Verteilungsfunktionen

Nachdem wir uns mit kumulativen Verteilungen im Klaren sind, lassen Sie uns empirische kumulative Verteilungen untersuchen. „Empirisch“ bedeutet, dass wir uns eher mit Beobachtungen als mit Theorie befassen. Die kumulativen Verteilungen, die wir oben untersucht haben, basierten auf der Theorie. Wir haben die binomialen bzw. normalen kumulativen Verteilungen verwendet, um Wahrscheinlichkeiten zu berechnen und die Verteilung zu visualisieren. Im wirklichen Leben stammen die Daten, die wir sammeln oder beobachten, jedoch nicht aus einer theoretischen Verteilung. Wir müssen die Daten selbst verwenden, um eine kumulative Verteilung zu erstellen.,

Wir können dies in R mit der Funktion tun. ECDF steht für „Empirische kumulative Verteilungsfunktion“. Beachten Sie das letzte Wort: „Funktion“. Die Funktion gibt eine Funktion zurück. So wie pbinom und pnorm die kumulativen Verteilungsfunktionen für unsere theoretischen Daten waren, erstellt eine kumulative Verteilungsfunktion für unsere beobachteten Daten. Lassen Sie uns dies mit dem Rock-Datensatz ausprobieren, der mit R geliefert wird.,

Der Gesteinsdatensatz enthält Messungen an 48 Gesteinsproben aus einem Erdölreservoir. Es enthält 4 Variablen: area, peri, shape und perm. Wir arbeiten mit der Flächenvariablen, die die Gesamtfläche der Poren in jeder Probe ist.

Die – Funktionen arbeiten mit numerischen Vektoren, bei denen es sich häufig um Zahlenspalten in einem Datenrahmen handelt. Unten geben wir ihm die Bereichssäule des Gesteinsdatenrahmens.

ecdf(rock$area)## Empirical CDF ## Call: ecdf(rock$area)## x = 1016, 1468, 1651, ..., 11878, 12212

Beachten Sie, dass die Ausgabe nicht so nützlich ist. Das liegt daran, dass die Funktion eine Funktion zurückgibt., Wir müssen das Ergebnis einem Namen zuweisen, damit wir unsere ECDF-Funktion erstellen können. Verwenden wir Fn

Fn <- ecdf(rock$area)

Jetzt haben Sie eine benutzerdefinierte kumulative Verteilungsfunktion, die Sie mit Ihren Daten verwenden können. Zum Beispiel können wir ein Schrittdiagramm erstellen, um die kumulative Verteilung zu visualisieren.

plot(Fn)

Wenn wir uns das Diagramm ansehen, können wir die geschätzte Wahrscheinlichkeit sehen, dass die Fläche einer Stichprobe kleiner oder gleich 8000 ist, beträgt etwa 0,6., Aber wir müssen uns nicht darauf verlassen, dass die Grafik ins Auge fällt. Wir haben eine Funktion! Wir können es verwenden, um eine genauere Schätzung zu erhalten. Geben Sie ihm einfach eine Zahl im Bereich der x-Achse und es wird die kumulative Wahrscheinlichkeit zurück.

# Prob area less than or equal to 8000Fn(8000)## 0.625

Wir nutzen die Funktion mit mehr als einem Wert. Zum Beispiel können wir geschätzte Wahrscheinlichkeiten erhalten, dass der Bereich kleiner oder gleich 4000, 6000 und 8000 ist.

Fn(c(4000, 6000, 8000))## 0.1250000 0.3333333 0.6250000

Es gibt auch ein summary Methode für die ECDF-Funktionen., Es gibt eine Zusammenfassung der eindeutigen Werte der beobachteten Daten zurück. Beachten Sie, dass es der traditionellen Zusammenfassungsmethode für numerische Vektoren ähnelt, aber das Ergebnis ist etwas anders, da es die eindeutigen Werte anstelle aller Werte zusammenfasst.

Schließlich können wir, wenn wir möchten, eine theoretische kumulative Verteilung über die ECDF überlagern. Dies kann uns helfen zu beurteilen, ob wir davon ausgehen können, dass unsere Daten mit einer bestimmten theoretischen Verteilung modelliert werden können. Könnte man sich zum Beispiel vorstellen, dass unsere Daten aus einer Normalverteilung entnommen wurden?, Nachfolgend zeichnen wir die Schrittfunktion auf und überlagern dann eine kumulative Normalverteilung unter Verwendung des Mittelwerts und der Standardabweichung unserer beobachteten Daten.

plot(ecdf(rock$area))curve(pnorm(x, mean(rock$area), sd(rock$area)), from = 0, to = 12000, add = TRUE, col='blue', lwd = 2) 

Die Zeilen scheinen sich ziemlich zu überlappen, was darauf hindeutet, dass die Daten mit einer Normalverteilung angenähert werden könnten. Wir können auch Schätzungen aus unserem ECDF mit einem theoretischen CDF vergleichen. Wir haben gesehen, dass die Wahrscheinlichkeit, dass die Fläche kleiner oder gleich 8000 ist, etwa 0,625 beträgt., Wie vergleicht sich das mit einer normalen kumulativen Verteilung mit einer mittleren und Standardabweichung von rock$area?

pnorm(8000, mean = mean(rock$area), sd = sd(rock$area))## 0.6189223

Das ist ganz nah!

Eine weitere grafische Bewertung ist das Q-Q-Diagramm, das auch in R einfach mit den Funktionen qqnorm und qqline durchgeführt werden kann. Die Idee ist, dass, wenn die Punkte entlang der diagonalen Linie fallen, wir gute Beweise dafür haben, dass die Daten plausibel normal sind., Auch dieses Diagramm zeigt, dass die Daten so aussehen, als könnten sie mit einer Normalverteilung gut angenähert werden. (Weitere Informationen zu Q-Q-Plots finden Sie in unserem Artikel, Q-Q-Plots verstehen).

Für Fragen oder Erläuterungen zu diesem Artikel wenden Sie sich an die UVA Library StatLab: [email protected]

Zeigen Sie die gesamte Sammlung von StatLab-Artikeln der UVA-Bibliothek an.

Clay Ford
Berater für statistische Forschung
Bibliothek der Universität von Virginia
9. Juli 2020