BioDataScience2::learnr_setup()
SciViews::R("explore", lang = "fr")

# caith -----
caith <- read("caith", package = "MASS")
caith_df <- as_dtf(caith)
caith_ca <- ca(caith_df)
BioDataScience2::learnr_banner()
BioDataScience2::learnr_server(input, output, session)

Objectifs

L'Analyse Factorielle des Correspondances (AFC) est une variante de l'Analyse en Composantes Principales (ACP) qui permet de traiter les variables qualitatives (deux variables qualitatives transformées en un tableau de contingence à double entrée). Elle permet aussi de traiter des variables quantitatives discrètes (entiers nuls ou positifs) comme des dénombrements d'espèces à diverses stations, ce qui s'apparente également dans un certain sens à un tableau de contingence qui croise espèce et station. Ce tutoriel vous permettra de :

Avant toute chose, assurez-vous d'avoir bien compris le contenu du module 7 du cours et en particulier la section 7.3.

Couleur des yeux et des cheveux

L'étude porte sur 5387 personnes provenant du nord de l'Écosse. Le jeu de données se nomme caith.

caith <- read("caith", package = "MASS")
caith

Il s'agit d'un tableau de contingence à double entrée. Observez les colonnes. On en dénombre r dim(caith)[2]. La première est de type character. Elle porte un nom particulier : .rownames.

Rappelez-vous que nous retrouvons plusieurs types d'objets dans R pour les tableaux de données : les data.frames, les data.tables ou encore les tibbles. Par défaut dans SciViews::R, les tableaux de données sont des data.tables. Vous pouvez vérifier la classe d'un objet avec class().

class(caith)

Préparation des données

Le tableau nécessaire afin de réaliser une analyse factorielle des correspondances ne doit comprendre que des valeurs numériques. La première colonne .rownames est donc un problème. Une solution serait de la retirer avec, par exemple, sselect(). Ce n'est cependant pas la meilleure solution. Cette colonne apporte une information très intéressante dont on ne veut pas se passer : un label pour les lignes du tableau. Il est donc préférable de convertir en un objet différent qui prendra en compte ces labels. Les data.frames supportent des noms pour les lignes (rownames) autant que les colonnes à la différence des data.tables et des tibbles.

Convertissez l'objet caith en data.frame à l'aide de as_dtf(). Nommez ce nouvel objet caith_df.

caith_df <- ___(___)
# Afficher le tableau
caith_df
## Solution ##
caith_df <- as_dtf(caith)
# Afficher le tableau
caith_df
grade_code("La conversion du tableau en `data.frame` est simple avec la fonction `as_dtf()`. Par défaut, la fonction reconnait la colonne `.rownames` et la converti en nom de lignes. Si la colonne à transformer en nom des lignes porte un autre nom que `.rownames`, alors vous pouvez utiliser l'argument `rownames =` pour indiquer quelle colonne utiliser.")

Réalisation de l'AFC

Réalisez à présent une analyse factorielle des correspondances sur l'objet caith_df et nommez-la caith_ca. Faites ensuite le résumé de ce dernier objet.

# AFC
___ <- ___()
# Résumé de l'objet
___(___)
# AFC
caith_ca <- ca(___)
# Résumé de l'objet
___(caith_ca)
## Solution ##
# AFC
caith_ca <- ca(caith_df)
# Résumé de l'objet
summary(caith_ca)
grade_code("Le code est simple. Le résumé de l'objet met en avant qu'avec les deux premiers axes on couvre 99.6% de la variance. Le premier axe couvre déjà plus de 86%. L'essentiel de l'information se lira donc dans le premier plan de projection.")

Tracez le graphique des éboulis de votre analyse.

___$___()
## Solution ##
chart$scree(caith_ca)
grade_code("Ce graphique vient en complément du résumé. On observe que le premier axe comprend une grande part de la variance.")

Réalisez enfin la carte (biplot) de votre AFC.

___$___()
## Solution ##
chart$biplot(caith_ca)
grade_code("Ce graphique va s'analyser en trois étapes. On va d'abord s'intéresser aux yeux, puis au cheveux et enfin les deux ensemble. Faites le travail par vous-même avant de vous rendre dans la section suivante pour comparer votre analyse avec celle que nous vous proposons.")

Interprétation d'une ACF

Les instructions pour obtenir l'AFC sont assez simples, au delà de la petite difficulté éventuelle liée au label des lignes du tableau, mais toute la subtilité vient de l'interprétation des résultats.

caith_df <- as_dtf(read("caith", package = "MASS"))
caith_ca <- ca(caith_df)
summary(caith_ca)
chart$biplot(caith_ca, repel = TRUE)

Les deux premiers axes couvrent 99.6% de la variance. Du point de vue des cheveux (représentés ici en rouge), on observe une transition des cheveux clairs (fair = blond) à gauche vers les cheveux foncés à droite. Du point de vue des yeux (ici en turquoise), les yeux clairs (blue et light) sont à gauche et les yeux foncés à droite.

On observe la même transition du clair vers le foncé aussi bien pour les cheveux que pour les yeux. Les individus aux yeux clairs vont être liés aux cheveux clairs et les individus aux yeux foncés sont associés aux cheveux foncés (proximité des points rouges et turquoises pour l'interprétation de ces associations).

Conclusion

Cette AFC nous a permis d'observer des tendances dans nos données. Le fait que les blonds ont tendance à avoir des yeux clairs et les bruns des yeux foncés ne devra pas vous étonner, de même que le contraste entre ces deux extrêmes aussi bien pour les cheveux que pour les yeux. Donc, vous pouvez constater que l'AFC présente une telle information assez clairement sur le biplot.

Maintenant que vous avez compris la logique, que vous maîtrisez les techniques pour préparer vos données et que vous êtes capable d'écrire le code permettant de réaliser une AFC, vous pouvez appliquer tout cela dans une assignation GitHub (voir dans le cours).

question_text(
  "Laissez-nous vos impressions sur cet outil pédagogique",
  answer("", TRUE, message = "Pas de commentaires... C'est bien aussi."),
  incorrect = "Vos commentaires sont enregistrés.",
  placeholder = "Entrez vos commentaires ici...",
  allow_retry = TRUE
)


BioDataScience-Course/BioDataScience2 documentation built on April 12, 2025, 9:45 a.m.