12.3. Conditions requises pour décrire des matrices de covariance

De manière générale, une matrice de variances-covariances, généralement appelée matrice de covariance, doit être carrée, symétrique et semi-définie positive. Chacun de ses termes décrit la covariance des deux variables aléatoires correspondantes à sa position dans la matrice. La forme normalisée de la covariance est la corrélation linéaire. On peut écrire la relation suivante, entre une matrice de covariance \mathbf{M} et ses matrices correspondantes de corrélation \mathbf{C} (matrice pleine) et d’écart-type \mathbf{\Sigma} (matrice diagonale):

\mathbf{M} = \mathbf{\Sigma} * \mathbf{C} * \mathbf{\Sigma}

Diverses matrices de covariance sont nécessaires pour mettre en oeuvre des procédures d’assimilation de données ou d’optimisation. Les principales sont la matrice de covariance des erreurs d’ébauche, notée \mathbf{B}, et la matrice de covariance des erreurs d’observation, notée \mathbf{R}.

Dans l’interface graphique EFICAS d’ADAO, il y a 3 méthodes pratiques pour l’utilisateur pour fournir une matrice de covariance. La méthode est choisie à l’aide du mot-clé « INPUT_TYPE » de chaque matrice de covariance, comme montré dans la figure qui suit :

_images/eficas_covariance_matrix.png

Choisir la représentation d’une matrice de covariance

Dans l’interface textuelle (TUI) d’ADAO (voir la partie [DocR] Interface textuelle pour l’utilisateur (TUI/API)), les mêmes informations peuvent être données à l’aide de la commande adéquate « setBackgroundError », « setObservationError » ou « setEvolutionError » selon la grandeur physique à définir. Les autres arguments « Matrix », « ScalarSparseMatrix » et « DiagonalSparseMatrix » de la commande permettent de la définir comme décrit dans les sous-parties qui suivent. Ces informations peuvent aussi être fournies dans un script contenu en fichier externe (argument « Script »).

Première forme matricielle : utiliser la représentation « Matrix »

La première forme est le défaut, et c’est la plus générale. La matrice de covariance \mathbf{M} doit être entièrement spécifiée. Même si la matrice est symétrique par nature, la totalité de la matrice \mathbf{M} doit être fournie.

\mathbf{M} =  \begin{pmatrix}
m_{11} & m_{12} & \cdots   & m_{1n} \\
m_{21} & m_{22} & \cdots   & m_{2n} \\
\vdots & \vdots & \vdots   & \vdots \\
m_{n1} & \cdots & m_{nn-1} & m_{nn}
\end{pmatrix}

Cela peut être réalisé soit par un vecteur ou une matrice Numpy, soit par une liste de listes de valeurs (c’est-à-dire une liste de lignes). Par exemple, une matrice simple diagonale unitaire de covariances des erreurs d’ébauche \mathbf{B} peut être décrite dans un fichier de script Python par :

BackgroundError = [[1, 0 ... 0], [0, 1 ... 0] ... [0, 0 ... 1]]

ou:

BackgroundError = numpy.eye(...)

Seconde forme matricielle : utiliser la représentation « ScalarSparseMatrix »

Au contraire, la seconde forme matricielle est une méthode très simplifiée pour définir une matrice. La matrice de covariance \mathbf{M} est ici supposée être un multiple positif de la matrice identité. Cette matrice peut alors être spécifiée de manière unique par le multiplicateur m:

\mathbf{M} =  m \times \begin{pmatrix}
1       & 0      & \cdots   & 0      \\
0       & 1      & \cdots   & 0      \\
\vdots  & \vdots & \vdots   & \vdots \\
0       & \cdots & 0        & 1
\end{pmatrix}

Le multiplicateur m doit être un nombre réel ou entier positif (s’il est négatif, ce qui est impossible car une matrice de covariance est positive, il est convertit en nombre positif). Par exemple, une simple matrice diagonale unitaire de covariances des erreurs d’ébauche \mathbf{B} peut être décrite dans un fichier de script Python par :

BackgroundError = 1.

ou, mieux, par un argument « String » directement dans le cas graphique ou textuel ADAO.

Troisième forme matricielle : utiliser la représentation « DiagonalSparseMatrix »

La troisième forme est aussi une méthode simplifiée pour fournir la matrice, mais un peu plus puissante que la seconde. La matrice de covariance \mathbf{M} est ici toujours considérée comme diagonale, mais l’utilisateur doit spécifier toutes les valeurs positives situées sur la diagonale. La matrice peut alors être définie uniquement par un vecteur \mathbf{V} qui se retrouve ensuite sur la diagonale:

\mathbf{M} =  \begin{pmatrix}
v_{1}  & 0      & \cdots   & 0      \\
0      & v_{2}  & \cdots   & 0      \\
\vdots & \vdots & \vdots   & \vdots \\
0      & \cdots & 0        & v_{n}
\end{pmatrix}

Cela peut être réalisé soit par vecteur ou une matrice Numpy, soit par une liste, soit par une liste de listes de valeurs positives (dans tous les cas, si certaines valeurs sont négatives, elles sont converties en valeurs positives). Par exemple, un matrice simple diagonale unitaire des covariances des erreurs d’ébauche \mathbf{B} peut être décrite dans un fichier de script Python par :

BackgroundError = [1, 1 ... 1]

ou:

BackgroundError = numpy.ones(...)

De la même manière que précédemment, on peut aussi définir cette matrice par un « String » directement dans le cas graphique ou textuel ADAO.