logccdf#
- Normal.logccdf(x, y=None, /, *, method=None)[Quellcode]#
Logarithmus der komplementären kumulativen Verteilungsfunktion
Die komplementäre Verteilungsfunktion (“CCDF”), bezeichnet als \(G(x)\), ist das Komplement der Verteilungsfunktion \(F(x)\); d.h. die Wahrscheinlichkeit, dass die Zufallsvariable \(X\) einen Wert größer als \(x\) annimmt.
\[ \begin{align}\begin{aligned} G(x) = 1 - F(x) = P(X > x)\\Eine Zwei-Argument-Variante dieser Funktion ist:\end{aligned}\end{align} \]\[G(x, y) = 1 - F(x, y) = P(X < x \quad \text{oder} \quad X > y)\]logccdfberechnet den Logarithmus der komplementären Verteilungsfunktion (“log-CCDF”), \(\log(G(x))\)/\(\log(G(x, y))\), aber dies kann numerisch günstiger sein als die naive Implementierung (Berechnung der CDF und Einnahme des Logarithmus).logccdfakzeptiert x für \(x\) und y für \(y\).- Parameter:
- x, yarray_like
Die Argumente der log-CCDF. x ist erforderlich; y ist optional.
- method{None, ‘formula’, ‘logexp’, ‘complement’, ‘quadrature’, ‘addition’}
Die Strategie, die zur Auswertung der log-CCDF verwendet wird. Standardmäßig (
None) wählt die Ein-Argument-Form der Funktion zwischen den folgenden Optionen, die in der Reihenfolge der Priorität aufgeführt sind.'formula': Verwendung einer Formel für die log CCDF selbst.'logexp': Auswertung der CCDF und Einnahme des Logarithmus.'complement': Auswertung der log-CDF und Einnahme des logarithmischen Komplements (siehe Hinweise).'quadrature': numerische log-Integration der log-PDF (oder im diskreten Fall log-Summierung der log-PMF)
Die zweistellige Form wählt zwischen
'formula': Verwendung einer Formel für die log CCDF selbst.'addition': Berechnung der log-CDF bei x und der log-CCDF bei y, dann Einnahme der logarithmischen Summe (siehe Hinweise).
Nicht alle method-Optionen sind für alle Verteilungen verfügbar. Wenn die ausgewählte method nicht verfügbar ist, wird ein
NotImplementedErrorausgelöst.
- Rückgabe:
- outarray
Die log-CCDF, ausgewertet an den bereitgestellten Argumenten.
Hinweise
Angenommen, eine kontinuierliche Wahrscheinlichkeitsverteilung hat die Träger \([l, r]\). Die log-CCDF gibt ihren Minimalwert von \(\log(0)=-\infty\) für \(x ≥ r\) und ihren Maximalwert von \(\log(1) = 0\) für \(x ≤ l\) zurück. Eine analoge Aussage kann für diskrete Verteilungen gemacht werden, aber die Ungleichung, die den Maximalwert regelt, ist strikt.
Bei Verteilungen mit unendlichem Träger gibt
ccdfoft einen Wert von0zurück, wenn das Argument theoretisch innerhalb des Trägers liegt; dies kann passieren, weil der wahre Wert der CCDF zu klein ist, um durch den gewählten Datentyp dargestellt zu werden. Der Logarithmus der CCDF ist jedoch oft endlich (nicht-inf) über einen viel größeren Bereich. Ebenso kannlogccdfein streng negatives Ergebnis mit Argumenten liefern, für dieccdf1.0zurückgeben würde. Folglich kann es bevorzugt sein, mit den Logarithmen von Wahrscheinlichkeiten zu arbeiten, um Unterlauf und verwandte Einschränkungen von Gleitkommazahlen zu vermeiden.Das „logarithmische Komplement“ einer Zahl \(z\) ist mathematisch äquivalent zu \(\log(1-\exp(z))\), wird aber berechnet, um Genauigkeitsverlust zu vermeiden, wenn \(\exp(z)\) nahe \(0\) oder \(1\) ist. Ebenso bedeutet der Begriff „logarithmische Summe“ von \(w\) und \(z\) hier \(\log(\exp(w)+\exp(z))\), auch bekannt als \(\text{LogSumExp}(w, z)\).
Referenzen
[1]Kumulative Verteilungsfunktion, Wikipedia, https://en.wikipedia.org/wiki/Cumulative_distribution_function#Derived_functions
Beispiele
Instanziieren Sie eine Verteilung mit den gewünschten Parametern
>>> import numpy as np >>> from scipy import stats >>> X = stats.Uniform(a=-0.5, b=0.5)
Auswertung der log-CCDF am gewünschten Argument.
>>> X.logccdf(0.25) -1.3862943611198906 >>> np.allclose(X.logccdf(0.), np.log(X.ccdf(0.))) True