[PYTHON] La décomposition de Cholesky était à l'origine de la génération de nombres aléatoires suivant une distribution normale multivariée.

La décomposition de Choresky d'une matrice co-distribuée diversifiée peut convertir un nombre aléatoire qui suit une distribution normale standard indépendante en un nombre aléatoire qui suit une distribution normale multivariée. Qu'Est-ce que c'est?

1. Contexte mathématique

--Conversion variable des variables stochastiques --Dérivation de la distribution normale multidimensionnelle --Caractéristiques de la matrice distribuée co-distribuée

Expliquer.

1.1. Transformation variable de la distribution de probabilité multidimensionnelle

Variable probabiliste

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

, Variable de probabilité

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

Convertir en. Cependant, $ X $ et $ Y $ sont respectivement

\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}

Supposons qu'il ait une fonction de densité de probabilité de.

Chaque $ Y $ comme un tir complet de $ 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}

Il est exprimé comme. Puisque chaque $ h_i $ est un seul coup, il y a une fonction inverse,

    \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}

Il est exprimé comme. Pour tout sous-ensemble $ D $ de l'espace réel dimensionnel $ n $, appliquez la transformation variable de l'intégration

    \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}

Est établi. Cependant, Jacobien,

    \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}

Il est écrit comme.

À partir de là, la formule de conversion de la fonction de densité de probabilité

    \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}

Obtenir.

1.2. Dérivation de la distribution normale multidimensionnelle

La distribution normale standard de dimension $ 1 $ s'écrit $ N \ left (0,1 \ right) $.

Distribution normale standard $ N $ indépendante les unes des autres

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

Déterminer. Ces fonctions de densité simultanées sont exprimées sous forme de produits car ce sont des distributions indépendantes.

    \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}

Sera.

ici,

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

Effectuez une conversion variable de. Cependant, $ Z et X $ sont des vecteurs variables de probabilité dimensionnelle $ n $, $ A $ est une matrice $ n \ times n $, et $ \ mu $ est un vecteur dimensionnel $ n $.

\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}

Jacobien pour la conversion variable

    \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}

Que,

\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}

Obtenir.

Par conséquent, la fonction de densité simultanée de $ X $ est

    \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}

Sera.

Le vecteur moyen des variables stochastiques transformées et la matrice de variance-co-distribution sont

    \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}

Matrice de co-distribution de dispersion,

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

Noté comme.

En appliquant cela, la fonction de densité simultanée de la distribution normale multidimensionnelle

    \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}

Obtenir.

1.3. Propriétés de la matrice distribuée co-distribuée

Lors de la génération d'une séquence de nombres aléatoires à partir de la matrice co-distribuée distribuée par décomposition de Cholesky, une condition de contrainte selon laquelle la matrice co-distribuée distribuée est une valeur positive est requise.

Ici, nous confirmons généralement les propriétés de la matrice de dispersion-co-distribution et confirmons la possibilité de décomposition de Cholesky.

Ici, nous confirmons nos connaissances en algèbre linéaire.

Valeur semi-positive de la matrice

Les éléments suivants ont la même valeur.

Valeur positive de la matrice

Les éléments suivants ont la même valeur.

Prouvez les affirmations suivantes. ** La matrice distribuée co-distribuée $ \ Sigma $ est une matrice symétrique de valeur semi-régulière. ** **

Soit $ n \ fois n $ matrice co-distribuée distribuée avec $ \ sigma_i $ distribuée et co-distribuée $ \ rho_ {i, j} $ comme composants. De $ \ rho_ {i, j} = \ rho_ {j, i} $, $ \ Sigma $ est une matrice symétrique. Soit $ a $ un vecteur constant dimensionnel $ n $ arbitraire.

\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}


 > Par conséquent, $ \ Sigma $ est une valeur semi-fixe.

 En pratique, la matrice de variance-co-dispersion devrait être positivement symétrique dans de nombreux cas,
 Notez que les nombres aléatoires suivants ne peuvent pas être générés si les valeurs ne sont pas symétriques.

## 1.4. Décomposition de Cholesky
 Donner une décomposition à la matrice symétrique de valeur positive $ A $ en utilisant la matrice triangulaire inférieure $ L $ est appelée décomposition de Cholesky.

```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}

La méthode de construction de la décomposition de Cholesky est la suivante.

    \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. Génération d'une séquence de nombres aléatoires selon la distribution normale multivariée par décomposition de Cholesky

Une contrainte de valeur positive est définie pour la matrice covariante distribuée $ \ Sigma $ dont les composantes sont la variance $ \ sigma_i $ et la covariance $ \ rho_ {i, j} $.

Appliquez la décomposition de Holesky à $ \ Sigma $ pour obtenir $ A = L $ (matrice triangulaire inférieure).

    \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. Mise en œuvre

multivariate_normal_distribution.py


import numpy as np

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

#Matrice co-distribuée distribuée
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])

J'ai joué avec. norm_dist1.png

norm_dist2.png

norm_dist3.png

norm_dist4.png

(Les nombres représentent les éléments de la matrice co-distribuée distribuée.) plot_num.png

Recommended Posts

La décomposition de Cholesky était à l'origine de la génération de nombres aléatoires suivant une distribution normale multivariée.
Dérivation de la distribution t multivariée et implémentation de la génération de nombres aléatoires par python
Générateur aléatoire qui suit la distribution normale N (0,1)
Tracer et comprendre la distribution normale multivariée en Python
Étapes pour calculer la probabilité d'une distribution normale