scipy.stats.dirichlet_multinomial#
- scipy.stats.dirichlet_multinomial = <scipy.stats._multivariate.dirichlet_multinomial_gen object>[Quelle]#
Eine Dirichlet-multinomiale Zufallsvariable.
Die Dirichlet-multinomiale Verteilung ist eine zusammengesetzte Wahrscheinlichkeitsverteilung: Sie ist die multinomiale Verteilung mit der Anzahl der Versuche n und Klassenkennzahlen
p, die zufällig aus einer Dirichlet-Verteilung mit Konzentrationsparameternalphagezogen werden.- Parameter:
- alphaarray_like
Die Konzentrationsparameter. Die Anzahl der Einträge entlang der letzten Achse bestimmt die Dimensionalität der Verteilung. Jeder Eintrag muss strikt positiv sein.
- nint oder array_like
Die Anzahl der Versuche. Jedes Element muss eine nicht-negative ganze Zahl sein.
- 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
logpmf(x, alpha, n)
Logarithmus der Wahrscheinlichkeitsmassenfunktion.
pmf(x, alpha, n)
Wahrscheinlichkeitsmassenfunktion.
mean(alpha, n)
Mittelwert der Dirichlet-multinomialen Verteilung.
var(alpha, n)
Varianz der Dirichlet-multinomialen Verteilung.
cov(alpha, n)
Die Kovarianz der Dirichlet-multinomialen Verteilung.
Siehe auch
scipy.stats.dirichletDie Dirichlet-Verteilung.
scipy.stats.multinomialDie multinomiale Verteilung.
Referenzen
[1]Dirichlet-multinomiale Verteilung, Wikipedia, https://www.wikipedia.org/wiki/Dirichlet-multinomial_distribution
Beispiele
>>> from scipy.stats import dirichlet_multinomial
PMF abrufen
>>> n = 6 # number of trials >>> alpha = [3, 4, 5] # concentration parameters >>> x = [1, 2, 3] # counts >>> dirichlet_multinomial.pmf(x, alpha, n) 0.08484162895927604
Wenn die Summe der Kategorienzählungen nicht der Anzahl der Versuche entspricht, ist die Wahrscheinlichkeitsmasse null.
>>> dirichlet_multinomial.pmf(x, alpha, n=7) 0.0
Logarithmus der PMF abrufen
>>> dirichlet_multinomial.logpmf(x, alpha, n) -2.4669689491013327
Mittelwert abrufen
>>> dirichlet_multinomial.mean(alpha, n) array([1.5, 2. , 2.5])
Varianz abrufen
>>> dirichlet_multinomial.var(alpha, n) array([1.55769231, 1.84615385, 2.01923077])
Kovarianz abrufen
>>> dirichlet_multinomial.cov(alpha, n) array([[ 1.55769231, -0.69230769, -0.86538462], [-0.69230769, 1.84615385, -1.15384615], [-0.86538462, -1.15384615, 2.01923077]])
Alternativ kann das Objekt (als Funktion) aufgerufen werden, um die Parameter
alphaund n festzulegen, wodurch eine "eingefrorene" Dirichlet-multinomiale Zufallsvariable zurückgegeben wird.>>> dm = dirichlet_multinomial(alpha, n) >>> dm.pmf(x) 0.08484162895927579
Alle Methoden sind vollständig vektorisiert. Jedes Element von x und
alphaist ein Vektor (entlang der letzten Achse), jedes Element von n ist eine ganze Zahl (Skalar) und das Ergebnis wird elementweise berechnet.>>> x = [[1, 2, 3], [4, 5, 6]] >>> alpha = [[1, 2, 3], [4, 5, 6]] >>> n = [6, 15] >>> dirichlet_multinomial.pmf(x, alpha, n) array([0.06493506, 0.02626937])
>>> dirichlet_multinomial.cov(alpha, n).shape # both covariance matrices (2, 3, 3)
Broadcasting gemäß den Standard-NumPy-Konventionen wird unterstützt. Hier haben wir vier Sätze von Konzentrationsparametern (jeweils ein zweielementiger Vektor) für jeweils drei Anzahlen von Versuchen (jeweils ein Skalar).
>>> alpha = [[3, 4], [4, 5], [5, 6], [6, 7]] >>> n = [[6], [7], [8]] >>> dirichlet_multinomial.mean(alpha, n).shape (3, 4, 2)