scipy.stats.dirichlet#

scipy.stats.dirichlet = <scipy.stats._multivariate.dirichlet_gen Objekt>[Quelle]#

Eine Dirichlet-Zufallsvariable.

Das Schlüsselwort alpha gibt die Konzentrationsparameter der Verteilung an.

Hinzugefügt in Version 0.15.0.

Parameter:
alphaarray_like

Die Konzentrationsparameter. Die Anzahl der Einträge bestimmt die Dimensionalität der Verteilung.

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

pdf(x, alpha)

Wahrscheinlichkeitsdichtefunktion.

logpdf(x, alpha)

Logarithmus der Wahrscheinlichkeitsdichtefunktion.

rvs(alpha, size=1, random_state=None)

Zufällige Stichproben aus einer Dirichlet-Verteilung ziehen.

mean(alpha)

Der Mittelwert der Dirichlet-Verteilung

var(alpha)

Die Varianz der Dirichlet-Verteilung

cov(alpha)

Die Kovarianz der Dirichlet-Verteilung

entropy(alpha)

Berechnen Sie die differentielle Entropie der Dirichlet-Verteilung.

Hinweise

Jeder \(\alpha\)-Eintrag muss positiv sein. Die Verteilung hat nur Unterstützung auf dem Simplex, der definiert ist durch

\[\sum_{i=1}^{K} x_i = 1\]

wobei \(0 < x_i < 1\).

Wenn die Quantile nicht innerhalb des Simplex liegen, wird ein ValueError ausgelöst.

Die Wahrscheinlichkeitsdichtefunktion für dirichlet ist

\[f(x) = \frac{1}{\mathrm{B}(\boldsymbol\alpha)} \prod_{i=1}^K x_i^{\alpha_i - 1}\]

wo

\[\mathrm{B}(\boldsymbol\alpha) = \frac{\prod_{i=1}^K \Gamma(\alpha_i)} {\Gamma\bigl(\sum_{i=1}^K \alpha_i\bigr)}\]

und \(\boldsymbol\alpha=(\alpha_1,\ldots,\alpha_K)\) sind die Konzentrationsparameter und \(K\) ist die Dimension des Raumes, in dem \(x\) Werte annimmt.

Beachten Sie, dass die Schnittstelle dirichlet etwas inkonsistent ist. Das von der rvs-Funktion zurückgegebene Array ist im Vergleich zum von pdf und logpdf erwarteten Format transponiert.

Beispiele

>>> import numpy as np
>>> from scipy.stats import dirichlet

Erzeuge eine Dirichlet-Zufallsvariable

>>> quantiles = np.array([0.2, 0.2, 0.6])  # specify quantiles
>>> alpha = np.array([0.4, 5, 15])  # specify concentration parameters
>>> dirichlet.pdf(quantiles, alpha)
0.2843831684937255

Dieselbe PDF, aber auf logarithmischer Skala

>>> dirichlet.logpdf(quantiles, alpha)
-1.2574327653159187

Sobald wir die Dirichlet-Verteilung spezifiziert haben, können wir interessierende Größen berechnen

>>> dirichlet.mean(alpha)  # get the mean of the distribution
array([0.01960784, 0.24509804, 0.73529412])
>>> dirichlet.var(alpha) # get variance
array([0.00089829, 0.00864603, 0.00909517])
>>> dirichlet.entropy(alpha)  # calculate the differential entropy
-4.3280162474082715

Wir können auch Zufallsstichproben aus der Verteilung zurückgeben

>>> dirichlet.rvs(alpha, size=1, random_state=1)
array([[0.00766178, 0.24670518, 0.74563305]])
>>> dirichlet.rvs(alpha, size=2, random_state=2)
array([[0.01639427, 0.1292273 , 0.85437844],
       [0.00156917, 0.19033695, 0.80809388]])

Alternativ kann das Objekt (als Funktion) aufgerufen werden, um Konzentrationsparameter festzulegen, wodurch eine "eingefrorene" Dirichlet-Zufallsvariable zurückgegeben wird

>>> rv = dirichlet(alpha)
>>> # Frozen object with the same methods but holding the given
>>> # concentration parameters fixed.