scipy.stats.geninvgauss#

scipy.stats.geninvgauss = <scipy.stats._continuous_distns.geninvgauss_gen object>[Quelle]#

Eine verallgemeinerte inverse Gaußsche stetige Zufallsvariable.

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

Methoden

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

Zufallsvariaten.

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

Wahrscheinlichkeitsdichtefunktion.

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

Logarithmus der Wahrscheinlichkeitsdichtefunktion.

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

Kumulative Verteilungsfunktion.

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

Logarithmus der kumulativen Verteilungsfunktion.

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

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

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

Logarithmus der Überlebensfunktion.

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

Perzentilpunktfunktion (Umkehrung von cdf — Perzentile).

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

Umgekehrte Überlebensfunktion (Umkehrung von sf).

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

Nichtzentrales Moment der angegebenen Ordnung.

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

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

entropy(p, b, 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=(p, b), loc=0, scale=1, lb=None, ub=None, conditional=False, **kwds)

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

median(p, b, loc=0, scale=1)

Median der Verteilung.

mean(p, b, loc=0, scale=1)

Mittelwert der Verteilung.

var(p, b, loc=0, scale=1)

Varianz der Verteilung.

std(p, b, loc=0, scale=1)

Standardabweichung der Verteilung.

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

Konfidenzintervall mit gleichen Flächen um den Median.

Hinweise

Die Wahrscheinlichkeitsdichtefunktion für geninvgauss ist

\[f(x, p, b) = x^{p-1} \exp(-b (x + 1/x) / 2) / (2 K_p(b))\]

wobei x > 0, p eine reelle Zahl und b > 0([1]). \(K_p\) ist die modifizierte Bessel-Funktion zweiter Art der Ordnung p (scipy.special.kv).

Die oben genannte Wahrscheinlichkeitsdichte ist in „standardisierter“ Form definiert. Verwenden Sie die Parameter loc und scale, um die Verteilung zu verschieben und/oder zu skalieren. Insbesondere ist geninvgauss.pdf(x, p, b, loc, scale) identisch äquivalent zu geninvgauss.pdf(y, p, b) / scale mit y = (x - loc) / scale. Beachten Sie, dass die Verschiebung des Ortes einer Verteilung keine „nichtzentrale“ Verteilung ergibt; nichtzentrale Verallgemeinerungen einiger Verteilungen sind in separaten Klassen verfügbar.

Die inverse Gaußsche Verteilung stats.invgauss(mu) ist ein Spezialfall von geninvgauss mit p = -1/2, b = 1 / mu und scale = mu.

Das Generieren von Zufallsvariaten ist für diese Verteilung eine Herausforderung. Die Implementierung basiert auf [2].

Referenzen

[1]

O. Barndorff-Nielsen, P. Blaesild, C. Halgreen, „First hitting time models for the generalized inverse gaussian distribution“, Stochastic Processes and their Applications 7, S. 49–54, 1978.

[2]

W. Hoermann und J. Leydold, „Generating generalized inverse Gaussian random variates“, Statistics and Computing, 24(4), S. 547–557, 2014.

Beispiele

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

Ermitteln Sie den Träger (Support)

>>> p, b = 2.3, 1.5
>>> lb, ub = geninvgauss.support(p, b)

Berechnen Sie die ersten vier Momente

>>> mean, var, skew, kurt = geninvgauss.stats(p, b, moments='mvsk')

Zeigen Sie die Wahrscheinlichkeitsdichtefunktion (pdf) an

>>> x = np.linspace(geninvgauss.ppf(0.01, p, b),
...                 geninvgauss.ppf(0.99, p, b), 100)
>>> ax.plot(x, geninvgauss.pdf(x, p, b),
...        'r-', lw=5, alpha=0.6, label='geninvgauss 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 = geninvgauss(p, b)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')

Überprüfen Sie die Genauigkeit von cdf und ppf

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

Generieren Sie Zufallszahlen

>>> r = geninvgauss.rvs(p, b, 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-geninvgauss-1.png