# SVD et analyse des correspondances

```{r}
set.seed(1123)
source('05_c_svd_ca_code.R')
```

## Profils lignes et profils colonnes

Soit une matrice de données $\mathbf{N} \in \mathbb{R}^{I \times J}$. Elle peut représenter $I$ individus décrits par $J$ variables. $n_{i,j}$ est alors la valeur, qui doit être positive pour que les analyses à venir soient justes, de la variable $j$ pour l'individu $i$. Elle peut aussi représenter le croisement d'une première variable catégorielle avec $I$ modalités et d'une seconde variable catégorielle avec $J$ modalités. Par exemple, si la première variable décrit la couleur des yeux et la seconde variable la couleur des cheveux d'un groupe de personnes, $n_{i,j}$ est alors le décompte du nombre de personnes ayant des yeux de la $i$-ème couleur et des cheveux de la $j$-ème couleur. Dans ce dernier cas, nous parlons de \emph{matrice de contingence}. Ce chapitre se concentre sur l'analyse des correspondances d'une matrice de contingence. Dans le chapitre suivant, nous montrerons comment analyser un jeu de données tabulaire multivarié (i.e. croisant individus et variables). Notons :
$$n \triangleq \sum_{i=1}^{I} \sum_{j=1}^{J} n_{i,j}$$

Pour fixer les idées, nous considérons un exemple développé par Jean-Paul Benzécri [@benzecri1985phosphates] dans un article qui introduit à l'analyse des correspondances à partir de données du commerce mondial des phosphates (voir Table \@ref(tab:mat-N)). A l'intersection de la ligne $i$ et de la colonne $j$ du tableau de données, nous lisons, en milliers de tonnes de $P_2O_5$, la quantité importée par le pays $i$ depuis le pays $j$ durant 8 années, de 1973 à 1980. Les labels des pays importateurs et exportateurs sont donnés dans les Tables \@ref(tab:lblI) et \@ref(tab:lblJ).

```{r, include=FALSE}
#N <- matrix( c(1,2,1,3,2,5,1,7,3,6,2,8),
#             nrow = 4, ncol = 3,
#             dimnames = list( c("i1", "i2", "i3", "i4"),
#                              c("v1", "v2", "v3")) )

# N <- matrix( c(4, 3, 6, 2, 2, 3, 0, 0, 2, 0,
#                2, 4, 4, 0, 5, 3, 0, 2, 1, 1,
#                4, 2, 5, 5, 0, 1, 0, 0, 1, 4,
#                4, 2, 2, 1, 1, 0, 0,11, 0, 1,
#                1, 1, 3, 3, 4, 0, 1, 1, 2, 6,
#                2, 1, 1, 3, 1, 3, 4, 3, 4, 0,
#                2, 0, 1, 3, 2, 0, 1,10, 0, 3,
#                4, 3, 3, 1, 1, 2, 5, 1, 2, 0,
#                1, 2, 0, 5, 3, 1, 3, 1, 0, 6),
#                nrow = 10, ncol = 9,
#                dimnames = list(
#                  c("red", "orange", "yellow", "green",
#                    "blue", "purple", "white", "black",
#                    "pink", "brown"),
#                  c("video", "jazz", "country", "rap",
#                    "pop", "opera", "low F", "high F",
#                    "middle F")) )
```

```{r lblI, echo=FALSE}
lblI <- matrix( c("iBL", "iCA", "iFR", "iDL", "iIT", "iJP", "iNL",
                  "Belgique", "Canada", "France", "Deutschland", "Italie", "Japon", "Nederland",
                 "iSP", "iUK", "iIN", "iBR", "iPL", "iRM", "iEE",
                 "Espagne", "United Kingdom", "Inde", "Brésil", "Pologne", "Roumanie", "Autres pays Europe Est"),
                nrow = 7 )
kbl(lblI, caption = "Pays importateurs de phosphates")
```

```{r lblJ, echo=FALSE}
lblJ <- matrix( c("eBL", "eUS", "eJR", "eMR", "Belgique", "USA", "Jordanie", "Maroc",
                  "eSN", "eTG", "eTN", "eCC", "Sénégal", "Togo", "Tunisie", "URSS (CCCP)"),
                nrow = 4 )
kbl(lblJ, caption = "Pays exportateurs de phosphates")
```

```{r mat-N}
N <- matrix( c(0, 2, 1311, 1322, 42, 0, 299, 20, 122, 0, 29, 0, 0, 2,
               1305, 8335, 2691, 3808, 1883, 4426, 1484, 339, 645, 2559, 4918,
               1284, 768, 201,
               0, 0, 70, 0, 194, 522, 0, 0, 2, 996, 0, 271, 483, 136,
               3573, 0, 4891, 1445, 2881, 1540, 1853, 5073, 2852, 1149, 1398,
               3311, 1541, 1398,
               25, 0, 1484, 261, 67, 239, 249, 2, 971, 218, 15, 33, 6, 0,
               500, 8, 2526, 200, 195, 93, 1584, 85, 36, 0, 0, 540, 138, 0,
               110, 0, 1697, 288, 493, 0, 59, 11, 197, 134, 241, 548, 22, 333,
               293, 0, 4, 1442, 0, 0, 84, 0, 0, 0, 0, 1996, 1206, 5533),
             nrow = 14, ncol = 8,
             dimnames = list(
               c("iBL", "iCA", "iFR", "iDL", "iIT", "iJP", "iNL", "iSP", "iUK",
                 "iIN", "iBR", "iPL", "iRM", "iEE"),
               c("eBL", "eUS", "eJR", "eMR", "eSN", "eTG", "eTN", "eCC")))
I <- dim(N)[1]
J <- dim(N)[2]
n <- sum(sum(N))
kbl(N, caption = "Commerce des phosphates entre 1973 et 1980", booktabs = TRUE) %>%
  kable_styling(latex_options = "striped")
```

Sur cet exemple, la somme totale $n$ est égale à `r format(n, scientific=FALSE)`.

Soit une matrice, dite de probabilités, $\mathbf{P} \triangleq \frac{1}{n} \mathbf{N}$ (voir Table \@ref(tab:mat-p)).

```{r mat-p}
P <- (1/n) * N
kbl( round_preserve_sum(1000 * P),
     caption = "Matrice de probabilités $P$ (en millièmes)", booktabs = TRUE) %>%
  kable_styling(latex_options = "striped")
```

Notons $\mathbf{r} \triangleq \mathbf{P} \mathbf{1}$ les sommes des éléments de chaque ligne de $\mathbf{P}$ (voir Table \@ref(tab:vec-r)) et $\mathbf{c} \triangleq \mathbf{P}^T \mathbf{1}$ les sommes des éléments de chaque colonne de $\mathbf{P}$ (voir Table \@ref(tab:vec-c)).

```{r vec-r}
r <- rowSums(P)
kbl( t(as.matrix( round_preserve_sum(1000 * r) )),
     caption = "Poids des lignes de $P$", booktabs = TRUE)
```

```{r vec-c}
c <- colSums(P)
kbl( t(as.matrix( round_preserve_sum(1000 * c) )),
     caption = "Poids des colonnes de $P$", booktabs = TRUE)
```

Notons $\mathbf{D_r} \triangleq diag(\mathbf{r})$ une matrice avec sur sa diagonale les éléments de $\mathbf{r}$ et $\mathbf{D_c} \triangleq diag(\mathbf{c})$ une matrice avec sur sa diagonale les éléments de $\mathbf{c}$.

```{r}
Dr <- diag(r)
Dc <- diag(c)
```

Notons $\mathbf{R} \triangleq \mathbf{D_r^{-1}} \mathbf{P}$ la matrice des \emph{profils lignes} (voir Table \@ref(tab:mat-r)) et $\mathbf{C} \triangleq \mathbf{D_c^{-1}} \mathbf{P}^T$ la matrice des \emph{profils colonnes} (voir Table \@ref(tab:mat-c)).

```{r mat-r}
# Pour construire R ou C, il n'est pas nécessaire de construire Dr ou Dc.
# L'utilisation de la fonction sweep est plus efficace.
R <- sweep(P, MARGIN = 1, 1/r, '*')
kbl( round_preserve_sum(1000 * R),
     caption = "$R$, matrice des profils lignes", booktabs = TRUE ) %>%
  kable_styling(latex_options = "striped")
```

```{r mat-c}
C <- sweep(t(P), MARGIN = 1, 1/c, '*')
kbl( round_preserve_sum(1000 * C),
     caption = "$C$, matrice des profils colonnes", booktabs = TRUE ) %>%
  kable_styling(latex_options = "striped")
```

Notons $\mathbf{r^i}$ la $i$-ème ligne de $\mathbf{R}$, c'est-à-dire le profil du $i$-ème individu si $\mathbf{N}$ est une matrice qui croise individus et variables. Notons $\mathbf{c^j}$ la $j$-ème ligne de $\mathbf{C}$, c'est-à-dire le profil de la $j$-ème variable si $\mathbf{N}$ est une matrice qui croise individus et variables.

$\mathbf{r^i}$ (resp. $\mathbf{c^j}$) est un vecteur dont la somme des éléments est égale à $1$ : $\sum_{j=1}^{J} r_j^i = 1$ (resp. $\sum_{i=1}^{I} c_i^j = 1$). $r_j^i$ représente la part relative de la variable $j$ dans la description de l'individu $i$. De même, $c_i^j$ représente la part relative de l'individu $i$ dans la description de la variable $j$.

## Principe d'équivalence distributionnelle

Nous considérons le nuage des profils lignes $\left\{ \mathbf{r^i} \right\}_{i=1}^I$ avec leurs masses associées $\left\{ r_i \right\}_{i=1}^I$. Nous plongeons ce nuage dans un espace avec une métrique euclidienne pondérée, dite métrique du $\chi^2$ :
\[d^2(\mathbf{r^{i_1}}, \mathbf{r^{i_2}}) = \sum_{j=1}^J \frac{\left( r^{i_1}_j - r^{i_2}_j \right)^2}{c_j}\]

Nous considèrerions de façon symétrique le nuage des profils colonnes.

Montrons que ce choix de métrique assure le principe dit d'équivalence distributionnelle : si deux profils lignes sont identiques, leur remplacement par un unique profil ligne avec une masse égale à la somme des masses des deux profils initiaux n'impacte ni la géométrie des profils lignes ni celle des profils colonnes. C'est un principe essentiel sur lequel repose le bien fondé d'un regroupement des individus aux profils similaires (ou des variables aux profils similaires).

Considérons deux profils lignes pondérés $(r_{i_1}, \mathbf{r^{i_1}})$ et $(r_{i_2}, \mathbf{r^{i_2}})$ qui ont même profils : $\mathbf{r^{i_1}} = \mathbf{r^{i_2}}$. Considérons également un profil pondéré $(r_{i_0}, \mathbf{r^{i_0}})$ tel que $\mathbf{r^{i_1}} = \mathbf{r^{i_2}} = \mathbf{r^{i_0}}$ et $r_{i_0} = r_{i_1} + r_{i_2}$.

En remplaçant $(r_{i_1}, \mathbf{r^{i_1}})$ et $(r_{i_2}, \mathbf{r^{i_2}})$ par $(r_{i_0}, \mathbf{r^{i_0}})$, les valeurs $c_j$ sont inchangées et donc les distances $d^2(\mathbf{r^{i}}, \mathbf{r^{i'}})$ sont inchangées. Nous allons maintenant prouver que les distances entre profils colonnes sont inchangées.
$$
d^2(\mathbf{c^{j_1}}, \mathbf{c^{j_2}}) = \sum_{i=1}^{I} \frac{\left(c^{j_1}_{i} - c^{j_2}_{i}\right)^2}{r_i} = \dots + \frac{1}{r_{i_1}} \left(\frac{P_{i_1,j_1}}{c_{j_1}} - \frac{P_{i_1,j_2}}{c_{j_2}}\right)^2 + \frac{1}{r_{i_2}} \left(\frac{P_{i_2,j_1}}{c_{j_1}} - \frac{P_{i_2,j_2}}{c_{j_2}}\right)^2 + \dots
$$

Nous nous concentrons d'abord sur le terme concernant la ligne $i_1$ pour trouver une ré-écriture en fonction de $i_0$.
\begin{align*}
 & \frac{1}{r_{i_1}} \left(\frac{P_{i_1,j_1}}{c_{j_1}} - \frac{P_{i_1,j_2}}{c_{j_2}}\right)^2 \\
= \{& \text{Un peu d'arithmétique pour, une étape après, faire apparaître $\mathbf{r^{i_1}}$...} \} \\
 & r_{i_1} \left(\frac{P_{i_1,j_1}}{r_{i_1} c_{j_1}} - \frac{P_{i_1,j_2}}{r_{i_1} c_{j_2}}\right)^2 \\
= \{& \text{Définition de $\mathbf{r^{i_1}}$} \} \\
 & r_{i_1} \left(\frac{r^{i_1}_{j_1}}{c_{j_1}} - \frac{r^{i_1}_{j_1}}{c_{j_2}}\right)^2 \\
= \{& \mathbf{r^{i_1}} = \mathbf{r^{i_0}} \} \\
 & r_{i_1} \left(\frac{r^{i_0}_{j_1}}{c_{j_1}} - \frac{r^{i_0}_{j_1}}{c_{j_2}}\right)^2 \\
= \{& \text{Définition de $\mathbf{r^{i_0}}$} \} \\
 & r_{i_1} \left(\frac{P_{i_0,j_1}}{r_{i_0} c_{j_1}} - \frac{P_{i_0,j_2}}{r_{i_0} c_{j_2}}\right)^2 \\
= \{& \text{Arithmétique} \} \\
 & \frac{r_{i_1}}{r_{i_0}^2} \left(\frac{P_{i_0,j_1}}{c_{j_1}} - \frac{P_{i_0,j_2}}{c_{j_2}}\right)^2 \\
\end{align*}

Ainsi, nous pouvons montrer que les deux termes de $d^2(\mathbf{c^{j_1}}, \mathbf{c^{j_2}})$ qui concernent les lignes $i_1$ et $i_2$ peuvent être remplacés par le terme pour la nouvelle ligne $i_0$.
\begin{align*}
 & \frac{1}{r_{i_1}} \left(\frac{P_{i_1,j_1}}{c_{j_1}} - \frac{P_{i_1,j_2}}{c_{j_2}}\right)^2 + \frac{1}{r_{i_2}} \left(\frac{P_{i_2,j_1}}{c_{j_1}} - \frac{P_{i_2,j_2}}{c_{j_2}}\right)^2 \\
= \{& \text{Voir dérivation ci-dessus.} \} \\
 & \frac{r_{i_1}}{r_{i_0}^2} \left(\frac{P_{i_0,j_1}}{c_{j_1}} - \frac{P_{i_0,j_2}}{c_{j_2}}\right)^2 + \frac{r_{i_2}}{r_{i_0}^2} \left(\frac{P_{i_0,j_1}}{c_{j_1}} - \frac{P_{i_0,j_2}}{c_{j_2}}\right)^2 \\
= \{& r_{i_1} + r_{i_2} = r_{i_0} \; \text{ ; définitions de $\mathbf{c^{j_1}}$ et $\mathbf{c^{j_2}}$ } \} \\
 & \frac{\left(c^{j_1}_{i_0} - c^{j_2}_{i_0}\right)^2}{r_{i_0}}
\end{align*}

## Centre de masse

Calculons la j-ème coordonnée du centre de masse des profils lignes.
\begin{align*}
 & \frac{\sum_i r_i (P_{i,j} / r_i)}{\sum_i r_i} \\
= \{& \sum_i r_i = 1 \} \\
 & \sum_i P_{i,j} \\
= \phantom{\{}& \\
 & c_j \\
\end{align*}
Donc, $\mathbf{c}$ est le centre de masse du nuage des profils lignes $\left\{ \mathbf{r^i} \right\}_{i=1}^I$ avec leurs masses associées $\left\{ r_i \right\}_{i=1}^I$. Par symétrie, $\mathbf{r}$ est le centre de masse du nuage des profils colonnes $\left\{ \mathbf{c^j} \right\}_{j=1}^J$ avec leurs masses associées $\left\{ c_j \right\}_{j=1}^J$.

## Inertie des écarts à l'indépendance

Dans l'espace $\mathbb{R}^J$ muni de la métrique $\mathbf{D_c^{-1}}$, calculons l'inertie du nuage des profils lignes par rapport à leur centre de masse :
$$
\sum_i r_i \sum_j \frac{\left(r^i_j - c_j\right)^2}{c_j} = \sum_i r_i \sum_j \frac{\left(\frac{P_{i,j}}{r_i} - c_j\right)^2}{c_j} = \sum_i \sum_j \frac{\left(P_{i,j} - r_ic_j\right)^2}{r_i c_j}
$$

$P_{i,j} - r_ic_j$ est le terme général de la matrice $\mathbf{P} - \mathbf{r}\mathbf{c}^T$ qui représente les écarts au modèle d'indépendance. En effet, $\mathbf{r}\mathbf{c}^T$ est une matrice, dite de probabilité (car la somme de ses éléments vaut 1), de rang 1, dont les profils lignes sont tous égaux à $\mathbf{c}$ et dont les profils colonnes sont tous égaux à $\mathbf{r}$.

Ainsi, l'inertie du nuage des profils lignes par rapport à son centre de masse est aussi égale à l'inertie des écarts à l'indépendance quand l'espace des colonnes dans $\mathbb{R}^J$ est associé à la métrique $\mathbf{D_c^{-1}}$ et l'espace des lignes dans $\mathbb{R}^I$ est associé à la métrique $\mathbf{D_r^{-1}}$ qui correspond aux masses associées à chaque ligne.

## GSVD des profils lignes et des profils colonnes

Nous souhaitons représenter les profils lignes dans un repère dont les axes orthonormaux sont orientés selon les direction d'inertie maximale. Nous nommerons ces axes les \emph{axes principaux} ou encore les \emph{axes factoriels}. Nous devons ainsi calculer le SVD :
$$\mathbf{P} - \mathbf{r}\mathbf{c}^T = \mathbf{A}\boldsymbol{\Delta}\mathbf{B}^T \; \text{avec } \; \mathbf{A}^T\mathbf{D_r^{-1}}\mathbf{A} = \mathbf{B}^T\mathbf{D_c^{-1}}\mathbf{B} = \mathbf{I}$$

C'est une forme généralisée de la décomposition en valeurs singulières (GSVD) puisque $\mathbf{A}$ et $\mathbf{B}$ sont des matrices orthogonales dans des espaces euclidiens associés aux métriques respectives $\mathbf{D_r^{-1}}$ (pour prendre en compte les masses associées à chaque profil ligne) et $\mathbf{D_c^{-1}}$ (pour prendre en compte les échelles différentes de chaque colonne).

Dans l'espace $\mathbb{R}^I$ muni de la métrique $\mathbf{D_r^{-1}}$, calculons l'inertie du nuage des profils colonnes par rapport à leur centre de masse :
$$
\sum_j c_i \sum_i \frac{\left(c^j_i - r_i\right)^2}{r_i} = \sum_j c_j \sum_i \frac{\left(\frac{P_{i,j}}{c_j} - r_i\right)^2}{r_i} = \sum_i \sum_j \frac{\left(P_{i,j} - r_ic_j\right)^2}{r_i c_j}
$$

Nous retrouvons la même inertie des écarts à l'indépendance que celle découverte en considérant l'inertie du nuage des profils lignes. Nous pouvons donc représenter les profils lignes et les profils colonnes dans un même espace obtenu par le GSVD de $\mathbf{P} - \mathbf{r}\mathbf{c}^T$.

## Calcul du GSVD

Par ailleurs, remarquons que l'inertie des écarts à l'indépendance, avec l'espace des colonnes $\mathbb{R}^J$ associé à la métrique $\mathbf{D_c^{-1}}$ et l'espace des lignes $\mathbb{R}^I$ associé à la métrique $\mathbf{D_r^{-1}}$, est aussi l'inertie des écarts à l'indépendance standardisés, avec les espaces des colonnes et des lignes associés à la métrique identité :
$$\sum_i \sum_j \frac{\left(P_{i,j} - r_ic_j\right)^2}{r_i c_j} \; = \; \sum_i \sum_j \left(\frac{P_{i,j} - r_ic_j}{\sqrt{r_i}\sqrt{c_j}}\right)^2$$

Donc, nous pouvons découvrir un sous-espace de projection optimal (au sens de la préservation de l'inertie), pour les profils lignes et pour les profils colonnes, en calculant le SVD (classique) :
$$\mathbf{D_r^{-1/2}} \left(\mathbf{P} - \mathbf{r}\mathbf{c}^T\right) \mathbf{D_c^{-1/2}} \; = \; \tilde{\mathbf{A}} \tilde{\boldsymbol{\Delta}} \tilde{\mathbf{B}}^T$$

Détaillons cette égalité entre, d'une part le GSVD de $\mathbf{Z} = \mathbf{P} - \mathbf{r}\mathbf{c}^T = \mathbf{A}\boldsymbol{\Delta}\mathbf{B}^T$ sous la contrainte $\mathbf{A}^T\mathbf{D_r^{-1}}\mathbf{A} = \mathbf{B}^T\mathbf{D_c^{-1}}\mathbf{B} = \mathbf{I}$ et, d'autre part le SVD de $\tilde{\mathbf{Z}} = \mathbf{D_r^{-1/2}} \left(\mathbf{P} - \mathbf{r}\mathbf{c}^T\right) \mathbf{D_c^{-1/2}} \; = \; \tilde{\mathbf{A}} \tilde{\boldsymbol{\Delta}} \tilde{\mathbf{B}}^T$ sous la contrainte $\tilde{\mathbf{A}}^T \tilde{\mathbf{A}} = \tilde{\mathbf{B}}^T \tilde{\mathbf{B}} = \mathbf{I}$.
\begin{align*}
 & \tilde{\mathbf{Z}} = \mathbf{D_r^{-1/2}} \mathbf{Z} \mathbf{D_c^{-1/2}} \\
= \{& \text{ $\mathbf{D_r}$ et $\mathbf{D_c}$ sont diagonales donc inversibles } \} \\
 & \mathbf{Z} = \mathbf{D_r^{1/2}} \tilde{\mathbf{Z}} \mathbf{D_c^{1/2}} \\
= \{& \text{Définition du SVD de $\tilde{\mathbf{Z}}$} \} \\
 & \mathbf{Z} = \mathbf{D_r^{1/2}} \tilde{\mathbf{A}} \tilde{\boldsymbol{\Delta}} \tilde{\mathbf{B}}^T \mathbf{D_c^{1/2}} \\
= \{& \text{$\mathbf{A} \triangleq \mathbf{D_r^{1/2}} \tilde{\mathbf{A}}$ ; $\boldsymbol{\Delta} \triangleq \tilde{\boldsymbol{\Delta}}$ ; $\mathbf{B} \triangleq \mathbf{D_c^{1/2}} \tilde{\mathbf{B}}$} \} \\
 & \mathbf{Z} = \mathbf{A}\boldsymbol{\Delta}\mathbf{B}^T \\
\end{align*}

Vérifions qu'avec ces définitions de $\mathbf{A}$ et $\mathbf{B}$ en fonction de $\tilde{\mathbf{A}}$ et $\tilde{\mathbf{B}}$, la matrice $\mathbf{A}$ est bien $\mathbf{D_r^{-1}}$-orthogonale et la matrice $\mathbf{B}$ est bien $\mathbf{D_c^{-1}}$-orthogonale.
\begin{align*}
 & \mathbf{A}^T\mathbf{D_r^{-1}}\mathbf{A} \\
= \{& \mathbf{A} \triangleq \mathbf{D_r^{1/2}} \tilde{\mathbf{A}} \} \\
 & \tilde{\mathbf{A}}^T \mathbf{D_r^{1/2}} \mathbf{D_r^{-1}} \mathbf{D_r^{1/2}} \tilde{\mathbf{A}} \\
= \{& \} \\
 & \tilde{\mathbf{A}}^T \tilde{\mathbf{A}} \\
= \{& \text{Définition du SVD de $\tilde{\mathbf{Z}}$} \} \\
 & \mathbf{I} \\
\end{align*}

De même pour montrer $\mathbf{B}^T\mathbf{D_c^{-1}}\mathbf{B} = \mathbf{I}$.

## Décomposition de l'inertie des profils

Nous avons montré plus haut que pour représenter les profils lignes dans un repère dont les axes orthonormaux sont orientés selon les direction d'inertie maximale (nous appelons ces axes les \emph{axes factoriels}), il faut calculer le SVD :
$$\mathbf{P} - \mathbf{r}\mathbf{c}^T = \mathbf{A}\boldsymbol{\Delta}\mathbf{B}^T \; \text{avec } \; \mathbf{A}^T\mathbf{D_r^{-1}}\mathbf{A} = \mathbf{B}^T\mathbf{D_c^{-1}}\mathbf{B} = \mathbf{I}$$

Montrons que cette décomposition correspond bien à celle des profils lignes centrés (rappel : $\mathbf{c}$ est le centre de masse des profils lignes).
\begin{align*}
 & \mathbf{D_r^{-1}}\mathbf{P} - \mathbf{1}\mathbf{c}^T = \boldsymbol\alpha \boldsymbol\Delta \boldsymbol\beta^T \; \text{avec} \; \boldsymbol\alpha^T\mathbf{D_r^{-1}}\boldsymbol\alpha = \boldsymbol\beta^T\mathbf{D_c^{-1}}\boldsymbol\beta = \mathbf{I} \\
= \{& \mathbf{D_r} \times \} \\
 & \mathbf{P} - \mathbf{r}\mathbf{c}^T = \left(\mathbf{D_r}\boldsymbol\alpha\right) \boldsymbol\Delta \boldsymbol\beta^T \; \text{avec} \; \left(\mathbf{D_r}\boldsymbol\alpha\right)^T\mathbf{D_r^{-1}}\left(\mathbf{D_r}\boldsymbol\alpha\right) = \boldsymbol\beta^T\mathbf{D_c^{-1}}\boldsymbol\beta = \mathbf{I} \\
\end{align*}

## Axes factoriels et facteurs

Ainsi, les colonnes de $\mathbf{B}$ sont les \emph{axes factoriels}, $\mathbf{D_c^{-1}}$-orthogonaux, pour le nuage centré des profils lignes. Nous montrerions de même que les colonnes de $\mathbf{A}$ sont les axes factoriels, $\mathbf{D_r^{-1}}$-orthogonaux, pour le nuage centré des profils colonnes.

Notons $\mathbf{F}$ (respectivement, $\mathbf{G}$) une matrice dont les lignes sont les facteurs (i.e., les coordonnées selon les axes factoriels) des profils lignes centrés (respectivement, des profils colonnes centrés).
\begin{align*}
 & \mathbf{F} \\
= \{& \text{Par définition de $\mathbf{F}$} \} \\
 & \left(\mathbf{D_r^{-1}}\mathbf{P} - \mathbf{1}\mathbf{c}^T\right) \mathbf{D_c^{-1}} \mathbf{B} \\
= \{& \mathbf{1} = \mathbf{D_r^{-1}} \mathbf{r} \} \\
 & \mathbf{D_r^{-1}} \left(\mathbf{P} - \mathbf{r}\mathbf{c}^T\right) \mathbf{D_c^{-1}} \mathbf{B} \\
= \{& \mathbf{P} - \mathbf{r}\mathbf{c}^T = \mathbf{A}\boldsymbol\Delta\mathbf{B}^T \text{ et les colonnes de $\mathbf{B}$ sont $\mathbf{D_c^{-1}}$-orthogonales}\} \\
 & \mathbf{D_r^{-1}}\mathbf{A}\boldsymbol\Delta
\end{align*}
\begin{align*}
 & \mathbf{G} \\
= \{& \text{Par définition de $\mathbf{G}$} \} \\
 & \left(\mathbf{D_c^{-1}}\mathbf{P}^T - \mathbf{1}\mathbf{r}^T\right) \mathbf{D_r^{-1}} \mathbf{A} \\
= \{& \mathbf{1} = \mathbf{D_c^{-1}} \mathbf{c} \} \\
 & \mathbf{D_c^{-1}} \left(\mathbf{P}^T - \mathbf{c}\mathbf{r}^T\right) \mathbf{D_r^{-1}} \mathbf{A} \\
= \{& \text{Algèbre linéaire, propriétés de la transposée et du produit} \} \\
 & \mathbf{D_c^{-1}} \left(\mathbf{P} - \mathbf{r}\mathbf{c}^T\right)^T \mathbf{D_r^{-1}} \mathbf{A} \\
= \{& \mathbf{P} - \mathbf{r}\mathbf{c}^T = \mathbf{A}\boldsymbol\Delta\mathbf{B}^T \text{ et les colonnes de $\mathbf{A}$ sont $\mathbf{D_r^{-1}}$-orthogonales}\} \\
 & \mathbf{D_c^{-1}} \mathbf{B}\boldsymbol\Delta \\
\end{align*}

## Formules de transition {#c-05-c-transition-formula}
\begin{align*}
 & \mathbf{P} - \mathbf{r}\mathbf{c}^T = \mathbf{A}\boldsymbol\Delta\mathbf{B}^T \\
= \{& \} \\
 & \mathbf{P} = \mathbf{A}\boldsymbol\Delta\mathbf{B}^T + \mathbf{r}\mathbf{c}^T \\
= \{& \} \\
 & \mathbf{P}^T = \mathbf{B}\boldsymbol\Delta\mathbf{A}^T + \mathbf{c}\mathbf{r}^T \\
\Rightarrow \{& \text{Multiplication à droite par $\mathbf{F}$ ; $\mathbf{F} = \mathbf{D_r^{-1}}\mathbf{A}\boldsymbol\Delta$ ; $\mathbf{A}^T\mathbf{D_r^{-1}}\mathbf{A} = \mathbf{I}$ ;} \\
\phantom{\Rightarrow}\phantom{\{}& \text{Les lignes de $\mathbf{F}$ sont les facteurs des profils lignes \emph{centrés}. Donc $\mathbf{r}^T \mathbf{F} = \mathbf{0}$.} \} \\
 & \mathbf{P}^T\mathbf{F} = \mathbf{B}\boldsymbol\Delta^2 \\
= \{& \} \\
 & \mathbf{P}^T\mathbf{F}\boldsymbol\Delta^{-1} = \mathbf{B}\boldsymbol\Delta \\
\end{align*}

Nous montrerions de même :
\begin{align*}
& \mathbf{P}\mathbf{G} = \mathbf{A}\boldsymbol\Delta^2 \\
= \{& \} \\
 & \mathbf{P}\mathbf{F}\boldsymbol\Delta^{-1} = \mathbf{A}\boldsymbol\Delta \\
\end{align*}

Nous découvrons ainsi des formules de transition entre les facteurs des profils lignes et ceux des profils colonnes.
\begin{align*}
 & \mathbf{G} \\
= \{& \text{Voir précédente dérivation} \} \\
 & \mathbf{D_c^{-1}} \mathbf{B}\boldsymbol\Delta \\
= \{& \text{Nous avons montré ci-dessus : } \mathbf{B}\boldsymbol\Delta = \mathbf{P}^T\mathbf{F}\boldsymbol\Delta^{-1} \} \\
 & \mathbf{D_c^{-1}}\mathbf{P}^T\mathbf{F}\boldsymbol\Delta^{-1} \\
= \{& \text{Déf des coordonnées des profils colonnes dans l'espace euclidien original,} \\
\phantom{=}\phantom{\{}& \text{muni de la métrique $\mathbf{D_r^{-1}}$ : } \mathbf{C} \triangleq \mathbf{D_c^{-1}} \mathbf{P}^T \} \\
 & \mathbf{C}\mathbf{F}\boldsymbol\Delta^{-1}
\end{align*}
\begin{align*}
 & \mathbf{F} \\
= \{& \text{Voir précédente dérivation} \} \\
 & \mathbf{D_r^{-1}} \mathbf{A}\boldsymbol\Delta \\
= \{& \text{Nous avons montré ci-dessus : } \mathbf{B}\boldsymbol\Delta = \mathbf{P}^T\mathbf{F}\boldsymbol\Delta^{-1} \} \\
 & \mathbf{D_r^{-1}}\mathbf{P}\mathbf{G}\boldsymbol\Delta^{-1} \\
= \{& \text{Déf des coordonnées des profils lignes dans l'espace euclidien original,} \\
\phantom{=}\phantom{\{}& \text{muni de la métrique $\mathbf{D_c^{-1}}$ : } \mathbf{R} \triangleq \mathbf{D_r^{-1}} \mathbf{P} \} \\
 & \mathbf{R}\mathbf{G}\boldsymbol\Delta^{-1}
\end{align*}

## Inertie des profils selon les axes factoriels

Vérifions maintenant que la décomposition de l'inertie du nuage des profils lignes (ou du nuage des profils colonnes) selon les axes factoriels se représente par une matrice diagonale.
$$\mathbf{F}^T\mathbf{D_r}\mathbf{F} = \left(\mathbf{D_r^{-1}} \mathbf{A}\boldsymbol\Delta\right)^T\mathbf{D_r}\mathbf{D_r^{-1}} \mathbf{A}\boldsymbol\Delta = \boldsymbol\Delta^2$$
Ainsi, l'inertie du nuage centré des profils lignes est : $\sum_i r_i \sum_k f_{ik}^2 = \sum_k \delta_k^2$ (où $\delta_k \triangleq \boldsymbol\Delta_{k,k}$).
Les lignes de $\boldsymbol\Phi \triangleq \mathbf{F}\boldsymbol\Delta^{-1}$ sont appelées les coordonnées standard des profils lignes. Selon ces dernières, les profils lignes centrés ont une inertie unité selon les axes factoriels ($\boldsymbol\Phi^T\mathbf{D_r}\boldsymbol\Phi = \mathbf{I}$).
$$\mathbf{G}^T\mathbf{D_c}\mathbf{G} = \left(\mathbf{D_c^{-1}} \mathbf{B}\boldsymbol\Delta\right)^T\mathbf{D_c}\mathbf{D_c^{-1}} \mathbf{B}\boldsymbol\Delta = \boldsymbol\Delta^2$$
Ainsi, l'inertie du nuage centré des profils colonnes est : $\sum_j c_j \sum_k g_{jk}^2 = \sum_k \delta_k^2$.
Les lignes de $\boldsymbol\Gamma \triangleq \mathbf{G}\boldsymbol\Delta^{-1}$ sont appelées les coordonnées standard des profils colonnes. Selon ces dernières, les profils colonnes centrés ont une inertie unité selon les axes factoriels ($\boldsymbol\Gamma^T\mathbf{D_c}\boldsymbol\Gamma = \mathbf{I}$).

## Relations barycentriques

En observant l'égalité $\mathbf{G} = \mathbf{C}\mathbf{F}\boldsymbol\Delta^{-1}$, nous remarquons que la $j$-ème ligne de $\mathbf{G}$ (i.e., les facteurs ou coordonnées principales du $j$-ème profil colonne) est une combinaison linéaire (viz., un barycentre) des lignes de $\mathbf{F}$ (i.e., c'est à dire de l'ensemble des profils lignes exprimés dans leurs coordonnées principales) suivi par un changement d'échelle $1/\delta_k$ selon chacun des $K$ facteurs (d'où l'expression parfois employée de \emph{quasi-barycentre}). Nous ferions une observation symétrique à partir de l'égalité $\mathbf{F} = \mathbf{R}\mathbf{G}\boldsymbol\Delta^{-1}$.

Comme $\mathbf{G} = \mathbf{C}\boldsymbol\Phi$, et que la somme des éléments d'une ligne de $\mathbf{C}$ (viz. un profil colonne), est égale à 1, un profil colonne exprimé dans ses coordonnées principales (viz. une ligne de $\mathbf{G}$) est un barycentre des profils lignes exprimés dans leurs coordonnées standard (viz. les lignes de $\boldsymbol\Phi$). Symétriquement, comme $\mathbf{F} = \mathbf{R}\boldsymbol\Gamma$, un profil ligne exprimé dans ses coordonnées principales est un barycentre des profils colonnes exprimés dans leurs coordonnées standard.

## Cartes pour représenter les profils

Récapitulons les résultats des dérivations ci-dessus :

\begin{itemize}
\item $\mathbf{N} \in \mathbb{R}^{I \times J}$ ; $n \triangleq \sum_{i=1}^{I} \sum_{j=1}^{J} n_{i,j}$ ; $\mathbf{P} \triangleq \frac{1}{n} \mathbf{N}$
\item $\mathbf{r} \triangleq \mathbf{P} \mathbf{1}$ ; $\mathbf{c} \triangleq \mathbf{P}^T \mathbf{1}$ ; $\mathbf{D_r} \triangleq diag(\mathbf{r})$ ; $\mathbf{D_c} \triangleq diag(\mathbf{c})$
\item $\mathbf{R} \triangleq \mathbf{D_r^{-1}} \mathbf{P}$ ; $\mathbf{C} \triangleq \mathbf{D_c^{-1}} \mathbf{P}^T$
\item $\mathbf{D_r^{-1/2}} \left(\mathbf{P} - \mathbf{r}\mathbf{c}^T\right) \mathbf{D_c^{-1/2}} \; = \; \tilde{\mathbf{A}} \boldsymbol{\Delta} \tilde{\mathbf{B}}^T$, avec $\tilde{\mathbf{A}}^T \tilde{\mathbf{A}} = \tilde{\mathbf{B}}^T \tilde{\mathbf{B}} = \mathbf{I}$
\item $\mathbf{F} = \mathbf{D_r^{-1/2}}\tilde{\mathbf{A}}\boldsymbol\Delta = \boldsymbol\Phi\boldsymbol\Delta$ ; $\mathbf{G} = \mathbf{D_c^{-1/2}} \tilde{\mathbf{B}}\boldsymbol\Delta = \boldsymbol\Gamma\boldsymbol\Delta$
\end{itemize}

La fonction `ca` (\emph{analyse des correspondance}), voir code source en annexe de ce chapitre, effectue l'ensemble de ces calculs.
```{r}
cam <- ca(N) # cam pour 'correspondence analysis model'
```

Calculons la proportion d'inertie cumulée exprimée par les axes factoriels (voir Table \@ref(tab:05-c-vec-delta2)).
```{r 05-c-vec-delta2}
tblTotalInr <- tblTotalInr.ca(cam)
printTbl(tblTotalInr)
```

Représentons sur une carte les coordonnées principales des dimensions n°1 et n°2 des profils lignes et des profils colonnes (voir Figure \@ref(fig:05-c-map-1-2)). Nous avons calculé les parts de l'inertie du plan factoriel 1-2 expliquées par chaque profil ligne et chaque profil colonne (voir code source en annexe de ce chapitre). Nous utilisons ces valeurs pour fixer la taille de la police des labels des profils. Nous empruntons cette technique à [@greenacre2010biplots] (pp.181-182).
```{r 05-c-map-1-2, fig.width = 6, fig.cap = "Carte des axes factoriels 1 (x) et 2 (y)"}
plot(cam)
```

D'après la Table \@ref(tab:05-c-vec-delta2), la carte de la Figure \@ref(fig:05-c-map-1-2) représente `r tblTotalInr$tbl[2]`‰ de l'inertie totale.

## Importance des axes et des profils

Nous pouvons mesurer la contribution d'un profil ligne $i$ (resp. d'un profil colonne $j$) à l'inertie exprimée par l'axe factoriel $k$ :
\[CTR_{i,k} = \frac{r_i f_{i,k}^2}{\sum_i r_i f_{i,k}^2} = \frac{r_i f_{i,k}^2}{\delta_k^2}\]
\[CTR_{j,k} = \frac{c_j g_{j,k}^2}{\sum_j c_j g_{j,k}^2} = \frac{c_j g_{j,k}^2}{\delta_k^2}\]

Les contributions ont des valeurs entre $0$ et $1$. La somme des contributions des profils (ligne ou colonne) à un axe est égale à $1$.
Une heuristique utile : la contribution d'un profil ligne (resp. colonne) peut être considéré important quand sa valeur dépasse $1/I$ (resp. $1/J$).

Nous pouvons également mesurer la corrélation des axes factoriels à un profil donné, c'est-à-dire la proportion de variance d'un profil qui peut être attribuée à un axe factoriel :
\[COR_{i,k} = \frac{f_{i,k}^2}{\sum_k f_{i,k}^2}\]
\[COR_{j,k} = \frac{g_{j,k}^2}{\sum_k g_{j,k}^2}\]

Les corrélations ont des valeurs entre $0$ et $1$. La somme des corrélations des axes à un profil (ligne ou colonne) est égale à $1$.

## Tableaux synthétiques des profils

Nous calculons la part d'inertie expliquée par chaque profil ligne :
\[ INR(i) = \sum_j r_i F_{i,j}^2 \]
Nous choisissons d'exprimer cette part d'inertie en proportion de l'inertie totale.

Nous rappelons le poids d'un profil ligne : $PDS(i) = r_i$.

Nous synthétisons ces données dans un tableau pour les profils lignes sur les 4 premiers axes factoriels (voir Table \@ref(tab:05-c-synth-row)).

```{r 05-c-synth-row}
tblI <- tblRowProfiles.ca(cam, 4)
printTblWithHeaders(tblI)
```

Nous donnons aussi un tableau synthétique pour les profils colonnes sur les 4 premiers axes factoriels (voir Table \@ref(tab:05-c-synth-col)).

```{r 05-c-synth-col}
tblJ <- tblColProfiles.ca(cam, 4)
printTblWithHeaders(tblJ)
```

## Éléments d'interprétation des cartes des profils améliorées

* Les plus gros pays exportateurs (resp. Maroc, URSS et USA) forment trois pôles d'attraction distincts.
* $eCC$ (URSS en tant qu'exportateur) et $iEE$ (autres pays d'Europe de l'Est en tant qu'importateurs) sont isolés à une extrémité du premier axe factoriel et contribuent de façon majeure à l'inertie de ce dernier.
* Les USA et l'URSS s'opposent sur le premier axe factoriel.
* Les USA et le Maroc s'opposent sur le second axe factoriel.
* Sur le plan factoriel 1-2, autour des USA gravitent les importateurs : d'abord le Canada (presque entièrement expliqué par le plan factoriel 1-2), mais aussi le Japon, le Brésil et l'Inde (le Japon et le Brésil sont très bien expliqués par le plan factoriel 1-2, trandis que l'inertie de l'Inde est fortement expliquée par l'axe factoriel n°4 sur lequel elle s'oppose en particulier à l'Espagne, voir Table \@ref(tab:05-c-synth-row)).

On poursuivrait l'analyse en explorant par exemple la carte du plan factoriel 2-3 (voir Figure \@ref(fig:05-c-map-2-3)).
```{r 05-c-map-2-3, fig.width = 6, fig.cap = "Carte des axes factoriels 2 (x) et 3 (y)"}
plot(cam, d1=2, d2=3)
```

## Annexe code source

```{r, code=readLines("05_c_svd_ca_code.R"), eval=FALSE}
```