scipy.stats.multinomial#

scipy.stats.multinomial = <scipy.stats._multivariate.multinomial_gen object>[Quelle]#

Eine multinomiale Zufallsvariable.

Parameter:
nint

Anzahl der Versuche

parray_like

Wahrscheinlichkeit, dass ein Versuch in jede Kategorie fällt; sollte sich zu 1 summieren

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, n, p)

Wahrscheinlichkeitsmassenfunktion.

logpmf(x, n, p)

Logarithmus der Wahrscheinlichkeitsmassenfunktion.

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

Zufällige Stichproben aus einer multinomialen Verteilung ziehen.

entropy(n, p)

Berechnet die Entropie der multinomialen Verteilung.

cov(n, p)

Berechnet die Kovarianzmatrix der multinomialen Verteilung.

Siehe auch

scipy.stats.binom

Die Binomialverteilung.

numpy.random.Generator.multinomial

Stichprobenziehung aus der multinomialen Verteilung.

scipy.stats.multivariate_hypergeom

Die multivariate hypergeometrische Verteilung.

Hinweise

n sollte eine nicht-negative ganze Zahl sein. Jedes Element von p sollte im Intervall \([0,1]\) liegen und die Elemente sollten sich zu 1 summieren. Wenn sie sich nicht zu 1 summieren, wird das letzte Element des p-Arrays nicht verwendet und durch die verbleibende Wahrscheinlichkeit ersetzt, die von den früheren Elementen übrig bleibt.

Die Wahrscheinlichkeitsmassenfunktion für multinomial ist

\[f(x) = \frac{n!}{x_1! \cdots x_k!} p_1^{x_1} \cdots p_k^{x_k},\]

unterstützt auf \(x=(x_1, \ldots, x_k)\), wobei jedes \(x_i\) eine nicht-negative ganze Zahl ist und deren Summe \(n\) ist.

Hinzugefügt in Version 0.19.0.

Beispiele

>>> from scipy.stats import multinomial
>>> rv = multinomial(8, [0.3, 0.2, 0.5])
>>> rv.pmf([1, 3, 4])
0.042000000000000072

Die multinomiale Verteilung für \(k=2\) ist identisch mit der entsprechenden Binomialverteilung (abgesehen von winzigen numerischen Unterschieden)

>>> from scipy.stats import binom
>>> multinomial.pmf([3, 4], n=7, p=[0.4, 0.6])
0.29030399999999973
>>> binom.pmf(3, 7, 0.4)
0.29030400000000012

Die Funktionen pmf, logpmf, entropy und cov unterstützen Broadcasting nach der Konvention, dass die Vektorparameter (x und p) so interpretiert werden, als ob jede Zeile entlang der letzten Achse ein einzelnes Objekt darstellt. Zum Beispiel

>>> multinomial.pmf([[3, 4], [3, 5]], n=[7, 8], p=[.3, .7])
array([0.2268945,  0.25412184])

Hier ist x.shape == (2, 2), n.shape == (2,) und p.shape == (2,), aber gemäß den oben genannten Regeln verhalten sie sich so, als ob die Zeilen [3, 4] und [3, 5] in x und [.3, .7] in p ein einzelnes Objekt wären und als ob wir x.shape = (2,), n.shape = (2,) und p.shape = () hätten. Um die einzelnen Elemente ohne Broadcasting zu erhalten, würden wir dies tun

>>> multinomial.pmf([3, 4], n=7, p=[.3, .7])
0.2268945
>>> multinomial.pmf([3, 5], 8, p=[.3, .7])
0.25412184

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

>>> multinomial.cov([4, 5], [[.3, .7], [.4, .6]])
array([[[ 0.84, -0.84],
        [-0.84,  0.84]],
       [[ 1.2 , -1.2 ],
        [-1.2 ,  1.2 ]]])

In diesem Beispiel ist n.shape == (2,) und p.shape == (2, 2), und gemäß den obigen Regeln werden diese so gebroadcastet, als wäre p.shape == (2,). Daher sollte das Ergebnis auch die Form (2,) haben, aber da jede Ausgabe eine \(2 \times 2\) Matrix ist, hat das Ergebnis tatsächlich die Form (2, 2, 2), wobei result[0] gleich multinomial.cov(n=4, p=[.3, .7]) ist und result[1] gleich multinomial.cov(n=5, p=[.4, .6]) ist.

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

>>> rv = multinomial(n=7, p=[.3, .7])
>>> # Frozen object with the same methods but holding the given
>>> # degrees of freedom and scale fixed.