scipy.stats.landau#

scipy.stats.landau = <scipy.stats._continuous_distns.landau_gen object>[Quelle]#

Eine Landau-kontinuierliche Zufallsvariable.

Als Instanz der Klasse rv_continuous erbt das Objekt landau von ihr eine Sammlung allgemeiner Methoden (siehe unten für die vollständige Liste) und vervollständigt diese mit Details, die für diese spezielle Verteilung spezifisch sind.

Methoden

rvs(loc=0, scale=1, size=1, random_state=None)

Zufallsvariaten.

pdf(x, loc=0, scale=1)

Wahrscheinlichkeitsdichtefunktion.

logpdf(x, loc=0, scale=1)

Logarithmus der Wahrscheinlichkeitsdichtefunktion.

cdf(x, loc=0, scale=1)

Kumulative Verteilungsfunktion.

logcdf(x, loc=0, scale=1)

Logarithmus der kumulativen Verteilungsfunktion.

sf(x, loc=0, scale=1)

Überlebensfunktion (auch definiert als 1 - cdf, aber sf ist manchmal genauer).

logsf(x, loc=0, scale=1)

Logarithmus der Überlebensfunktion.

ppf(q, loc=0, scale=1)

Perzentilpunktfunktion (Umkehrung von cdf — Perzentile).

isf(q, loc=0, scale=1)

Umgekehrte Überlebensfunktion (Umkehrung von sf).

moment(order, loc=0, scale=1)

Nichtzentrales Moment der angegebenen Ordnung.

stats(loc=0, scale=1, moments=’mv’)

Mittelwert(‚m‘), Varianz(‚v‘), Schiefe(‚s‘) und/oder Kurtosis(‚k‘).

entropy(loc=0, scale=1)

(Differential-)Entropie der RV.

fit(data)

Parameterschätzungen für generische Daten. Siehe scipy.stats.rv_continuous.fit für eine detaillierte Dokumentation der Schlüsselwortargumente.

expect(func, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False, **kwds)

Erwartungswert einer Funktion (einer Variablen) bezüglich der Verteilung.

median(loc=0, scale=1)

Median der Verteilung.

mean(loc=0, scale=1)

Mittelwert der Verteilung.

var(loc=0, scale=1)

Varianz der Verteilung.

std(loc=0, scale=1)

Standardabweichung der Verteilung.

interval(confidence, loc=0, scale=1)

Konfidenzintervall mit gleichen Flächen um den Median.

Hinweise

Die Wahrscheinlichkeitsdichtefunktion für landau ([1], [2]) ist

\[f(x) = \frac{1}{\pi}\int_0^\infty \exp(-t \log t - xt)\sin(\pi t) dt\]

für eine reelle Zahl \(x\).

Die oben genannte Wahrscheinlichkeitsdichte ist in der „standardisierten“ Form definiert. Zum Verschieben und/oder Skalieren der Verteilung verwenden Sie die Parameter loc und scale. Insbesondere ist landau.pdf(x, loc, scale) identisch äquivalent zu landau.pdf(y) / scale mit y = (x - loc) / scale. Beachten Sie, dass das Verschieben des Ortes einer Verteilung diese nicht zu einer „nichtzentralen“ Verteilung macht; nichtzentrale Verallgemeinerungen einiger Verteilungen sind in separaten Klassen verfügbar.

Oft (z. B. [2]) wird die Landau-Verteilung in Bezug auf einen Orts-Parameter \(\mu\) und einen Skalen-Parameter \(c\) parametrisiert, wobei letzterer *auch* eine Ortsverschiebung einführt. Wenn mu und c verwendet werden, um diese Parameter darzustellen, entspricht dies der Parametrisierung von SciPy mit loc = mu + 2*c / np.pi * np.log(c) und scale = c.

Diese Verteilung verwendet Routinen aus der Boost Math C++ Bibliothek für die Berechnung der Methoden pdf, cdf, ppf, sf und isf. [1]

Referenzen

[1] (1,2)

Landau, L. (1944). „On the energy loss of fast particles by ionization“. J. Phys. (USSR). 8: 201.

[2] (1,2)

„Landau Distribution“, Wikipedia, https://en.wikipedia.org/wiki/Landau_distribution

[3]

Chambers, J. M., Mallows, C. L., & Stuck, B. (1976). „A method for simulating stable random variables.“ Journal of the American Statistical Association, 71(354), 340-344.

[4]

The Boost Developers. “Boost C++ Libraries”. https://www.boost.org/.

[5]

Yoshimura, T. „Numerical Evaluation and High Precision Approximation Formula for Landau Distribution“. DOI:10.36227/techrxiv.171822215.53612870/v2

Beispiele

>>> import numpy as np
>>> from scipy.stats import landau
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)

Ermitteln Sie den Träger (Support)

>>> lb, ub = landau.support()

Berechnen Sie die ersten vier Momente

>>> mean, var, skew, kurt = landau.stats(moments='mvsk')

Zeigen Sie die Wahrscheinlichkeitsdichtefunktion (pdf) an

>>> x = np.linspace(landau.ppf(0.01),
...                 landau.ppf(0.99), 100)
>>> ax.plot(x, landau.pdf(x),
...        'r-', lw=5, alpha=0.6, label='landau pdf')

Alternativ kann das Verteilungsobjekt (als Funktion) aufgerufen werden, um die Form-, Orts- und Skalierungsparameter festzulegen. Dies gibt ein „eingefrorenes“ RV-Objekt zurück, das die angegebenen Parameter beibehält.

Frieren Sie die Verteilung ein und zeigen Sie die eingefrorene pdf an

>>> rv = landau()
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')

Überprüfen Sie die Genauigkeit von cdf und ppf

>>> vals = landau.ppf([0.001, 0.5, 0.999])
>>> np.allclose([0.001, 0.5, 0.999], landau.cdf(vals))
True

Generieren Sie Zufallszahlen

>>> r = landau.rvs(size=1000)

Und vergleichen Sie das Histogramm

>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
../../_images/scipy-stats-landau-1.png