[PYTHON] Die Cholesky-Zerlegung war der Grund für die Erzeugung von Zufallszahlen nach einer multivariaten Normalverteilung.

Die Choresky-Zerlegung einer diversifizierten, gemeinsam verteilten Matrix kann eine Zufallszahl, die einer unabhängigen Standardnormalverteilung folgt, in eine Zufallszahl umwandeln, die einer multivariaten Normalverteilung folgt. Was ist es?

1. Mathematischer Hintergrund

--Variable Umwandlung stochastischer Variablen --Derivierung der mehrdimensionalen Normalverteilung

Erklären.

1.1 Variable Transformation der mehrdimensionalen Wahrscheinlichkeitsverteilung

Probabilistische Variable

    \begin{eqnarray}
        X_1,\ X_2,\  \cdots ,\  X_n 
\end{eqnarray}

, Wahrscheinlichkeitsvariable

\begin{eqnarray}
        Y_1,\ Y_2,\  \cdots ,\  Y_n 
    \end{eqnarray}

Konvertieren zu. $ X $ und $ Y $ sind es jedoch

\begin{eqnarray}
        &f_X&\left(x_1,\ x_2,\ \cdots ,\ x_n\right)\\
        &f_Y&\left(y_1,\ y_2,\ \cdots ,\ y_n\right)
\end{eqnarray}

Angenommen, es hat eine Wahrscheinlichkeitsdichtefunktion von.

Jedes $ Y $ als vollständige Aufnahme von $ X $

    \begin{eqnarray}
        \begin{cases}
            Y_1 = h_1\left(X_1,\ X_2,\  \cdots ,\  X_n\right)&\\
            Y_2 = h_2\left(X_1,\ X_2,\  \cdots ,\  X_n\right)&\\
            \ \vdots &\\
            Y_n = h_n\left(X_1,\ X_2,\  \cdots ,\  X_n\right)
        \end{cases}
    \end{eqnarray}

Es wird ausgedrückt als. Da jedes $ h_i $ ein Einzelschuss ist, gibt es eine Umkehrfunktion:

    \begin{eqnarray}
        \begin{cases}
            X_1 = g_1\left(Y_1,\ Y_2,\  \cdots ,\  Y_n\right)&\\
            X_2 = g_2\left(Y_1,\ Y_2,\  \cdots ,\  Y_n\right)&\\
            \ \vdots &\\
            X_n = g_n\left(Y_1,\ Y_2,\  \cdots ,\  Y_n\right)
        \end{cases}
    \end{eqnarray}

Es wird ausgedrückt als. Wenden Sie für jede Teilmenge $ D $ des $ n $ dimensionalen Realraums eine variable Transformation der Integration an

    \begin{eqnarray}
        &\int\cdots\int_D& f_X\left(x_1,x_2,\cdots ,x_n\right) dx_1dx_2\cdots dx_n \nonumber \\
        = &\int\cdots\int_D& f_X\left(y_1,y_2,\cdots ,y_n\right)\left|\frac{\partial\left( x_1,x_2,\cdots x_n\right) }{\partial\left(y_1,y_2,\cdots y_n\right) }\right| dy_1dy_2\cdots dy_n 
    \end{eqnarray}

Ist festgelegt. Jacobian,

    \begin{eqnarray}
        \left|\frac{\partial\left( x_1,x_2,\cdots x_n\right) }{\partial\left(y_1,y_2,\cdots y_n\right) }\right| =
        \begin{pmatrix}
            \frac{\partial g_1}{\partial y_1}&\frac{\partial g_1}{\partial y_2}&\cdots&\frac{\partial g_1}{\partial y_n}\\
            \frac{\partial g_2}{\partial y_1}&\ddots&&\vdots\\
            \vdots &&\ddots&\vdots\\
            \frac{\partial g_n}{\partial y_1}&\cdots&\cdots&\frac{\partial g_n}{\partial y_n}
        \end{pmatrix}
    \end{eqnarray}

Es ist geschrieben als.

Ab hier die Umrechnungsformel der Wahrscheinlichkeitsdichtefunktion

    \begin{eqnarray}
        f_Y\left(y_1,y_2,\cdots ,y_n\right)
        = f_X\left(y_1,y_2,\cdots ,y_n\right)\left|\frac{\partial\left( x_1,x_2,\cdots x_n\right) }{\partial\left(y_1,y_2,\cdots y_n\right) }\right|
        
    \end{eqnarray}

Bekommen.

1.2 Ableitung der mehrdimensionalen Normalverteilung

Die Standardnormalverteilung für die Dimension $ 1 $ wird als $ N \ left (0,1 \ right) $ geschrieben.

$ N $ Standardnormalverteilung unabhängig voneinander

    \begin{eqnarray}
        Z_1,\ Z_2,\cdots ,\ Z_n \sim N\left(0,1\right)\ \textrm{i.i.d}
    \end{eqnarray}

Bestimmen. Diese simultanen Dichtefunktionen werden als Produkte ausgedrückt, da es sich um unabhängige Verteilungen handelt.

    \begin{eqnarray}
        f_Z\left(z\right) = \frac{1}{\left(2\pi\right)^{n/2}} \exp\left(-\frac{1}{2}z^Tz\right)
    \end{eqnarray}

Wird sein.

Hier,

    \begin{eqnarray}
        X &=& AZ + \mu
\end{eqnarray}

Führen Sie eine variable Konvertierung von durch. $ Z und X $ sind jedoch $ n $ dimensionale Wahrscheinlichkeitsvariablenvektoren, $ A $ ist eine $ n \ mal n $ Matrix und $ \ mu $ ist ein $ n $ dimensionaler Vektor.

\begin{eqnarray}
        X&=&\left(X_1,\ X_2,\ \cdots\ X_n\right)^{\mathrm{T}} \nonumber \\
        Z&=&\left(Z_1,\ Z_2,\ \cdots\ Z_n\right)^{\mathrm{T}} \nonumber \\

        A&=&
        \begin{pmatrix}
            a_{1,1}&a_{1,2}&\cdots&a_{1,n}\\
            a_{2,2}&\ddots&&\vdots\\
            \vdots&&\ddots&\vdots\\
            a_{n,1}&\cdots&\cdots&a_{n,n}
        \end{pmatrix} \nonumber \\

        \mu&=&\left(\mu_1,\ \mu_2,\ \cdots\ \mu_n\right)^{\mathrm{T}} \nonumber
    \end{eqnarray}

Jacobian für variable Konvertierung

    \begin{eqnarray}
        \left|\frac{\partial\left( x_1,x_2,\cdots x_n\right) }{\partial\left(z_1,z_2,\cdots z_n\right) }\right| &=& \det\left( A\right)
    \end{eqnarray}

Als,

\begin{eqnarray}
        \left|\frac{\partial\left( z_1,z_2,\cdots z_n\right) }{\partial\left(x_1,x_2,\cdots x_n\right) }\right| &=& \frac{1}{\det\left( A\right)}

    \end{eqnarray}

Bekommen.

Daher ist die simultane Dichtefunktion von $ X $

    \begin{eqnarray}
        f_X\left(x\right)&=&f_Z\left(A^{\mathrm{T}}\left(x-\mu\right)\right)\frac{1}{\det\left(A\right)} \nonumber \\
        &=&\frac{1}{\left(2\pi\right)^{n/2}\det\left(A\right)}\exp\left\{-\frac{1}{2}\left(x-\mu\right)^{\mathrm{T}}AA^{\mathrm{T}}\left(x-\mu\right)\right\}
    \end{eqnarray}

Wird sein.

Der Durchschnittsvektor der transformierten stochastischen Variablen und die Varianz-Co-Verteilungsmatrix sind

    \begin{eqnarray}
        E\left[X\right]&=&AE\left[Z\right]+\mu \nonumber \\
        &=&\mu 
         \\
        Cov\left(X\right)&=&E\left[\left(X-\mu\right)\left(X-\mu\right)^{\mathrm{T}}\right] \nonumber \\
        &=&E\left[AZZ^{\mathrm{T}}A^{\mathrm{T}}\right] \nonumber \\
        &=&AE\left[Z\right] E\left[Z^{\mathrm{T}}\right] A^{\mathrm{T}} \nonumber \\
        &=&AA^{\mathrm{T}}
    \end{eqnarray}

Dispersions-Co-Verteilungsmatrix,

    \begin{eqnarray}
        \Sigma = AA^{\mathrm{T}}
    \end{eqnarray}

Notiert als.

Anwenden dieser, der simultanen Dichtefunktion der mehrdimensionalen Normalverteilung

    \begin{eqnarray}
        f_X\left(x\right)
        &=&\frac{1}{\left(2\pi\right)^{n/2}\det\left(A\right)}\exp\left\{-\frac{1}{2}\left(x-\mu\right)^{\mathrm{T}}\left(AA^{\mathrm{T}}\right)^{-1}\left(x-\mu\right)\right\} \nonumber \\
        &=&\frac{1}{\left(2\pi\right)^{n/2}\det\left(\Sigma\right)^{1/2}}\exp\left\{-\frac{1}{2}\left(x-\mu\right)^{\mathrm{T}}\Sigma^{-1}\left(x-\mu\right)\right\}
    \end{eqnarray}

Bekommen.

1.3. Eigenschaften einer verteilten, gemeinsam verteilten Matrix

Bei der Erzeugung einer Zufallszahlenfolge aus der verteilten gemeinsam verteilten Matrix durch Cholesky-Zerlegung ist eine Randbedingung erforderlich, dass die verteilte gemeinsam verteilte Matrix ein positiver Wert ist.

Hier bestätigen wir im Allgemeinen die Eigenschaften der Dispersions-Co-Dispersionsmatrix und bestätigen die Möglichkeit der Cholesky-Zersetzung.

Hier bestätigen wir unsere Kenntnisse der linearen Algebra.

Halbpositiver Wert der Matrix

Das Folgende ist der gleiche Wert.

Positiver Wert der Matrix

Das Folgende ist der gleiche Wert.

Beweisen Sie die folgenden Behauptungen. ** Verteilte co-verteilte Matrix $ \ Sigma $ ist eine halbregelmäßige wertsymmetrische Matrix. ** ** **

Lassen Sie $ n \ times n $ verteilte, gemeinsam verteilte Matrix mit verteiltem $ \ sigma_i $ und gemeinsam verteiltem $ \ rho_ {i, j} $ als Komponenten $ \ Sigma $. Von $ \ rho_ {i, j} = \ rho_ {j, i} $ ist $ \ Sigma $ eine symmetrische Matrix. Sei $ a $ ein beliebiger $ n $ dimensionaler konstanter Vektor.

\begin{eqnarray} a^{\mathrm{T}}\Sigma a &=& a^{\mathrm{T}}E\left[\left(X-E\left[X\right]\right)\left(X-E\left[X\right]\right)^{\mathrm{T}}\right]a \nonumber \ &=&E\left[a^{\mathrm{T}}\left(X-E\left[X\right]\right)\left(X-E\left[X\right]\right)^{\mathrm{T}}a\right] \nonumber \ &=&E\left[\langle a,X-E\left[X\right]\rangle^2\right] \nonumber \ &\geq&0 \nonumber \end{eqnarray}


 > Daher ist $ \ Sigma $ ein halbfester Wert.

 In der Praxis wird erwartet, dass die Varianz-Co-Dispersionsmatrix in vielen Fällen positiv symmetrisch ist.
 Beachten Sie, dass die folgenden Zufallszahlen nicht generiert werden können, wenn die Werte nicht symmetrisch sind.

## 1.4 Cholesky-Zersetzung
 Das Zerlegen der symmetrischen Matrix $ A $ mit positivem Wert unter Verwendung der unteren Dreiecksmatrix $ L $ wird als Cholesky-Zerlegung bezeichnet.

```math
    \begin{eqnarray}
        A&=&LL^{\mathrm{T}}
        \\
        \nonumber \\
        A&=&
        \begin{pmatrix}
            a_{1,1}&a_{1,2}&\cdots&a_{1,n}\\
            a_{2,2}&\ddots&&\vdots\\
            \vdots&&\ddots&\vdots\\
            a_{n,1}&\cdots&\cdots&a_{n,n}
        \end{pmatrix} \nonumber \\
        L&=&
        \begin{pmatrix}
            l_{1,1}&0&\cdots&\cdots&0\\
            l_{2,1}&l_{2,2}&0&&\vdots\\
            \vdots&&\ddots&\ddots&\vdots\\
            \vdots&&&l_{n-1,n-1}&0\\
            l_{n,1}&\cdots&\cdots&l_{n,n-1}&l_{n,n}
        \end{pmatrix} \nonumber
    \end{eqnarray}

Die Konstruktionsmethode der Cholesky-Zersetzung ist wie folgt.

    \begin{eqnarray}
            l_{i,i}&=&\sqrt{a_{i,i}-\sum_{k=1}^{i-1}l_{i,k}^2}\ \ \ \ \ \ \left(\textrm{for}\ i=1,\cdots ,n\right) \\
            l_{j,i}&=&\left(a_{j,i}-\sum_{k=1}^{i-1}l_{j,k}\ l_{i,k}\right)/l_{i,i}\ \ \ \left(\textrm{for}\ j=i+1,\cdots ,n\right) 
    \end{eqnarray}

1.5 Erzeugung einer Zufallszahlenfolge gemäß multivariater Normalverteilung durch Cholesky-Zerlegung

Eine positive Wertebeschränkung wird für die verteilte kovariante Matrix $ \ Sigma $ festgelegt, deren Komponenten die Varianz $ \ sigma_i $ und die Kovarianz $ \ rho_ {i, j} $ sind.

Wenden Sie die Holesky-Zerlegung auf $ \ Sigma $ an, um $ A = L $ (untere Dreiecksmatrix) zu erhalten.

    \begin{eqnarray}
        x&=&Lz+\mu \\
        \nonumber \\
        L&=&
        \begin{pmatrix}
            l_{1,1}&0&\cdots&\cdots&0\\
            l_{2,1}&l_{2,2}&0&&\vdots\\
            \vdots&&\ddots&\ddots&\vdots\\
            \vdots&&&l_{n-1,n-1}&0\\
            l_{n,1}&\cdots&\cdots&l_{n,n-1}&l_{n,n}
        \end{pmatrix} \nonumber \\
        l_{i,i}&=&\sqrt{\sigma_{i}-\sum_{k=1}^{i-1}l_{i,k}^2}\ \ \ \ \ \ \left(\textrm{for}\ i=1,\cdots ,n\right) \nonumber \\
        l_{j,i}&=&\left(\rho_{j,i}-\sum_{k=1}^{i-1}l_{j,k}\ l_{i,k}\right)/l_{i,i}\ \ \ \left(\textrm{for}\ j=i+1,\cdots ,n\right) \nonumber
    \end{eqnarray}

2. Implementierung

multivariate_normal_distribution.py


import numpy as np

#durchschnittlich
mu = np.array([[2],
               [3]])

#Verteilte mitverteilte Matrix
cov = np.array([[1,0.2],
                 0.2,1]])

L = np.linalg.cholesky(cov)
dim = len(cov)

random_list=[]

for i in range(n):
    z = np.random.randn(dim,1)
    random_list.append((np.dot(L,z)+mu).reshape(1,-1).tolist()[0])

Ich habe damit rumgespielt. norm_dist1.png

norm_dist2.png

norm_dist3.png

norm_dist4.png

(Die Zahlen repräsentieren die Elemente der verteilten, gemeinsam verteilten Matrix.) plot_num.png

Recommended Posts

Die Cholesky-Zerlegung war der Grund für die Erzeugung von Zufallszahlen nach einer multivariaten Normalverteilung.
Ableitung der multivariaten t-Verteilung und Implementierung der Zufallszahlengenerierung durch Python
Zufallsgenerator, der der Normalverteilung N (0,1) folgt
Zeichnen und verstehen Sie die multivariate Normalverteilung in Python
Schritte zur Berechnung der Wahrscheinlichkeit einer Normalverteilung