work on chapter on mca

This commit is contained in:
Pierre-Edouard Portier 2023-01-10 16:02:56 +01:00
parent 3ae5a7ceac
commit 75ea33ee42
1 changed files with 74 additions and 21 deletions

View File

@ -9,24 +9,24 @@ source('05_d_svd_mca_code.R')
### Matrice de Burt
Soit un tableau $\mathbf{N}$ qui croise un ensemble d'individus $\{i\}_{i=1}^I$ et un ensemble de variables $\{j\}_{j=1}^J$. Chaque individu $\mathbf{n_i}$ est décrit par $J$ valeurs : $n_{i,1},\dots,n_{i,J}$.
Soit un tableau $\mathbf{N}$ qui croise un ensemble d'individus $\{i\}_{i=1}^I$ et un ensemble de variables $\{j\}_{j=1}^Q$. Chaque individu $\mathbf{n_i}$ est décrit par $Q$ valeurs : $n_{i,1},\dots,n_{i,Q}$.
\[
\mathbf{N} =
\begin{array}{c|cccc}
& j_1 & j_2 & \dots & j_J \\
& j_1 & j_2 & \dots & j_Q \\
\hline
\mathbf{i_1} & n_{1,1} & n_{1,2} & \dots & n_{1,J} \\
\mathbf{i_2} & n_{2,1} & n_{2,2} & \dots & n_{2,J} \\
\mathbf{i_1} & n_{1,1} & n_{1,2} & \dots & n_{1,Q} \\
\mathbf{i_2} & n_{2,1} & n_{2,2} & \dots & n_{2,Q} \\
\dots & \dots & \dots & \dots & \dots \\
\mathbf{i_I} & n_{I,1} & n_{I,2} & \dots & n_{I,J} \\
\mathbf{i_I} & n_{I,1} & n_{I,2} & \dots & n_{I,Q} \\
\end{array}
\]
Nous considérons la situation où chaque variable $j$ est catégorielle. Mettons que la variable $j_1$ ait 2 modalités, la variable $j_2$ ait 3 modalités,\dots, la variable $j_J$ ait 2 modalités. Nous constuisons le tableau binaire $\mathbf{Z}$, nommé \emph{tableau disjonctif complet}.
Nous considérons la situation où chaque variable $j$ est catégorielle. Mettons que la variable $j_1$ ait 2 modalités, la variable $j_2$ ait 3 modalités,\dots, la variable $j_Q$ ait 2 modalités. Notons $J$ le nombre total de modalités toutes variables confondues. Nous constuisons le tableau binaire $\mathbf{Z}$, nommé \emph{tableau disjonctif complet}.
\[
\mathbf{Z} =
\begin{array}{c|cc|ccc|c|cc}
& \multicolumn{2}{c|}{j_1} & \multicolumn{3}{c|}{j_2} & \dots & \multicolumn{2}{c|}{j_J} \\
& \multicolumn{2}{c|}{j_1} & \multicolumn{3}{c|}{j_2} & \dots & \multicolumn{2}{c}{j_Q} \\
& 1 & 2 & 1 & 2 & 3 & \dots & 1 & 2 \\
\hline
\mathbf{i_1} & 0 & 1 & 1 & 0 & 0 & \dots & 1 & 0 \\
@ -36,7 +36,7 @@ Nous considérons la situation où chaque variable $j$ est catégorielle. Metton
\end{array}
\]
Nous construisons la \emph{matrice de Burt} $\mathbf{C} = \mathbf{Z}^T\mathbf{Z}$. C'est une matrice symétrique. Les blocs diagonaux sont les histogrammes de chaque variable catégorielle. Les autres blocs sont les tables de contingence entre paires de variables catégorielles. Prenons un petit exemple numérique pour fixer les idées. Nous partons d'un tableau disjonctif complet $\mathbf{Z}$, voir Table \@ref(tab:05-d-mat-Z), puis nous calculons la matrice de Burt $\mathbf{C}$, voir Table \@ref(tab:05-d-mat-C).
Nous construisons la \emph{matrice de Burt} $\mathbf{C} = \mathbf{Z}^T\mathbf{Z}$. C'est une matrice $J \times J$ symétrique. Les blocs diagonaux sont les histogrammes de chaque variable catégorielle. Les autres blocs sont les tables de contingence entre paires de variables catégorielles. Prenons un petit exemple numérique pour fixer les idées. Nous partons d'un tableau disjonctif complet $\mathbf{Z}$, voir Table \@ref(tab:05-d-mat-Z), puis nous calculons la matrice de Burt $\mathbf{B}$, voir Table \@ref(tab:05-d-mat-B).
```{r 05-d-mat-Z}
Z <- matrix( c(0,1,1,0,0,0,1,1,
@ -57,36 +57,89 @@ kbl(Z, caption = "Exemple jouet d'un tableau disjonctif complet",
kable_styling(latex_options = "striped")
```
```{r 05-d-mat-C}
C = t(Z) %*% Z
kbl(C, caption = "Matrice de Burt pour l'exemple jouet",
```{r 05-d-mat-B}
B = t(Z) %*% Z
kbl(B, caption = "Matrice de Burt pour l'exemple jouet",
booktabs = TRUE) %>%
kable_styling(latex_options = "striped")
```
### Analyse des correspondances de la matrice de Burt
L'analyse des correspondances du tableau disjonctif complet $\mathbf{Z}$ ou l'analyse des correspondances de la matrice de Burt $\mathbf{C}$ sont très proches. Les deux analyses diffèrent en ceci que :
L'analyse des correspondances du tableau disjonctif complet $\mathbf{Z}$ ou l'analyse des correspondances de la matrice de Burt $\mathbf{B}$ sont très proches. Les deux analyses diffèrent en ceci que :
* L'analyse de $\mathbf{C}$ ne donne des résultats que pour les catégories (les individus n'apparaissent plus).
* Pour chaque facteur principal, l'inertie associée par l'analyse de $\mathbf{C}$ est le carré de celle associée par l'analyse de $\mathbf{Z}$.
* $\mathbf{C}$ étant une matrice symétrique définie positive, la décomposition en valeurs singulières est identique à une décomposition en valeurs propres.
* L'analyse de $\mathbf{B}$ ne donne des résultats que pour les catégories (les individus n'apparaissent plus).
* Pour chaque facteur principal, l'inertie associée par l'analyse de $\mathbf{B}$ est le carré de celle associée par l'analyse de $\mathbf{Z}$.
* $\mathbf{B}$ étant une matrice symétrique définie positive, la décomposition en valeurs singulières est identique à une décomposition en valeurs propres.
Nous pouvons reprendre les résultats dérivés au chapitre sur l'analyse des correspondances pour les appliquer à l'analyse de la matrice de Burt.
* $n \triangleq \sum_i \sum_j c_{i,j}$
* $\mathbf{P} \triangleq \left[ p_{i,j} \right] \quad ; \quad p_{i,j} \triangleq c_{i,j} / n$
* $n \triangleq \sum_i \sum_j b_{i,j}$
* $\mathbf{P} \triangleq \left[ p_{i,j} \right] \quad ; \quad p_{i,j} \triangleq b_{i,j} / n$
* $r_i \triangleq \sum_j p_{i,j}$
* $\mathbf{S} \triangleq \left[ s_{i,j} \right] \quad ; \quad s_{i,j} \triangleq \left( p_{i,j} - r_i r_j \right) / \sqrt{r_i r_j}$ (écarts à l'indépendance standardisés)
* $\mathbf{S} = \mathbf{V} \boldsymbol \Lambda \mathbf{V}^T$ avec $\mathbf{V}^T\mathbf{V}=\mathbf{I}$
* Coordonnées standard du facteur $k$ : $a_{i,k} = v_{i,k} / \sqrt{r_i}$
* Coordonnées principales du facteur $k$ : $f_{i,k} = a_{i,k} \lambda_k$
* Coordonnées standard des modalités sur l'axe factoriel facteur $k$ : $a_{i,k} = v_{i,k} / \sqrt{r_i}$
* Coordonnées principales des modalités sur l'axe factoriel $k$ : $f_{i,k} = a_{i,k} \lambda_k$
* Contribution de la modalité $i$ à l'inertie du facteur $k$ : $CTR_{i,k} \triangleq r_i f_{i,k}^2 / \sum_i r_i f_{i,k}^2$
* Corrélation de la modalité $i$ avec le facteur $k$ : $COR_{i,k} \triangleq f_{i,k}^2 / \sum_k f_{i,k}^2$
### Individus et variables supplémentaires
Opérons ces calculs sur notre petit exemple jouet.
Le passage par la matrice de Burt ne permet pas de trouver directement les coordonnées principales des individus (seulement celles des variables). Cependant, nous pouvons a posteriori associer à chaque individu ses coordonnées principales.
```{r}
Q <- 3
J <- 7
P <- B / sum(B)
r <- apply(P, 2, sum)
rr <- r %*% t(r)
S <- (P - rr) / sqrt(rr)
dec <- eigen(S)
# Les Q dernières valeurs propres doivent être nulles (codage disjonctif complet)
K <- J - Q
delt <- dec$values[1 : K]
a <- sweep(dec$vectors, 1, sqrt(r), FUN = "/")
a <- a[,(1 : K)]
f <- a %*% diag(delt)
rownames(a) <- c("j1-1", "j1-2", "j2-1", "j2-2", "j2-3", "j3-1", "j3-2")
colnames(a) <- c("F1", "F2", "F3", "F4")
rownames(f) <- rownames(a)
colnames(f) <- colnames(a)
temp <- sweep(f^2, 1, r, FUN = "*")
sum_ctr <- apply(temp, 2, sum)
ctr <- sweep(temp, 2, sum_ctr, FUN = "/")
temp <- f^2
sum_cor <- apply(temp, 1, sum)
cor <- sweep(temp, 1, sum_cor, FUN="/")
```
### Individus supplémentaires
Le passage par la matrice de Burt ne permet pas de trouver directement les coordonnées principales des individus (seulement celles des variables). Cependant, nous pouvons a posteriori associer à chaque individu ses coordonnées principales. Pour ce faire, il faut utiliser les formules de transition (voir section \@ref(05_c_transition_formula)) qui permettent d'exprimer les coordonnées principales d'un profil ligne supplémentaire (noté $f^*_{is,k}$) comme barycentre des coordonnées standards des profils colonnes pondérés par le profil ligne supplémentaire. Nous notons $b^*_{is,j}$ la représentation de la $j$-ème composante de l'individu supplémentaire $is$ comme ligne supplémentaire du tableau disjonctif complet. La $j$-ème composante du profil ligne de cet individu supplémentaire est : $\frac{b^*_{is,j}}{b^*_{is,+}}$ (où $b^*_{is,+}$ signifie la somme des éléments de la ligne supplémentaire $\mathbf{b^*_{is}}$ au tableau disjonctif complet).
Sur notre exemple jouet de la Table \@ref(tab:05-d-mat-Z), considérons le premier individu : $\mathbf{b^*_1} = [0,1,0,1,0,0,1]^T$. Nous le notons $\mathbf{b^*_1}$ car nous faisons comme si nous l'ajoutions comme ligne supplémentaire au tableau de Burt $\mathbf{B}$ de la Table \@ref(tab:05-d-mat-B). D'après les formules de transition, nous avons :
\[f^*_{1,k} = \sum_{i=1}^J \frac{b^*_{1,i}}{b^*_{1,+}} a_{i,k}\]
Calculons ainsi les coordonnées principales des individus :
```{r}
# calcul des profils des individus supplémentaires
IS <- sweep(Z, 1, apply(Z, 1, sum), FUN = "/")
# calcul des coordonnées principales des individus supplémentaires
FIS <- IS %*% a
```
Affichons une carte des deux premiers axes factoriels (voir Figure \@ref(fig:05-d-map-toy-1-2)).
```{r 05-d-map-toy-1-2, fig.width = 6, fig.cap = "Carte selon les axes factoriels 1 (x) et 2 (y)"}
plot(f[,1], f[,2], type = "n",
xlab="", ylab="", asp = 1, xaxt = "n", yaxt = "n")
text(f[,1], f[,2], rownames(f), adj = 0)
points(0, 0, pch = 3)
points(FIS[,1], FIS[,2], pch = 20)
```
### Variables supplémentaires
## Jeu de données