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 Konzentrationsparametern alpha gezogen 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 eine RandomState- oder Generator-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.dirichlet

Die Dirichlet-Verteilung.

scipy.stats.multinomial

Die 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 alpha und 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 alpha ist 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)