---
title: "Analyse de Données avec R"
author: "Votre Nom"
date: "`r Sys.Date()`"
format: html
---
Labs1 - Analyse en composante Principale
$$
$$
Avant-propos
Les TP du cours MAF servent deux objectifs. Revenir sur certaines notions de cours et donner des outils pratiques pour mettre ne oeuvre les méthodes vues, et réfléchir à quelles informations elles peuvent apportées pour une ceratine application.
Il est donc fréquent que l’on fasse certaine partie avec peu d’outils (à la main) pouur bien faire le lien avec les concets de cours, tandis que d’autres servent d’exemple pour illustrer comment dérouler une analyse sur un jeu de données en particulier.
Statistiques avec R à l’Ensai
Le Logiciel R est libre et disponible sur divers plateformes sur cette page et le logiciel Rstudio est une interface agréable pour l’utilisation de R Vous pouvez installer ces logiciels sur votre ordinateur, toutefois il faut être prêt à gérer soi-même les problèmes de version, d’installation etc.
Pour plus de sérénité il est préférable d’utiliser les serveurs auqxuels vous pouvez vous connecter par l’url suivante (depuis n’importe où)
http://clust-n1.ensai.fr ; ou ; http://clust-n2.ensai.fr
Pour accéder en plus à une interface graphique, par exemple pour utiliser shiny
et notamment Factoshiny
, il faut être à l’ENSAI et utiliser l’adresse
http://clust-n1.domensai.ecole ; ou ; http://clust-n2.domensai.ecole
De bonnes pratiques
Préparation de l’environnement
- Ouvrir un navigateur web et se connecter au serveur de calcul.
- Créer un Projet (File –> New Project) ou bien en cliquant en haut à droite. Le travail par projet facilite l’accès aux données (notamment lorsque l’on passe d’un ordinateur à l’autre) et permet surtout de “zapper” d’un projet à un autre.
- Choisissez Créer un projet depuis un Nouveau Repertoire, nommez le
MAF_TD1
(comme toujours en programmation on évite les caractères spéciaux, c’est-à-dire, les accents, les espaces entre autres) - Pour pouvoir garder le code et l’interprétation des résultats au même endroit nous allons utiliser un type de document Quarto qui est adapté pour mélanger code et texte. Quarto accepte du code R mais aussi Python et Julia. Créer un fichier
TP1_Exo1.qmd
. Vous pouvez utiliser le fichier d’exemple. - Passez en mode
source
(en haut à gauche) au lieu deVisual
ceci permet de mieux comprendre la structure d’un document quarto.
Structure Document Quarto
Un document Quarto se divise en plusieurs sections clés qui facilitent l’organisation de l’analyse, l’intégration de code, et la présentation des résultats. Voici une présentation des principales composantes :
En-tête YAML
C’est la section de métadonnées du document. Elle est située en haut du fichier et est encadrée par des lignes —. On y définit des informations essentielles telles que : title : le titre du document ; author : l’auteur ou les auteurs du document ; date : la date de création, qui peut être dynamique avec R, par exemple en utilisant date: “r Sys.Date()” ; format : le format de sortie (HTML, PDF, Word, revealjs pour les présentations, etc.).
Exemple d'en-tête YAML :
Texte en Markdown
La rédaction du texte dans Quarto utilise la syntaxe Markdown pour structurer le contenu de manière simple et lisible. Markdown permet de formater le texte (titres, listes, liens, etc.) sans avoir à écrire du code complexe. Par exemple :
Exemple :
## Introduction
Ce document présente une analyse de données en utilisant **R**.- Point 1
- Point 2
Le markup langage markdown permet aussi d’insérer des formules mathématiques, comme du latex.
Blocs de Code
Quarto permet d’intégrer du code R (mais aussi Python, et Julia) grâce à des blocs de code, chunks
. Les blocs de code sont délimités par trois accents graves (triple backtick), avec le langage spécifié entre accolades ({}). Les blocs peuvent exécuter du code directement dans le document et afficher les résultats en ligne.
Exemple de bloc de code en R :
Les options de rendu du bloc de code peuvent être précisées. Par exemple ici * #| echo: true permet de montrer le code * #| eval: false permet de ne pas executer le code
Une présentation plus complète des options, pour un rendu plus fin est disponible sur le site de Quarto.
Le bloc peut être défini en tapant * manuellement les triples backticks, * ou en utilisant le menu Code –> Insert Chunk, * ou avec le raccourci CTRL + ALT + i
Rendu et Exportation du Document
Une fois le document terminé, on peut le rendre dans le format souhaité en utilisant la commande suivante dans le terminal quarto render mon_document.qmd
ou en cliquant sur Render dans RStudio.
Cette commande crée une version finalisée du document dans le format spécifié (HTML, PDF, etc.).
Avec Quarto on peut tout autant faire des slides, des rapports en pdf, en word etc. Ceci permet de s’assurer que les résulats présentés sont ceux de l’analyse et c’est un premier pas important dans le sens d’assurer plus de reproductibilité en science. (d’autres outils sont utiles voir ici )
C’est très utile en TP puisque vous pouvez commenter les analyses proposées, les résultats obtenus directement dans le fichier qui contient les codes permettant d’obetenir ces résultats.
Plus largement, en suivant cette structure, vous pouvez organiser vos analyses de manière professionnelle et claire.
Création du document
Lors de la mise en place de l’analyse, on peut éxécuter chaque chunk avec le raccourci CTL + Enter, ou en cliquant sur la petite flèxche verte en haut à droite du chunk.
Analyse des caractéristiques géochimiques des sols en forêt de Bornéo
Il s’agit ici de carcatériser les propriétés physico chimiques des sols en forêt à Bornéo. Pour ceci on a prélevé des échantillons de sol, à diverses profondeurs et on cherche à mettre en évidence des typologies de sols et à identifier des sites de prélèvement qui se ressemblent. Les données consistent en la mesure de caractéristiques géochimiques de sols dans une forêt pluviale de Bornéo et sont issues de Sellan et al. (2021).
Comprendre les données
Importation
Nous allons importer les données et les manipuler en utiliser les possibilités de la suite de package tidyverse
. Les données sont disponibles sur ce lien
library(tidyverse) # Pour la manipulation de données
<- read.table("https://marieetienne.github.io/datasets/donnees_sols.txt",
donnees_sols sep = ";", # separateur de champs
header = TRUE, # 1ere ligne donne le nom des colonnes
encoding = "UTF-8") # Encodage initial du fichier
Le jeu de données donnees_sols
regroupe donc les mesures chimiques surtous les types de sols. Les auteurs précisent le préfixe Exc signifie échangeable et le préfixe P signifie Available.
Une première exploration
Proposer des résumés univariés de chaque variable présente dans le jeu de données.
Combien y a t-il de variables quantitatives / qualiltatives?
Combien d’échantillons sont mesurés par site ?
Sont-ils tous prélevés à la même profondeur ?
Quel est le pH moyen tout site/Sol et Profondeur confondu ?
Chercher le sens de chaque variable.
Av.P Phospore disponible
C Carbone
N Azote
NO3 Nitrate
NH4 Amonium
Exc.Ac Actinium Echangeable
Exc.Al Aluminium Echangeable
Exc.Ca Calcium Echangeable
Exc.Mg Magnésium 2changeable
Exc.K Potassium échangeable
Exc.Na Sodium échangeable
Exc.Cations Cations (ions chargés positivement) échangeables
SatBase Taux de Saturation du sol
Argile pourcentage d’argile dans le sol,
Limon pourcentage de Limon dans le sol,
Sable pourcentage de sable dans le sol.
Quelle la variance de la teneur en Eau ? Quelle est la variance de la teneur en Sodium (Na) ?
Représentation bivariée
Pour appréhender le jeu de données, il est utile de commencer par comprendre les relations deux à deux entre les variables. On peut commencer par la corrélation entre celles-ci
En utilisant le package GGally
et notamment la fonction ggpairs, proposer une représentation bivariée des différents couples de variables.
La visualisation est difficile, d’où l’intérêt d’une approche multivariée.
Approche factorielle
Le but est de faire émerger des typologies de sol. Pour le moment nous mettons de coté les variables qualitatives.
Mise en place de l’approche factorielle
- Comment décider le poids attribuer à chaque individu ?
- Quelle distance entre variables choisir ?
- Quelles varaibles choisissez vous de considérer comme supplémentaires (qualitative et ou quantitative)
- Quelle doit être l’inertie du nuage ?
Ces choix étant faits, on peut lancer une analyse en composante principale.
ACP “à la main”
L’ACP consiste à construire une nouvelle base de \({\mathbb{R}}^p\) pour représenter les individus.
Combien vaut \(p\) ici ?
Cette base est formée des veteurs propres d’une matrice. De quelle matrice parle-t-on ?
- A l’aide de la fonction
eigen
représenter la suite décroissante des valeurs propres. A partir de combien de vecteurs de base considérez-vous que l’information apportée devient négligeable?
Pour réaliser l’ACP, on utilise deux packages FactomineR
qui fait les calculs et factoextra
pour des sorties plus agréables
library(FactoMineR)
library(factoextra)
Vous pouvez maintenant lancer l’ACP sur le jeu de données du sol.
<- PCA(X = donnees_sols,
sols.pca scale.unit = , ## ACP normée ou non ?
ncp = , ## nombre de composantes principales à garder, dans le doute on garde tout
ind.sup = , ## numero des lignes des individus supplémentaires
quanti.sup = , ## numero des colonnes des variables quanti sup
quali.sup = , ## numero des colonnes des variables quanti sup
row.w = , ## poids des individus
col.w = , ## poids des variables
graph = , ## TRUE or FALSe doit on sortir les graphes
axes = , ## pour quels axes
)
<- PCA(X = donnees_sols[, -2],
sols.pca scale.unit = TRUE, ## ACP normée ou non ?
ncp = 18, ## nombre de composantes principales à garder, dans le doute on garde tout
quali.sup = c(1,2), ## numero des colonnes des variables quali sup
graph = FALSE
)
Indiquer comment est construit l’objet
sols.pca
et détailler ce qu’il contient.A l’aide de la commande
sols.pca$eig
, visualisez le pourcentage d’information expliqué par chaque composante principale (ou nouvelle colonne). Comparer avec ce qui a été trouvé “à la main”. Les vecteurs propres sont disponibles dans sols.pca$svd$V
, comparer également les deux premiers axes principaux et les vecteurs propres trouvés à la main.
Mise en oeuvre pratique de l’ACP pour analyse des données de sol
- Représentez l’éboulis des valeurs propres à partir de la sortie
sols.pca
(ce qui a déjà été fait à la main précédemment).
- A partir de combien d’axes factoriels considérez vous que l’information apportée devient négligeable?
Variables
Le package factoextra
donne des outils pour produire des sorties les plus lisibles possibles.
Pour représenter le cercle des corrélations dans un plan principal, on utilise la fonction fviz_pca_var
. Sur chaque graphe, qu’est ce qui est représenté?
- Pour plus de lisibilité, refaites le même graphique avec seulement les variables bien représentées (par exemple celles pour lesquelles le cos2 de l’angle entre la variable initiale et la variable projetée dans le plan représenté est supérieur à 0.8). Jouer sur les différentes repésentations pour bien comprendre quelle information est disponible sur chaque projection
Il est important de noter qu’on peut grâce à resultat_acp
, tracer ce graphique nous même et donc modifier son apparence à notre guise.
- Avec la fonction
corrplot
et l’objetsols.pca$var$cor
, représentez les corrélations entre anciennes et nouvelles variables.
- Quel est l’intérêt du cercle de corrélation par rapport à ce dernier graphique?
Individus
Pour représenter la projection des individus dans un plan principal, on utilise la fonction fviz_pca_ind
.
- Dans la fonction
fviz_pca_ind
, en rajoutantcol.ind = donnees_sols$Sol
, coloriez les individus selon leur typologie de sol.
Représenter la projection des individus dans les premiers plans principaux. Quel plan vous semble bien distinguer les types de sol? Comment interprétez-vous alors les typologies de sols au vu des premières variables?
Faites le même exercice avec les profondeurs et essayez d’interpréter quel(s) gradient(s) distingue(nt) bien les profondeurs?
Performances au Décathlon
potentiellement commencer en TP mais surtout à faire chez soi pour vérifier qu’on a compris
L’objectif de l’étude est de mettre en évidence des profils d’athlètes parmi des décathloniens (, mais également de mettre en évidence si certaines épreuves se ressemble (quand on est excellent au 100m, est on aussi excellent au saut en longueur ?)
Les données sont disponibles dans le package FactoMineR
et peuvent etre chargée par la commande data(decathlon)
après avoir chargé le package FactoMineR
. Ces données portent sur les résultats aux épreuves du décathlon lors de deux compétitions d’athlétisme qui ont eu lieu à un mois d’intervalle: les Jeux Olympiques d’Athènes (23 et 24 août 2004) et le Décastar (25 et 26 septembre 2004). Lors d’une compétition, les athlètes participent à cinq épreuves (100m, longueur, poids, hauteur, 400m) le premier jour, puis aux épreuves restantes (110m haies, disque, perche, javelot, 1500m) le lendemain. Pour chaque athlète, on dispose de ses performances dans chacune des 10 épreuves, de son classement final, de son nombre de points final et de la compétition à laquelle il a participé.
Plan de l’étude
- Une étude descriptive simple et bivariée pour identifier des individus atypiques, les variables les plus corrélées.
- Mettre en place une ACP
- Bien réfléchir aux variables actives et supplémentaires
- Choisir la métrique adaptée et les poids des individus.
- Réaliser l’ACP.
- Interprétation
- Discuter la qualité de la représentation
- Expliquer ce qui est visible sur les différents plans factoriels
- Combien de plan factoriels vous semblent intéressants ?
- Donner un sens aux axes factoriels.
- Identifier les disciplines qui se ressemblent (elles mettent en jeu les mêmes compétences physiques)
- Quelles sont les disciplines qui contribuent le plus au premier axe factoriel ?
- Quels sont les individus qui contribuent le plus à ce même premier axe ?
- Comment le score est il lié aux différentes disciplines ?
- Est ce qu’un athlète qui est excellent au 100m, est aussi excellent au saut en longueur ?
- Technique
- Calculer manuellenent (sans package) la corrélation entre les performances au 100m et le premier axe factoriel
- Reconstruisez à la main les coordonnées des individus dans le premier plan factoriel
- calculer à la main les contributions des différents individus
Comment trouver la représentation qui discrimine le mieux les types de sol.
Quelle méthode vous semble adaptée ?
Pouvez-vous proposer un métodologie pour la mettre en oeuvre