scipy.stats.nchypergeom_fisher#

scipy.stats.nchypergeom_fisher = <scipy.stats._discrete_distns.nchypergeom_fisher_gen object>[Quelle]#

Eine Fisher'sche nichtzentrale hypergeometrische diskrete Zufallsvariable.

Die Fisher'sche nichtzentrale hypergeometrische Verteilung modelliert das Ziehen von Objekten zweier Typen aus einer Urne. M ist die Gesamtzahl der Objekte, n ist die Anzahl der Objekte vom Typ I und odds ist das Chancenverhältnis: die Chancen, ein Objekt vom Typ I anstelle eines Objekts vom Typ II zu wählen, wenn nur ein Objekt jedes Typs vorhanden ist. Die Zufallsvariable repräsentiert die Anzahl der gezogenen Objekte vom Typ I, wenn wir eine Handvoll Objekte auf einmal aus der Urne nehmen und erst danach feststellen, dass wir N Objekte entnommen haben.

Als Instanz der Klasse rv_discrete erbt nchypergeom_fisher davon eine Sammlung generischer Methoden (siehe unten für die vollständige Liste) und vervollständigt diese mit Details, die spezifisch für diese Verteilung sind.

Methoden

rvs(M, n, N, odds, loc=0, size=1, random_state=None)

Zufallsvariaten.

pmf(k, M, n, N, odds, loc=0)

Wahrscheinlichkeitsmassenfunktion.

logpmf(k, M, n, N, odds, loc=0)

Logarithmus der Wahrscheinlichkeitsmassenfunktion.

cdf(k, M, n, N, odds, loc=0)

Kumulative Verteilungsfunktion.

logcdf(k, M, n, N, odds, loc=0)

Logarithmus der kumulativen Verteilungsfunktion.

sf(k, M, n, N, odds, loc=0)

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

logsf(k, M, n, N, odds, loc=0)

Logarithmus der Überlebensfunktion.

ppf(q, M, n, N, odds, loc=0)

Perzentilpunktfunktion (Umkehrung von cdf — Perzentile).

isf(q, M, n, N, odds, loc=0)

Umgekehrte Überlebensfunktion (Umkehrung von sf).

stats(M, n, N, odds, loc=0, moments=’mv’)

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

entropy(M, n, N, odds, loc=0)

(Differential-)Entropie der RV.

expect(func, args=(M, n, N, odds), loc=0, lb=None, ub=None, conditional=False)

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

median(M, n, N, odds, loc=0)

Median der Verteilung.

mean(M, n, N, odds, loc=0)

Mittelwert der Verteilung.

var(M, n, N, odds, loc=0)

Varianz der Verteilung.

std(M, n, N, odds, loc=0)

Standardabweichung der Verteilung.

interval(confidence, M, n, N, odds, loc=0)

Konfidenzintervall mit gleichen Flächen um den Median.

Hinweise

Lassen Sie die mathematischen Symbole \(N\), \(n\) und \(M\) mit den Parametern N, n und M (jeweils) korrespondieren, wie oben definiert.

Die Wahrscheinlichkeitsmassenfunktion ist definiert als

\[p(x; M, n, N, \omega) = \frac{\binom{n}{x}\binom{M - n}{N-x}\omega^x}{P_0},\]

für \(x \in [x_l, x_u]\), \(M \in {\mathbb N}\), \(n \in [0, M]\), \(N \in [0, M]\), \(\omega > 0\), wobei \(x_l = \max(0, N - (M - n))\), \(x_u = \min(N, n)\),

\[P_0 = \sum_{y=x_l}^{x_u} \binom{n}{y}\binom{M - n}{N-y}\omega^y,\]

und die Binomialkoeffizienten definiert sind als

\[\binom{n}{k} \equiv \frac{n!}{k! (n - k)!}.\]

nchypergeom_fisher verwendet das BiasedUrn-Paket von Agner Fog mit dessen Zustimmung zur Verteilung unter der Lizenz von SciPy.

Die Symbole, die zur Bezeichnung der Formparameter (N, n und M) verwendet werden, sind nicht universell akzeptiert; sie wurden gewählt, um mit hypergeom übereinzustimmen.

Beachten Sie, dass die Fisher'sche nichtzentrale hypergeometrische Verteilung sich von der Wallenius'schen nichtzentralen hypergeometrischen Verteilung unterscheidet, die das sequentielle Ziehen einer vordefinierten Anzahl N von Objekten aus einer Urne modelliert. Wenn das Chancenverhältnis eins ist, reduzieren sich jedoch beide Verteilungen auf die gewöhnliche hypergeometrische Verteilung.

Die obige Wahrscheinlichkeitsmassenfunktion ist in der "standardisierten" Form definiert. Um die Verteilung zu verschieben, verwenden Sie den Parameter loc. Insbesondere ist nchypergeom_fisher.pmf(k, M, n, N, odds, loc) identisch gleich nchypergeom_fisher.pmf(k - loc, M, n, N, odds).

Referenzen

[2]

„Fisher’s noncentral hypergeometric distribution“, Wikipedia, https://en.wikipedia.org/wiki/Fisher’s_noncentral_hypergeometric_distribution

Beispiele

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

Ermitteln Sie den Träger (Support)

>>> M, n, N, odds = 140, 80, 60, 0.5
>>> lb, ub = nchypergeom_fisher.support(M, n, N, odds)

Berechnen Sie die ersten vier Momente

>>> mean, var, skew, kurt = nchypergeom_fisher.stats(M, n, N, odds, moments='mvsk')

Anzeigen der Wahrscheinlichkeitsmassenfunktion (pmf)

>>> x = np.arange(nchypergeom_fisher.ppf(0.01, M, n, N, odds),
...               nchypergeom_fisher.ppf(0.99, M, n, N, odds))
>>> ax.plot(x, nchypergeom_fisher.pmf(x, M, n, N, odds), 'bo', ms=8, label='nchypergeom_fisher pmf')
>>> ax.vlines(x, 0, nchypergeom_fisher.pmf(x, M, n, N, odds), 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 = nchypergeom_fisher(M, n, N, odds)
>>> 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-nchypergeom_fisher-1_00_00.png

Überprüfen Sie die Genauigkeit von cdf und ppf

>>> prob = nchypergeom_fisher.cdf(x, M, n, N, odds)
>>> np.allclose(x, nchypergeom_fisher.ppf(prob, M, n, N, odds))
True

Generieren Sie Zufallszahlen

>>> r = nchypergeom_fisher.rvs(M, n, N, odds, size=1000)