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 eineRandomState- oderGenerator-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.binomDie Binomialverteilung.
numpy.random.Generator.multinomialStichprobenziehung aus der multinomialen Verteilung.
scipy.stats.multivariate_hypergeomDie 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
multinomialist\[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,entropyundcovunterstützen Broadcasting nach der Konvention, dass die Vektorparameter (xundp) 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,)undp.shape == (2,), aber gemäß den oben genannten Regeln verhalten sie sich so, als ob die Zeilen[3, 4]und[3, 5]inxund[.3, .7]inpein einzelnes Objekt wären und als ob wirx.shape = (2,),n.shape = (2,)undp.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ößep.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,)undp.shape == (2, 2), und gemäß den obigen Regeln werden diese so gebroadcastet, als wärep.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), wobeiresult[0]gleichmultinomial.cov(n=4, p=[.3, .7])ist undresult[1]gleichmultinomial.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.