scipy.stats.Normal.

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)\]

logccdf berechnet 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).

logccdf akzeptiert 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 NotImplementedError ausgelöst.

Rückgabe:
outarray

Die log-CCDF, ausgewertet an den bereitgestellten Argumenten.

Siehe auch

ccdf
logcdf

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 ccdf oft einen Wert von 0 zurü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 kann logccdf ein streng negatives Ergebnis mit Argumenten liefern, für die ccdf 1.0 zurü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

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