scipy.stats.multivariate_hypergeom#

scipy.stats.multivariate_hypergeom = <scipy.stats._multivariate.multivariate_hypergeom_gen object>[Quelle]#

Eine multivariate hypergeometrische Zufallsvariable.

Parameter:
marray_like

Die Anzahl jedes Objekttyps in der Grundgesamtheit. Das heißt, \(m[i]\) ist die Anzahl der Objekte vom Typ \(i\).

narray_like

Die Anzahl der aus der Grundgesamtheit gezogenen Stichproben.

seed{None, int, np.random.RandomState, np.random.Generator}, optional

Wird zum Ziehen von Zufallsvarianten verwendet. Wenn seed None ist, wird die RandomState Singleton verwendet. Wenn seed eine Ganzzahl ist, wird eine neue RandomState-Instanz verwendet, die mit seed initialisiert wird. Wenn seed bereits eine RandomState- oder Generator-Instanz ist, wird dieses Objekt verwendet. Standard ist None.

Methoden

pmf(x, m, n)

Wahrscheinlichkeitsmassenfunktion.

logpmf(x, m, n)

Logarithmus der Wahrscheinlichkeitsmassenfunktion.

rvs(m, n, size=1, random_state=None)

Zufällige Stichproben aus einer multivariaten hypergeometrischen Verteilung ziehen.

mean(m, n)

Mittelwert der multivariaten hypergeometrischen Verteilung.

var(m, n)

Varianz der multivariaten hypergeometrischen Verteilung.

cov(m, n)

Berechnet die Kovarianzmatrix der multivariaten hypergeometrischen Verteilung.

Siehe auch

scipy.stats.hypergeom

Die hypergeometrische Verteilung.

scipy.stats.multinomial

Die multinomiale Verteilung.

Hinweise

m muss ein Array positiver Ganzzahlen sein. Wenn das Quantil \(i\) Werte außerhalb des Bereichs \([0, m_i]\) enthält, wobei \(m_i\) die Anzahl der Objekte des Typs \(i\) in der Grundgesamtheit ist, oder wenn die Parameter inkonsistent zueinander sind (z. B. x.sum() != n), geben die Methoden den entsprechenden Wert zurück (z. B. 0 für pmf). Wenn m oder n negative Werte enthalten, enthält das Ergebnis dort nan.

Die Wahrscheinlichkeitsmassenfunktion für multivariate_hypergeom ist

\[\begin{split}P(X_1 = x_1, X_2 = x_2, \ldots, X_k = x_k) = \frac{\binom{m_1}{x_1} \binom{m_2}{x_2} \cdots \binom{m_k}{x_k}}{\binom{M}{n}}, \\ \quad (x_1, x_2, \ldots, x_k) \in \mathbb{N}^k \text{ mit } \sum_{i=1}^k x_i = n\end{split}\]

wobei \(m_i\) die Anzahl der Objekte vom Typ \(i\) ist, \(M\) die Gesamtzahl der Objekte in der Grundgesamtheit ist (Summe aller \(m_i\)) und \(n\) die Größe der aus der Grundgesamtheit zu ziehenden Stichprobe ist.

Hinzugefügt in Version 1.6.0.

Referenzen

[1]

Die multivariate hypergeometrische Verteilung, http://www.randomservices.org/random/urn/MultiHypergeometric.html

[2]

Thomas J. Sargent und John Stachurski, 2020, Multivariate Hypergeometric Distribution https://python.quantecon.org/multi_hyper.html

Beispiele

Um die Wahrscheinlichkeitsmassenfunktion der multivariaten hypergeometrischen Verteilung mit einer dichotomischen Grundgesamtheit der Größe \(10\) und \(20\) bei einer Stichprobengröße von \(12\) mit \(8\) Objekten des ersten Typs und \(4\) Objekten des zweiten Typs auszuwerten, verwenden Sie

>>> from scipy.stats import multivariate_hypergeom
>>> multivariate_hypergeom.pmf(x=[8, 4], m=[10, 20], n=12)
0.0025207176631464523

Die multivariate_hypergeom-Verteilung ist identisch mit der entsprechenden hypergeom-Verteilung (abgesehen von winzigen numerischen Unterschieden), wenn nur zwei Arten (gut und schlecht) von Objekten in der Grundgesamtheit vorhanden sind, wie im obigen Beispiel. Betrachten Sie ein weiteres Beispiel zum Vergleich mit der hypergeometrischen Verteilung

>>> from scipy.stats import hypergeom
>>> multivariate_hypergeom.pmf(x=[3, 1], m=[10, 5], n=4)
0.4395604395604395
>>> hypergeom.pmf(k=3, M=15, n=4, N=10)
0.43956043956044005

Die Funktionen pmf, logpmf, mean, var, cov und rvs unterstützen Broadcasting, unter der Konvention, dass die Vektorparameter (x, m und n) so interpretiert werden, als ob jede Zeile entlang der letzten Achse ein einzelnes Objekt darstellt. Beispielsweise können wir die beiden vorherigen Aufrufe von multivariate_hypergeom wie folgt kombinieren:

>>> multivariate_hypergeom.pmf(x=[[8, 4], [3, 1]], m=[[10, 20], [10, 5]],
...                            n=[12, 4])
array([0.00252072, 0.43956044])

Dieses Broadcasting funktioniert auch für cov, wobei die Ausgabeobjekte quadratische Matrizen der Größe m.shape[-1] sind. Zum Beispiel:

>>> multivariate_hypergeom.cov(m=[[7, 9], [10, 15]], n=[8, 12])
array([[[ 1.05, -1.05],
        [-1.05,  1.05]],
       [[ 1.56, -1.56],
        [-1.56,  1.56]]])

Das heißt, result[0] ist gleich multivariate_hypergeom.cov(m=[7, 9], n=8) und result[1] ist gleich multivariate_hypergeom.cov(m=[10, 15], n=12).

Alternativ kann das Objekt (als Funktion) aufgerufen werden, um die Parameter m und n festzulegen, wodurch eine "eingefrorene" multivariate hypergeometrische Zufallsvariable zurückgegeben wird.

>>> rv = multivariate_hypergeom(m=[10, 20], n=12)
>>> rv.pmf(x=[8, 4])
0.0025207176631464523