scipy.stats.nbinom#

scipy.stats.nbinom = <scipy.stats._discrete_distns.nbinom_gen object>[Quelle]#

Eine diskrete Zufallsvariable der negativen Binomialverteilung.

Als Instanz der Klasse rv_discrete erbt das Objekt nbinom von dieser eine Sammlung allgemeiner Methoden (siehe unten für die vollständige Liste) und ergänzt sie um Details, die spezifisch für diese besondere Verteilung sind.

Methoden

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

Zufallsvariaten.

pmf(k, n, p, loc=0)

Wahrscheinlichkeitsmassenfunktion.

logpmf(k, n, p, loc=0)

Logarithmus der Wahrscheinlichkeitsmassenfunktion.

cdf(k, n, p, loc=0)

Kumulative Verteilungsfunktion.

logcdf(k, n, p, loc=0)

Logarithmus der kumulativen Verteilungsfunktion.

sf(k, n, p, loc=0)

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

logsf(k, n, p, loc=0)

Logarithmus der Überlebensfunktion.

ppf(q, n, p, loc=0)

Perzentilpunktfunktion (Umkehrung von cdf — Perzentile).

isf(q, n, p, loc=0)

Umgekehrte Überlebensfunktion (Umkehrung von sf).

stats(n, p, loc=0, moments=’mv’)

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

entropy(n, p, loc=0)

(Differential-)Entropie der RV.

expect(func, args=(n, p), loc=0, lb=None, ub=None, conditional=False)

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

median(n, p, loc=0)

Median der Verteilung.

mean(n, p, loc=0)

Mittelwert der Verteilung.

var(n, p, loc=0)

Varianz der Verteilung.

std(n, p, loc=0)

Standardabweichung der Verteilung.

interval(confidence, n, p, loc=0)

Konfidenzintervall mit gleichen Flächen um den Median.

Siehe auch

hypergeom, binom, nhypergeom

Hinweise

Die negative Binomialverteilung beschreibt eine Folge von unabhängigen und identisch verteilten Bernoulli-Versuchen, die wiederholt werden, bis eine vordefinierte, nicht-zufällige Anzahl von Erfolgen eintritt.

Die Wahrscheinlichkeitsfunktion der Anzahl der Misserfolge für nbinom lautet

\[f(k) = \binom{k+n-1}{n-1} p^n (1-p)^k\]

für \(k \ge 0\), \(0 < p \leq 1\)

nbinom nimmt \(n\) und \(p\) als Formparameter an, wobei \(n\) die Anzahl der Erfolge ist, \(p\) die Wahrscheinlichkeit eines einzelnen Erfolgs und \(1-p\) die Wahrscheinlichkeit eines einzelnen Misserfolgs ist.

Eine weitere gebräuchliche Parametrisierung der negativen Binomialverteilung erfolgt in Bezug auf die mittlere Anzahl der Misserfolge \(\mu\), um \(n\) Erfolge zu erzielen. Der Mittelwert \(\mu\) steht zur Erfolgswahrscheinlichkeit in folgender Beziehung:

\[p = \frac{n}{n + \mu}\]

Die Anzahl der Erfolge \(n\) kann auch in Form eines "Dispersion", "Heterogenitäts" oder "Aggregations" Parameters \(\alpha\) angegeben werden, der den Mittelwert \(\mu\) mit der Varianz \(\sigma^2\) in Beziehung setzt, z. B. \(\sigma^2 = \mu + \alpha \mu^2\). Unabhängig von der für \(\alpha\) verwendeten Konvention gilt:

\[\begin{split}p &= \frac{\mu}{\sigma^2} \\ n &= \frac{\mu^2}{\sigma^2 - \mu}\end{split}\]

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

Die obige Wahrscheinlichkeitsfunktion ist in der "standardisierten" Form definiert. Zum Verschieben der Verteilung verwenden Sie den Parameter loc. Insbesondere ist nbinom.pmf(k, n, p, loc) identisch gleich nbinom.pmf(k - loc, n, p).

Referenzen

[1]

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

Beispiele

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

Ermitteln Sie den Träger (Support)

>>> n, p = 5, 0.5
>>> lb, ub = nbinom.support(n, p)

Berechnen Sie die ersten vier Momente

>>> mean, var, skew, kurt = nbinom.stats(n, p, moments='mvsk')

Anzeigen der Wahrscheinlichkeitsmassenfunktion (pmf)

>>> x = np.arange(nbinom.ppf(0.01, n, p),
...               nbinom.ppf(0.99, n, p))
>>> ax.plot(x, nbinom.pmf(x, n, p), 'bo', ms=8, label='nbinom pmf')
>>> ax.vlines(x, 0, nbinom.pmf(x, n, p), colors='b', lw=5, alpha=0.5)

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

Die Verteilung einfrieren und die eingefrorene pmf anzeigen

>>> rv = nbinom(n, p)
>>> ax.vlines(x, 0, rv.pmf(x), colors='k', linestyles='-', lw=1,
...         label='frozen pmf')
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
../../_images/scipy-stats-nbinom-1_00_00.png

Überprüfen Sie die Genauigkeit von cdf und ppf

>>> prob = nbinom.cdf(x, n, p)
>>> np.allclose(x, nbinom.ppf(prob, n, p))
True

Generieren Sie Zufallszahlen

>>> r = nbinom.rvs(n, p, size=1000)