Ableitung der multivariaten t-Verteilung und Implementierung der Zufallszahlengenerierung durch Python

Einführung

Da ich die multivariate t-Verteilung untersucht habe, handelt es sich um eine Zusammenfassung.

(In dem Moment, als ich diesen Artikel schrieb, habe ich die Daten weggeblasen und neu geschrieben ... Ich möchte sterben ...)

Ableitung der multivariaten t-Verteilung

Definition

Folgen Sie der Notation von Multivariate T-Distribution auf Wikipedia, da Gugu als erstes gefunden wird. Die Wahrscheinlichkeitsdichtefunktion für die multivariate t-Verteilung ist unten definiert.

p(\textbf{x}) = \frac{\Gamma\Bigl[{\frac{\nu+p}{2}}\Bigr]}{\Gamma\Bigl[{\frac{\nu}{2}}\Bigr] \nu^{\frac{p}{2}}\pi^{\frac{p}{2}} \det(\Sigma)^{\frac{1}{2}}} \Bigl[ 1 + \frac{1}{\nu} (\textbf{x} - {\bf \mu})^{T} {\bf \Sigma}^{-1}(\textbf{x} - {\bf \mu})\bigr]^{\frac{-(\nu+p)}{2}}. \tag{1}

Theorie

Punkt

Was ist in erster Linie die t-Verteilung? Man kann sagen, dass die t-Verteilung die Parameter berücksichtigt, die die Streuung der Normalverteilung erhöhen oder verringern, die Gammaverteilung annehmen und schließlich die Integration eliminieren. Hier können wir eine inverse Gammaverteilung und eine Chi-Quadrat-Verteilung anstelle einer Gammaverteilung annehmen, aber es scheint, dass alle Werte mit einer geringfügigen Änderung gleich sind. (Ich habe es nicht versucht)

Auf diese Weise können Sie das durchschnittliche Verhalten anzeigen, wenn Sie sich über den Wert der Varianz nicht sicher sind.

Ableitung

Betrachten Sie zwei stochastische Variablen $ V \ sim Gam (\ alpha, \ beta) $, $ X \ sim N (\ textbf {0}, {\ bf \ Sigma}) $. $ X $ ist eine Normalverteilung der Dimension $ d $. Diese beiden stochastischen Variablen werden von den Funktionen $ f und g $ in $ Y und U $ umgewandelt. $ Y = f(V,X) = \mu + \frac{1}{\sqrt{V}}X, \tag{2} $ $ U = g(V,X) = g(V)= V. \tag{3} $

Hier ist $ g $ eine gleiche Funktion von $ V $, $ \ mu \ in \ mathbb {R} ^ {d} $ ist ein d-dimensionaler Vektor, der den Durchschnitt darstellt, und $ V $ ist unabhängig von $ X $. Ich werde annehmen.

Dieses $ f (\ cdot) $ ist eine Geradenfunktion (Ebene), wenn $ V $ fest ist, und ist eine Eins-zu-Eins-Korrespondenzfunktion. Daher existiert die Umkehrfunktion $ f ^ {-1} (\ cdot) , $ f^{-1}(Y) = X = \sqrt{U}(Y - \mu), \tag{4} $$ Es wird.

Finden Sie die Verteilung von $ Y $ aus $ V und X $, deren Verteilung bereits bekannt ist. Da es zwei stochastische Variablen gibt, $ U $ und $ Y $, wird die Verteilung von $ Y $ durch Integrieren und Eliminieren von $ U $ unter Berücksichtigung der gleichzeitigen Verteilung von $ U und Y $ erhalten.

Pr(u,y) = Pr(U < u, Y < y) = Pr(g(V) < u,f(X) < y) \\
= Pr(V < g^{-1}(u), X < f^{-1}(y)) \\
= Pr(V < u, X<\sqrt{u}(y - \mu)) = Pr(V < u) Pr(X < \sqrt{u}(y - \mu)). \tag{5}

Hier wird angenommen, dass $ V $ und $ X $ unabhängig sind. $ Pr(v,x) = Pr(v)Pr(x), \tag{6} $ Ich benutzte.

Sei $ p_ {V} und p_ {X} $ die Wahrscheinlichkeitsdichtefunktion von $ V $ bzw. $ X . $ Pr(u,y) = Pr(V < u) Pr(X < \sqrt{u}(y - \mu)) = \int_{-\infty}^{u} \int_{-\infty}^{y} p_{V}(u)p_{X} (\sqrt{u}(y - \mu)) |\det(J)| dudy. \tag{7} $$

Hier,|\det(J)|Wird der Jacobi durch variable Transformation und die Jacobi-Matrix erzeugt?J(d+1)*(d+1)Matrix)

J = \begin{pmatrix} \frac{\partial x}{\partial y^{T}} & \frac{\partial x}{\partial u} \\ \frac{\partial v}{\partial y^{T}} & \frac{\partial v}{\partial u} \end{pmatrix} =
 \begin{pmatrix} \sqrt{u}I_{d} & \frac{1}{2\sqrt{u}(y-\mu)} \\ \textbf{0} & 1 \end{pmatrix}. \tag{8}

Da die Jacobi-Matrix $ J $ eine obere Dreiecksmatrix ist, ist der Matrixausdruck das Produkt diagonaler Elemente. $ \det(J) = u^{\frac{d}{2}}. \tag{9} $    Da der Inhalt der Integration von $ (7) $ die Wahrscheinlichkeitsdichtefunktion $ p_ {U, Y} (u, y) $ von $ Pr (u, y) $ ist, wird dies berechnet. Von $ V \ sim Gam (\ alpha, \ beta) $, $ X \ sim N (\ textbf {0}, {\ bf \ Sigma}) $ $ p_{V}(v) = \frac{\beta^{\alpha}}{\Gamma(\alpha)} v^{\alpha-1} \exp{( - \beta v)}, \tag{10} $ $ p_{X}(\textbf{x}) = \frac{1}{(2\pi)^{\frac{d}{2}}} \frac{1}{\sqrt{\det(\Sigma)}} \exp{\Bigl( - \frac{1}{2} \textbf{x}^{T} \Sigma^{-1} \textbf{x} \Bigr)}, \tag{11} $ Deshalb, $ p_{V}(u) = \frac{\beta^{\alpha}}{\Gamma(\alpha)} u^{\alpha-1} \exp{( - \beta u)} = Gam(\alpha, \beta), \tag{12} $

p_{X}(\sqrt{u}(\textbf{y} - \mu)) = \frac{1}{(2\pi)^{\frac{d}{2}}} \frac{1}{\sqrt{\det(\Sigma)}} \exp{\Bigl( - \frac{1}{2} \sqrt{u}(\textbf{y} - \mu)^{T} \Sigma^{-1} \sqrt{u}(\textbf{y} - \mu) \Bigr)} \\
= \frac{1}{(2\pi)^{\frac{d}{2}}} u^{-\frac{d}{2}} u^{\frac{d}{2}} \frac{1}{\sqrt{\det(\Sigma)}} \exp{\Bigl( - \frac{1}{2} (\textbf{y} - \mu)^{T} (u \Sigma^{-1}) (\textbf{y} - \mu) \Bigr)} \\
=  u^{-\frac{d}{2}} \frac{1}{(2\pi)^{\frac{d}{2}}}  \frac{1}{\sqrt{\det(\frac{\Sigma}{u})}} \exp{\Bigl( - \frac{1}{2} (\textbf{y} - \mu)^{T} (u \Sigma^{-1}) (\textbf{y} - \mu) \Bigr)} = u^{-\frac{d}{2}} N(\mu, \frac{\Sigma}{u}). \tag{13}

Die Wahrscheinlichkeitsdichtefunktion $ p_ {U, Y} (u, y) $ von $ Pr (u, y) $ ist $ p_{U,Y}(u,y) = Gam(\alpha, \beta) u^{-\frac{d}{2}} N(\mu, \frac{\Sigma}{u}) |\det(J)| = Gam(\alpha, \beta) N(\mu, \frac{\Sigma}{u}) u^{-\frac{d}{2}}u^{\frac{d}{2}} = Gam(\alpha, \beta) N(\mu, \frac{\Sigma}{u}). \tag{14} $ (Hier ist die Plattform der Gammaverteilung $ u \ in [0, \ infty), d> 0 $, sodass der Absolutwert entfernt werden kann. )

Durch Integrieren von $ p_ {U, Y} (u, y) $ in Bezug auf $ u $ erhalten wir die Wahrscheinlichkeitsdichtefunktion $ p_ {Y} $ von $ Y . $ p_{Y} = \int_{0}^{\infty} p_{U,Y}(u,y)du = \int_{0}^{\infty} Gam(\alpha, \beta) N(\mu, \frac{\Sigma}{u})du \tag{15} $$

Zur Vereinfachung der Notation wird hier der Abstand der normalverteilten Maharanobis auf $ \ Delta ^ {2} = (\ textbf {y} - \ mu) ^ {T} \ Sigma ^ {-1} () gesetzt. Notiert als textbf {y} - \ mu) $.

p_{Y}(\textbf{y}) = \int_{0}^{\infty} \frac{\beta^{\alpha}}{\Gamma(\alpha)} u^{\alpha-1} \exp{( - \beta u)} u^{-\frac{d}{2}} \frac{1}{(2\pi)^{\frac{d}{2}}} \frac{1}{\sqrt{\det(\frac{\Sigma}{u})}} \exp{\Bigl( - \frac{u}{2} \Delta^{2} \Bigr)} du. \tag{16}

Extrahieren Sie nur den Teil, der von $ u $ abhängt $ p_{Y}(\textbf{y}) \propto \int_{0}^{\infty} u^{\alpha-1} \exp{( - \beta u)} u^{\frac{d}{2}} \exp{\Bigl( - \frac{u}{2} \Delta^{2} \Bigr)} du \\ = \int_{0}^{\infty} u^{\frac{d}{2}+\alpha-1} \exp{\Bigl( - u( \beta + \frac{\Delta^{2}}{2} ) \Bigr)} du. \tag{17} $

Wenn hier $ z = u (\ beta + \ frac {\ Delta ^ {2}} {2}) $ ist, dann ist $ u = z (\ beta + \ frac {\ Delta ^ {2}} {2 }) ^ {-1} $ und $ du = (\ beta + \ frac {\ Delta ^ {2}} {2}) ^ {-1} dz $. Wenn $ u = 0 $, $ z = 0 $, $ u \ bis \ infty $ und $ z \ bis \ infty $.

\int_{0}^{\infty} z^{\frac{d}{2} + \alpha -1} ( \beta + \frac{\Delta^{2}}{2} )^{-\frac{d}{2} -\alpha +1} \exp(-z) (\beta + \frac{\Delta^{2}}{2})^{-1} dz \\ = ( \beta + \frac{\Delta^{2}}{2} )^{-\frac{d}{2} -\alpha} \int_{0}^{\infty} z^{(\frac{d}{2} + \alpha) -1} \exp(-z) dz.

Aus der Definition der Gammafunktion $ p_{Y}(\textbf{y}) \propto \Bigl( \beta + \frac{\Delta^{2}}{2} \Bigr)^{-\frac{d}{2} -\alpha} \Gamma \Bigl( \frac{d}{2} + \alpha \Bigr) \tag{18} $

Betrachtet man den $ u $ -unabhängigen Term von $ (17) $

p_{Y}(\textbf{y}) = \frac{\beta^{\alpha}}{\Gamma(\alpha)} \frac{1}{(2\pi)^{\frac{d}{2}}}  \frac{1}{\sqrt{\det(\Sigma)}} \Bigl( \beta + \frac{\Delta^{2}}{2} \Bigr)^{-\frac{d}{2} -\alpha}  \\
= \frac{\Gamma \Bigl( \frac{d}{2} + \alpha \Bigr)}{\Gamma(\alpha)}\frac{\beta^{\alpha}}{(2\pi)^{\frac{d}{2}}} \frac{1}{\sqrt{\det(\Sigma)}} \Bigl( \beta + \frac{\Delta^{2}}{2} \Bigr)^{-\frac{d}{2} -\alpha} \Bigl( \frac{1}{\beta} \Bigr)^{\frac{d}{2} + \alpha} \beta^{-\frac{d}{2}-\alpha} \\
= \frac{\Gamma \Bigl( \frac{d}{2} + \alpha \Bigr)}{\Gamma(\alpha)}\frac{1}{(2 \beta \pi)^{\frac{d}{2}}} \frac{1}{\sqrt{\det(\Sigma)}} \Bigl( 1 + \frac{\Delta^{2}}{2 \beta} \Bigr)^{-\frac{d}{2} -\alpha}. \tag{19}

Wenn hier $ \ alpha = \ beta = \ frac {\ nu} {2} $ und $ p = d $ gesetzt sind, $ p_{Y}(\textbf{y}) = \frac{\Gamma \Bigl( \frac{\nu+p}{2} \Bigr)}{\Gamma \Bigl( \frac{\nu}{2} \Bigr)}\frac{1}{(\nu \pi)^{\frac{p}{2}}} \frac{1}{\sqrt{\det(\Sigma)}} \Bigl( 1 + \frac{\Delta^{2}}{\nu} \Bigr)^{-\frac{(\nu+p)}{2}}, \tag{20} $ Stimmt mit der Definition der t-Verteilung von $ (1) $ überein. $ \ Box $

Trainieren

Implementierung der Zufallszahlengenerierung durch Python

Da der Ausdruck $ (2) $ die Methode zum Generieren von Zufallszahlen ist, werden wir dies in Python implementieren.

# -*- coding: utf-8 -*-
#!/usr/bin/python

import numpy as np
import matplotlib.pyplot as plt

#Stellen Sie die Parameter ein.
N = 5000
d = 10
df = 4

mean = np.zeros(d)
cov = np.eye(d)

#Zufällige Erzeugung aus der Gammaverteilung
V = np.random.gamma(shape=df/2., scale=df/2.,size=N)

#Zufällige Generierung aus multivariater Normalverteilung
X = np.random.multivariate_normal(mean=mean, cov=cov, size=N)

#Konvertiere X.
V = V.reshape((N,1))
denom = np.sqrt(np.tile(V,d))
Y = mean + X / denom


#Generieren Sie zum Vergleich Zufallszahlen aus einer multivariaten Normalverteilung.
#(Frage:Ist es in Ordnung, wenn der Vergleich so aussieht? )
cov_ = ((df - 2) / float(df)) * np.corrcoef(Y.T)
X_ = np.random.multivariate_normal(mean=mean, cov=cov_, size=N)

#Handlung.
fig = plt.figure()
ax = fig.add_subplot(111)
ax.hist(X_[:,0], color="blue", normed=True, label="Normal dist", bins=30)
ax.hist(Y[:,0], color="red", normed=True, label="t dist", bins=30, alpha=0.5)
ax.set_title("Comparison of normal and t distribution")
ax.legend()
fig.show()

fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(X_[:,0], X_[:,1],color="blue",label="Normal dist")
ax.scatter(Y[:,0], Y[:,1],color="red",label="t dist",alpha=0.5)
ax.set_title("scatter plot of t and normal dist")
ax.legend()
fig.show()

figure_1.png

figure_2.png

Die Dispersion ist groß und es sieht aus wie eine t-Verteilung? (Ich wollte jeweils nur eine Dimension vergleichen, aber ich habe es umgeschrieben und erschöpft, also geht es um ...)

Schließlich

Ich bin ein Atmosphärenmathematiker, also sag mir bitte, wenn du einen Fehler machst. Wenn ich Zeit habe, möchte ich die Verbindung verschiedener Distributionen verfolgen.

Recommended Posts

Ableitung der multivariaten t-Verteilung und Implementierung der Zufallszahlengenerierung durch Python
Einführung in die Erkennung von Anomalien und Zusammenfassung der Methoden
Ableitung der multivariaten t-Verteilung und Implementierung der Zufallszahlengenerierung durch Python
Abnormalitätserkennung mit MNIST durch Autoencoder (PyTorch)
Erkennung von EKG-Datenanomalien durch Matrix Profile
[Python] Memorandum über zufällige Generationen
Primzahlgenerator von Python
Pseudozufallszahlengenerierung und Zufallsstichprobe
Zusammenfassung der Zufallszahlengenerierung durch Numpy
[Python] Implementierung der Nelder-Mead-Methode und Speichern von GIF-Bildern durch matplotlib
PRML Kapitel 2 Python-Implementierung von Student t-Distribution
[Python] Vergleich der Theorie und Implementierung der Hauptkomponentenanalyse durch Python (PCA, Kernel PCA, 2DPCA)
Teilt die Zeichenfolge durch die angegebene Anzahl von Zeichen. In Ruby und Python.
TRIE-Baumimplementierung mit Python und LOUDS
Die Cholesky-Zerlegung war der Grund für die Erzeugung von Zufallszahlen nach einer multivariaten Normalverteilung.
Erläuterung der Bearbeitungsentfernung und Implementierung in Python
Python> Nach Nummer sortieren und nach Alphabet sortieren> Sortiert verwenden ()
Sequentielle Aktualisierung der Co-Distribution zur Ableitung und Implementierung von Ausdrücken
Zeichnen und verstehen Sie die multivariate Normalverteilung in Python
Implementierung des DB-Administratorbildschirms durch Flask-Admin und Flask-Login
Zufällige String-Generierung (Python)
Python-Implementierung des CSS3-Mischmodus und Diskussion über den Farbraum
Ableitung und Implementierung von Aktualisierungsgleichungen für die nicht negative Tensorfaktorzerlegung
Erklärung und Implementierung von SocialFoceModel
Python-Implementierung des Partikelfilters
Python-Implementierung gemischte Bernoulli-Verteilung
Maxout Beschreibung und Implementierung (Python)
Implementierung der schnellen Sortierung in Python
Quellinstallation und Installation von Python
Zählen Sie die Anzahl der thailändischen und arabischen Zeichen in Python gut
Automatische Erfassung von Genexpressionsdaten durch Python und R.
Crawlen mit Python und Twitter API 2-Implementierung der Benutzersuchfunktion
[Python] Ich habe die Theorie und Implementierung der logistischen Regression gründlich erklärt
[Python] Ich habe die Theorie und Implementierung des Entscheidungsbaums gründlich erklärt
Praxis der Datenanalyse durch Python und Pandas (Tokyo COVID-19 Data Edition)
Vergleich der Berechnungsgeschwindigkeit durch Implementierung von Python mpmath (willkürliche Genauigkeitsberechnung) (Hinweis)
Implementierungsbeispiel für das Hostile Generation Network (GAN) von Keras [Für Anfänger]
[Wissenschaftlich-technische Berechnung nach Python] Ableitung analytischer Lösungen für quadratische und kubische Gleichungen, mathematische Formeln, Sympy