Analyse Factorielle Multiple

Une ACP avec une métrique particulière

Marie-Pierre Etienne

ENSAI - CREST

https://marieetienne.github.io/MAF/

2024-12-19

Introduction

Quelques exemples

On a mesuré les caractéristiques physico chimiques sur 30 sites différents le long de la rivière Doubs.

Les 4 premières lignes (parmi 30) du jeu de données doubs.env

# A tibble: 30 × 11
    das   alt   pen   deb    pH   dur   pho   nit   amm   oxy   dbo
  <dbl> <int> <dbl> <dbl> <dbl> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
1   0.3   934  48    0.84   7.9    45  0.01  0.2   0     12.2   2.7
2   2.2   932   3    1      8      40  0.02  0.2   0.1   10.3   1.9
3  10.2   914   3.7  1.8    8.3    52  0.05  0.22  0.05  10.5   3.5
4  18.5   854   3.2  2.53   8      72  0.1   0.21  0     11     1.3
# ℹ 26 more rows

On mesure des caractéristiques physiques, des caractéristiques chimiques, des caractéristiques écologiques.

  • das : distance à la source ( \(km\) ),
  • alt : altitude ( \(m\) )
  • pen : la pente (dénivelé pour 1000m)
  • deb : le débit () \(m^3.s^{-1}\) )
  • pH : le pH de l’eau,
  • dur : la concentration en calcium ( \(mg.L^{-1}\) ),
  • pho : concentration en phosphate ( \(mg.L^{-1}\) ),
  • nit : concentration en nitrate ( \(mg.L^{-1}\) ),
  • amn : concentration en ammonium ( \(mg.L^{-1}\) ),
  • oxy : concentration d’oxygène dissous ( \(mg.L^{-1}\) ),
  • dbo : Demande biologique en oxygène ( \(mg.L^{-1}\) ).

Si on travaille sur une ACP normée, puisqu’il ya 4 descripteurs pour les caractéristiques physiques, et seulement 2 pour les caractéristiques écologiques, les varaibles physiques auront par construction plus de poids que les variables écologiques.

On s’intéresse aux notes des 30 élèves d’une classe. Le tableau de note complet contient

  • 8 notes de mathématiques
  • 4 notes d’anglais
  • 3 notes d’histoire géographie
  • 3 notes de français
  • 1 note de dessin

On aimerait visualiser les notes à l’aide d’une méthode factorielle, notamment pour savoir si ce sont les mêmes élèves qui rencontrent des difficultés dans les différentes matières.

  • On normalise les données car les gammes de variation des notes dans les différentes matières sont assez différentes
  • Que se passe-t-il si on fait une ACP normée ?

Les mathématiques ont 8 fois plus de poids dans la détermination des axes que la note de dessin.

Est ce vraiment ce qu’on veut ?

(ça dépend qui “on” désigne)

Exemple tiré des cours de F. Husson

10 vins blancs du Val de Loire : 5 Vouvray - 5 Sauvignon • descripteurs sensoriels : acidité, amertume, odeur agrume, etc.

vins <- read.table("https://husson.github.io/MOOC_AnaDo/AnaDo_JeuDonnees_VinsJury.csv", 
      header=TRUE, sep=";",dec=".", row.names=1, check.names=FALSE, fileEncoding="latin1")
head(vins, n= 4)
                      cepage Int.av.agitation Int.ap.agitation Expression
S Michaud          Sauvignon            7.750            8.000   7.142857
S Renaudie         Sauvignon            7.125            7.625   7.000000
S Trotignon        Sauvignon            7.125            7.375   7.142857
S Buisse Domaine   Sauvignon            5.500            6.250   5.428571
                    O.fruit O.passion O.agrume O.fruit.confit O.vanille
S Michaud          4.250000  2.428571 5.714286      0.6666667 0.5000000
S Renaudie         4.428571  3.142857 5.250000      0.6666667 0.5000000
S Trotignon        5.142857  4.000000 5.250000      1.0000000 0.5000000
S Buisse Domaine   4.250000  2.428571 3.571429      1.5000000 0.6666667
                    O.boisee   O.champ O.vegetale O.florale O.alcool
S Michaud          0.3333333 0.3333333   6.500000  6.571429 1.666667
S Renaudie         0.3333333 0.3333333   6.125000  6.428571 3.400000
S Trotignon        0.3333333 0.5000000   4.625000  5.142857 2.833333
S Buisse Domaine   0.5000000 0.3333333   4.571429  5.750000 2.600000
                   Typicite.olf.chenin Int.attaque   Sucree Acide Amere
S Michaud                     2.333333    6.000000 3.500000 5.875 4.125
S Renaudie                    1.125000    6.428571 3.285714 6.750 3.750
S Trotignon                   0.625000    6.571429 3.000000 6.125 4.125
S Buisse Domaine              2.571429    5.142857 3.875000 5.625 2.500
                   Astringence Fraicheur Oxydation  Finesse
S Michaud             1.428571     6.625 0.4285714 5.285714
S Renaudie            2.333333     6.625 0.2857143 5.142857
S Trotignon           2.375000     6.875 0.4285714 5.285714
S Buisse Domaine      3.000000     6.250 0.4285714 4.571429
                   Persistance.gustative Persistance.aromatique Int.couleur
S Michaud                       7.142857               6.714286       5.000
S Renaudie                      7.166667               6.571429       3.375
S Trotignon                     6.142857               6.142857       3.000
S Buisse Domaine                4.857143               5.142857       4.125
                   Nuance.couleur Impression.surface O.Av.Intensite_E
S Michaud                3.857143                2.5         5.361111
S Renaudie               3.285714                2.6         5.138889
S Trotignon              2.428571                2.8         5.277778
S Buisse Domaine         4.285714                3.5         4.444444
                   O.Ap.Intensite_E O.Alcool_E O.Vegetale_E O.Champignon_E
S Michaud                  6.384507   4.121799     3.119488       2.722222
S Renaudie                 5.966049   4.002137     2.916667       2.416667
S Trotignon                5.972222   3.805556     3.000000       2.916667
S Buisse Domaine           5.333333   4.333333     3.305556       2.361111
                   O.Fruitpassion_E O.Typicite_E G.Intensite_E Sucree_E
S Michaud                  4.916667     5.861111      5.444444 4.861111
S Renaudie                 6.027778     5.638889      5.444444 4.666667
S Trotignon                6.111111     5.055556      5.094377 5.055556
S Buisse Domaine           5.083333     5.916667      4.722222 4.916667
                    Acide_E  Amere_E Astringent_E G.Alcool_E Equilibre_E
S Michaud          5.194444 4.027778     3.694444   5.250000    5.194444
S Renaudie         5.277778 3.527778     3.527778   4.916667    4.750000
S Trotignon        4.916667 3.583333     3.708656   4.805556    5.222222
S Buisse Domaine   4.750000 3.750000     3.388889   4.972222    4.750000
                   G.Typicite_E O.Av.Intensite_C O.Ap.Intensite_C O.Alcool_C
S Michaud              5.416667         4.045455         5.200166   4.087040
S Renaudie             5.500000         5.318182         6.000000   3.492589
S Trotignon            5.361111         5.590909         6.090909   3.681818
S Buisse Domaine       5.342321         4.136364         5.000000   4.227273
                   O.Vegetale_C O.Champignon_C O.Fruitpassion_C O.Typicite_C
S Michaud              4.636364       4.490000         5.090909     4.488404
S Renaudie             4.454545       3.909091         6.454545     4.636364
S Trotignon            4.590909       2.272727         6.954545     4.889068
S Buisse Domaine       4.454545       3.636364         4.272727     4.727273
                   G.Intensite_C Sucree_C  Acide_C  Amere_C Astringent_C
S Michaud               4.500000 4.772727 4.409091 5.136364     4.272727
S Renaudie              5.181818 5.363636 5.409091 4.318182     4.545455
S Trotignon             5.045455 4.863636 5.090909 4.727273     5.727273
S Buisse Domaine        4.318182 5.363636 4.909091 4.545455     4.636364
                   G.Alcool_C Equilibre_C G.Typicite_C Juge1 Juge2 Juge3 Juge4
S Michaud            5.090909    5.189683     5.000000     7   5.5   2.5     1
S Renaudie           5.045455    5.090909     4.636364     6   5.5   2.5     2
S Trotignon          4.603636    5.090909     4.772727     3   4.0   3.0     3
S Buisse Domaine     4.909091    4.181818     4.272727     6   4.0   2.0     1
                   Juge5 Juge6 Juge7 Juge8 Juge9 Juge10 Juge11 Juge12 Juge13
S Michaud            5.0   3.5   4.5     1     1      1    2.5      5      1
S Renaudie           3.5   1.0   3.5     2     8      1    2.5      5      1
S Trotignon          4.5   2.0   4.0     2     6      4    2.0      8      1
S Buisse Domaine     3.0   3.0   3.5     4     7      2    2.0      4      1
                   Juge14 Juge15 Juge16 Juge17 Juge18 Juge19 Juge20 Juge21
S Michaud               4    3.0      1    2.0    6.0    5.5    3.5      1
S Renaudie              5    4.0      1    1.5    4.0    4.5    2.5      2
S Trotignon             5    4.5      6    3.0    7.5    5.5    3.5      2
S Buisse Domaine        6    3.0      3    4.0    3.0    2.5    2.5      6
                   Juge22 Juge23 Juge24 Juge25 Juge26 Juge27 Juge28 Juge29
S Michaud             2.5      5    4.5      4    3.0    1.5    2.0    1.5
S Renaudie            3.5      2    1.0      4    3.0    2.5    2.5    1.5
S Trotignon           2.5      4    3.0      5    4.5    3.5    2.5    1.5
S Buisse Domaine      1.5      1    3.0      4    3.5    3.0    2.0    2.0
                   Juge30 Juge31 Juge32 Juge33 Juge34 Juge35 Juge36 Juge37
S Michaud             3.5    2.0    4.5    6.5    2.5      3    3.5      2
S Renaudie            5.0    2.0    2.0    6.0    2.5      8    1.5      2
S Trotignon           5.0    2.5    5.5    6.0    4.0      6    4.0      5
S Buisse Domaine      4.5    3.0    5.0    7.0    4.5      3    4.0      4
                   Juge38 Juge39 Juge40 Juge41 Juge42 Juge43 Juge44 Juge45
S Michaud             7.0    2.5    3.5    5.5      4      6    3.5      1
S Renaudie            5.5    2.5    2.0    4.0      3      3    5.0      2
S Trotignon           4.5    4.0    8.5    5.0      3      7    4.0      1
S Buisse Domaine      3.5    3.0    5.5    5.5      3      8    2.5      4
                   Juge46 Juge47 Juge48 Juge49 Juge50 Juge51 Juge52 Juge53
S Michaud               4    4.5    3.5    5.0      6    3.5    4.5    2.5
S Renaudie              4    2.0    3.0    4.5      6    2.5    3.5    1.0
S Trotignon             4    3.5    3.5    5.5      5    3.0    4.0    3.0
S Buisse Domaine        1    5.0    3.0    8.0      5    2.0    3.0    3.0
                   Juge54 Juge55 Juge56 Juge57 Juge58 Juge59 Juge60
S Michaud             6.5    1.0      6    2.0      8    4.5      5
S Renaudie            6.5    1.0      2    4.0      1    2.0      1
S Trotignon           7.5    1.5      3    1.0      1    1.0      2
S Buisse Domaine      4.0    2.5      3    1.5      6    5.0      3

10 vins blancs du Val de Loire : 5 Vouvray - 5 Sauvignon

  • descripteurs sensoriels : acidité, amertume, odeur agrume, etc.
  • description sensorielle de 3 jurys : oenologue, consommateurs, étudiant
  • notes hédoniques de 60 consommateurs : [appréciation globale]{. vert}

Au total 118 variables, dont 60 sont des notes hédoniques

On souhaite étudier les relations entre les différentes varaibles mais aussi entre les groupes de variables

Il est important d’équilibrer le poids de chaque ensemble de variables

Formalisation du problème

\[\begin{align} X & = \begin{pmatrix} \class{bleu}{X^{1}_1} & \class{bleu}{X^{2}_1} & \class{bleu}{X^{3}_1} & \class{orange}{X^{4}_1}& \class{orange}{X^{5}_1} & \class{vert}{X^{6}_1}& \class{vert}{X^{7}_1} \\ \class{bleu}{\vdots} & \class{bleu}{\vdots} & \class{bleu}{\vdots} & \class{orange}{\vdots}& \class{orange}{\vdots} & \class{vert}{\vdots}& \class{vert}{\vdots} \\ \class{bleu}{X^{1}_n} & \class{bleu}{X^{2}_n} & \class{bleu}{X^{3}_n} & \class{orange}{X^{4}_n}& \class{orange}{X^{5}_n} & \class{vert}{X^{6}_n}& \class{vert}{X^{7}_n} \\ \end{pmatrix}\\ & = \begin{pmatrix} \class{bleu}{\boldsymbol{X^{1}}} & \class{orange}{\boldsymbol{X^{2}}} & \class{vert}{\boldsymbol{X^{3}}} \\ \end{pmatrix} \end{align}\]

On souhaite mettre en évidence

  • Les relations entre les groupes de variables

  • Equilibrer les contribution de chaque groupe de variables

Première idée

  • Rééquilibrer les variables entre groupes en attribuant à chaque variable \(k\) du groupe \(i\) un poids \(1/n_k\), où \(n_k\) est le nombre de variables dans le groupe \(k\).

Illustration

ACP normée

ACP sur les données réduites en prenant un poids \(1/n_k\) pour les variables du groupe \(k\)

Poids des groupes de variables (variance préservée )

  Methode Physique Chimique Ecologique
1     ACP      9.4      9.3        7.3
2     ACP      4.8      5.6        2.1
3     ACP      1.9      4.6         NA
4     n_k      4.7      4.1        5.2
5     n_k      2.4      2.5        1.5
6     n_k      0.9      2.1         NA

Contribution des variables aux différents axes

      Dim.1_acp  Dim.2_acp  Dim.1_nk   Dim.2_nk
das 12.18484089  8.1162594  8.964225 13.0124095
alt 11.24282498 10.7604372  7.666427 16.4183870
pen  3.43552777  6.8155752  2.520991  6.5171959
deb  9.47810542 12.4294474  6.400995 17.5657350
pH   0.04182411  6.0997890  0.102880  2.8386816
dur  8.37968810  9.7425152  4.794697  9.1768600
pho 11.55522175 10.2926487  8.904811  3.1296232
nit 13.64945308  0.2871669  8.934501  0.4216564
amm 10.45910917 13.8240211  8.289503  4.8797800
oxy  9.80107556  7.0888953 21.782875  8.4296737
dbo  9.77232918 14.5432445 21.638094 17.6099978
  • Rééquilibrer les variables entre groupes en attribuant à chaque variable \(k\) du groupe \(i\) un poids \(1/n_k\), où \(n_k\) est le nombre de variables dans le groupe \(k\).

Problème

  • les deux variables écologiques sont presque parfaitement corrélées, l’information qu’elles portent se résume très bien avec un seul axe. Ainsi cet axe porte presque la même information que l’ensemble des variables, elles ont donc beaucoup de poids dans la création des axes finaux.

  • Les variables chimiques (pH, dureté, phosphate, nitrite et ammoniaque) sont moins corélées, l’information qu’elles portent se diffusent sur plusieurs axes et donc le poids de ces variables est réparti sur plusieurs axes.

La première idée n’est pas toujours la bonne !

On souhaiterait que l’axe résume aussi bien les différents types de variable, et donc que chaque groupe de variable ait un poids 1 pour le premier axe.

L’AFM en pratique

Pour chaque groupe de variable \(k\),

  • On calcule la 1ère valeur propre \(\lambda_{k1}\) du groupe de variable \(k\), (chaque variable ayant été normée)
  • On réalise l’ACP globale sur le tableau pondéré :

\[\begin{align} X & = \begin{pmatrix} \class{bleu}{\frac{X^{1}_1}{\sqrt{\lambda_{11}}}} & \class{bleu}{\frac{X^{2}_1}{\sqrt{\lambda_{11}}}} & \class{bleu}{\frac{X^{3}_1}{\sqrt{\lambda_{11}}}} & \class{orange}{\frac{X^{4}_1}{\sqrt{\lambda_{21}}}} & \class{orange}{\frac{X^{5}_1}{\sqrt{\lambda_{21}}}} & \class{vert}{\frac{X^{6}_1}{\sqrt{\lambda_{31}}}}& \class{vert}{\frac{X^{7}_1}{\sqrt{\lambda_{31}}}} \\ \class{bleu}{\vdots} & \class{bleu}{\vdots} & \class{bleu}{\vdots} & \class{orange}{\vdots}& \class{orange}{\vdots} & \class{vert}{\vdots}& \class{vert}{\vdots} \\ \class{bleu}{\frac{X^{1}_n}{\sqrt{\lambda_{11}}}} & \class{bleu}{\sqrt{\frac{X^{2}_n}{\lambda_{11}}}} & \class{bleu}{\frac{X^{3}_n}{\lambda_{11}}} & \class{orange}{\frac{X^{4}_n}{\lambda_{21}}} & \class{orange}{\frac{X^{5}_n}{\sqrt{\lambda_{21}}}} & \class{vert}{\sqrt{\frac{X^{6}_n}{\lambda_{31}}}}& \class{vert}{\frac{X^{7}_n}{\lambda_{31}}} \\ \end{pmatrix}\\ & = \begin{pmatrix} \class{bleu}{\frac{\boldsymbol{X^{1}}}{\sqrt{\lambda_{11}}}} & \class{orange}{\frac{\boldsymbol{X^{2}}}{\sqrt{\lambda_{21}}}} & \class{vert}{\frac{\boldsymbol{X^{3}}}{\sqrt{\lambda_{31}}}} \\ \end{pmatrix}\\ \end{align}\]

On a ainsi la pondération

  Methode Physique Chimique Ecologique
1     ACP      9.4      9.3        7.3
2     ACP      4.8      5.6        2.1
3     ACP      1.9      4.6         NA
4     n_k      4.7      4.1        5.2
5     n_k      2.4      2.5        1.5
6     n_k      0.9      2.1         NA
7     AFM      1.0      1.0        1.0
8     AFM      0.5      0.6        0.3
9     AFM      0.2      0.5         NA

L’AFM : une ACP Particulière

Finalement dans une AFM, on étudie

  • le nuage de points \(\boldsymbol{X}\),
  • Les points sont potentiellement pondérés avec la matrice de poids \(W \in {\mathbb{R}}^{n\times n}\),
  • on utilise la mérique \[M = Diag\left (\frac{1}{s_1^2 \lambda_{c_1}},\ldots ,\frac{1}{s_p^2 \lambda_{c_p}} \right)\]

où Diag désigne la matrice diagonale, le terme \(i\) est donné par \(\frac{1}{s_i^2 \lambda_{c_i},}\) \(s_i\) est l’écart type de la variable \(i\) et \(\lambda_{c_i}\) est la première valeur propre de la classe à laquelle appartient la variable \(i\).

On a notre tryptique \[(X, W, M)\]

En pratique

doubs_mfa <- MFA(doubs.env, 
    group = c(4, 5, 2), # un vecteur qui spécifie le nombre de variable dans chaque groupe. Les variables doivent être organisées comme il faut
    type = rep("s", 3), # pour indiquer que ce sont de svariables quanti que l'on souhaite normaliser et ce pour chaque groupe
    ncp=11, # on garde tous les axes
    name.group=c("Physique","Chimique","Ecologique"), graph = TRUE)
#summary(doubs_mfa)
# library(Factoshiny)
# MFAshiny(doubs_mfa)

Bilan

Ce que vous pensez devoir retenir

On choisit de faire une AFM si on veut mettre l’accent sur les liens entre les groupes de variables

  • Pour ce faire, on veut que chaque groupe contribue de la même manière à construire des premmiers axes principaux

  • Pour normaliser l’importance de chaque groupe, on calcule la première valeur propre de chaque groupe et on normalise les données par la racine de cette vp, ou de manière équivalente on prend une métrique $M£ dans maquelle le terme \(M_{ii}\) contient la première valeur propre du groupe de variables auquel appartient \(i\).

La méthode est proche de l’ACP, c’est une ACP avec une métrique particulière.

On va inetrpéter les relations entre les groupes de variables.