scipy.stats.invwishart#

scipy.stats.invwishart = <scipy.stats._multivariate.invwishart_gen object>[Quelle]#

Eine inverse Wishart-Zufallsvariable.

Das Schlüsselwort df gibt die Freiheitsgrade an. Das Schlüsselwort scale gibt die Skalenmatrix an, die symmetrisch und positiv definit sein muss. In diesem Kontext wird die Skalenmatrix oft im Sinne einer multivariaten Normalverteilungs-Kovarianzmatrix interpretiert.

Parameter:
dfint

Freiheitsgrade, muss größer oder gleich der Dimension der Skalenmatrix sein

scalearray_like

Symmetrische, positiv definite Skalenmatrix 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, df, scale)

Wahrscheinlichkeitsdichtefunktion.

logpdf(x, df, scale)

Logarithmus der Wahrscheinlichkeitsdichtefunktion.

rvs(df, scale, size=1, random_state=None)

Zufällige Stichproben aus einer inversen Wishart-Verteilung ziehen.

entropy(df, scale)

Differentielle Entropie der Verteilung.

Löst aus:
scipy.linalg.LinAlgError

Wenn die Skalenmatrix scale nicht positiv definit ist.

Siehe auch

wishart

Hinweise

Die Skalenmatrix scale muss eine symmetrische, positiv definite Matrix sein. Singuläre Matrizen, einschließlich des symmetrischen, positiv semidefiniten Falls, werden nicht unterstützt. Symmetrie wird nicht geprüft; nur der untere Dreiecksteil wird verwendet.

Die inverse Wishart-Verteilung wird oft bezeichnet als

\[W_p^{-1}(\nu, \Psi)\]

wobei \(\nu\) die Freiheitsgrade und \(\Psi\) die \(p \times p\) Skalenmatrix ist.

Die Wahrscheinlichkeitsdichtefunktion für invwishart hat Unterstützung über positiv definite Matrizen \(S\); wenn \(S \sim W^{-1}_p(\nu, \Sigma)\), dann ist ihre PDF gegeben durch

\[f(S) = \frac{|\Sigma|^\frac{\nu}{2}}{2^{ \frac{\nu p}{2} } |S|^{\frac{\nu + p + 1}{2}} \Gamma_p \left(\frac{\nu}{2} \right)} \exp\left( -tr(\Sigma S^{-1}) / 2 \right)\]

Wenn \(S \sim W_p^{-1}(\nu, \Psi)\) (inverse Wishart), dann ist \(S^{-1} \sim W_p(\nu, \Psi^{-1})\) (Wishart).

Wenn die Skalenmatrix eindimensional und gleich eins ist, dann kollabiert die inverse Wishart-Verteilung \(W_1(\nu, 1)\) zur inversen Gamma-Verteilung mit den Parametern shape = \(\frac{\nu}{2}\) und scale = \(\frac{1}{2}\).

Anstatt eine zufällig generierte Wishart-Matrix zu invertieren, wie in [2] beschrieben, wird hier der Algorithmus in [4] verwendet, um direkt eine zufällige inverse Wishart-Matrix ohne Inversion zu generieren.

Hinzugefügt in Version 0.16.0.

Referenzen

[1]

M.L. Eaton, “Multivariate Statistics: A Vector Space Approach”, Wiley, 1983.

[2]

M.C. Jones, “Generating Inverse Wishart Matrices”, Communications in Statistics - Simulation and Computation, vol. 14.2, pp.511-514, 1985.

[3]

Gupta, M. und Srivastava, S. “Parametric Bayesian Estimation of Differential Entropy and Relative Entropy”. Entropy 12, 818 - 843. 2010.

[4]

S.D. Axen, “Efficiently generating inverse-Wishart matrices and their Cholesky factors”, arXiv:2310.15884v1. 2023.

Beispiele

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy.stats import invwishart, invgamma
>>> x = np.linspace(0.01, 1, 100)
>>> iw = invwishart.pdf(x, df=6, scale=1)
>>> iw[:3]
array([  1.20546865e-15,   5.42497807e-06,   4.45813929e-03])
>>> ig = invgamma.pdf(x, 6/2., scale=1./2)
>>> ig[:3]
array([  1.20546865e-15,   5.42497807e-06,   4.45813929e-03])
>>> plt.plot(x, iw)
>>> plt.show()
../../_images/scipy-stats-invwishart-1_00_00.png

Die Eingangsquantile können jede beliebige Form haben, solange die letzte Achse die Komponenten beschriftet.

Alternativ kann das Objekt (als Funktion) aufgerufen werden, um die Freiheitsgrade und die Skalenparameter festzulegen, wodurch eine "eingefrorene" inverse Wishart-Zufallsvariable zurückgegeben wird

>>> rv = invwishart(df=1, scale=1)
>>> # Frozen object with the same methods but holding the given
>>> # degrees of freedom and scale fixed.