Mini tutoriel R pour l’analyse de données
Jean-Marc Lasgouttes — Inria Paris
[Link]@[Link]
[Link]
Partie I. R vite fait fileEncoding = "", encoding = "unknown", text,
skipNul = FALSE)
Qu’est-ce que R ? Comment lire ça ?
— les paramètres peuvent avoir une valeur par défaut
Une copie de S S est un logiciel de statistiques développé (FALSE pour header)
aux Bell Labs ; R est une implémentation libre distribuée Seules les quelques premières sont obligatoires
sous la licence GNU GPL. — si on ne donne pas le nom, ce sera le premier, le
Un logiciel populaire beaucoup de fonctionnalités ont été second. . .
développées par la communauté R ; c’est sa grande force. — on peut abréger le nom si ce n’est pas ambigu (head
Un logiciel portable R existe sous Windows, macOS et pour header, par ex.)
Linux. — en général, on ne donne que quelques paramètres
Un logiciel libre Le code source de R et des binaires sont
disponibles sur [Link] Lire des données (suite)
CRAN ? C’est le site qui regroupe tous les packages R Commande de base version courte
développés par la communauté
[Link](file, header = FALSE, sep = "",
Installer R quote = "\"’", ...)
Les binaires sont là : [Link] Explications afficher l’aide avec la commande
?[Link] ou help([Link])
Windows choisir de télécharger « base »
Et le résultat ? uniquement retour de fonction (souvent
macOS Deux versions, la première pour les ordinateurs un objet complexe)
avec puce M1 ou M2, la seconde pour les processeurs Intel. On peut afficher l’objet avec la commande print(obj)
Ubuntu on installe le package r-base (ou juste obj) ou alors summary(obj)
sudo apt install r-base Exemple parfois aussi simple que
IDE RStudio Environnement de travail sympa <- [Link]("[Link]")
— console R pour taper les commandes « <- » ? ? C’est l’opérateur d’affectation (on peut aussi
— panneaux pour visualiser les variables, les tables, les utiliser =)
graphiques
— possibilité de faire des notebooks en langage markdown Autre type de fichiers
combinées à du code R. — comma separated variables (csv) : [Link](),
read.csv2()
— Libre Office Calc avec read_ods() du package rea-
Lire des données dODS
Commande de base
Manipuler une table
[Link](file, header = FALSE, sep = "",
quote = "\"’", dec = ".", numerals = c(...), Comme un tableau
[Link], [Link], — sympa[3,2] donne la case de troisième ligne et seconde
[Link] = !stringsAsFactors, [Link] = "NA", colonne
colClasses = NA, nrows = -1, skip = 0, — sympa["PAYS",] donne la ligne correspondant à PAYS
[Link] = TRUE, fill = ![Link], — sympa[1,], pareil (PAYS est la première ligne)
[Link] = FALSE, [Link] = TRUE, — sympa[1:3,2:4] donne le bloc composé des lignes 1
[Link] = "#", à 3 et des colonnes 2 à 4
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = FALSE,
1
Comme un enregistrement en utilisant $ pour accéder à
un champ
Partie II. Analyse de
— sympa$GENE donne la colonne correspondant à la co-
lonne GENE (sans les noms de ligne/colonnes)
données en R
Type de données connues de R Les outils disponibles
— réels, entiers, booléens (TRUE ou FALSE), caractères
(chaı̂ne) ou facteurs (valeurs qualitatives) Dans ce cours : ade4
— vecteur de ces variables : c(3,2, 1.5, FALSE) — disponible sur CRAN
— matrice à deux dimensions — développé à l’université Lyon I
matrix(c(1,2,3, 11,12,13), Autres possibilités
nrow=2, ncol=3, byrow=TRUE) — livré avec R : fonction prcomp pour l’ACP ou corresp
(du package MASS) pour l’AFC
Assez basique
1 2 3 — package FactoMineR : peut-être plus moderne
11 12 13
Utiliser ade4
Les classes en R
Installer le package à faire une seule fois
Principe L’objet sympa est de classe [Link]. Pour
toute fonction dont le premier argument est sympa, R exe- [Link]("ade4")
cute si possible fonction .[Link].
ou alors dans RStudio le menu « Tools ▷ Install Package ».
Example deux fonctions print
Charger le package là, plus besoin de guillemets
La fonction spécialisée
> print(sympa) require(ade4)
SERI GENE GAI HONN INTL SERV COUR COMP DISC TOTAL
PAYS 20 9 9 27 10 16 20 4 8 123 Concept central de ade4 Duality diagram (DUDI)
OUVR 42 10 22 51 18 28 38 12 22 243
VEND 11 2 5 14 8 7 5 8 6 66
COMM 8 9 12 23 14 16 14 12 12 120
EMPL 19 10 16 52 32 25 22 25 30 231 Faire une AFC
TECH 10 5 12 23 20 13 11 13 10 117
UNIV 2 8 7 6 15 6 6 9 4 63
LIBE 8 42 23 24 46 22 22 34 16 237
AFC COrrespondence Analysis
TOTAL 120 95 106 220 163 133 138 117 108 1200
[Link](df, scannf = TRUE, nf = 2)
La fonction utilisée est [Link]
La fonction par défaut Paramètres
— df : les données comme retournées par [Link]
> [Link](sympa)
$SERI (data frame)
[1] 20 42 11 8 19 10 2 8 120 — scannf : si vrai (TRUE ou T), affiche un graphique
$GENE
[1] 9 10 2 9 10 5 8 42 95 des valeurs propres et demande le nombre d’axes à
$GAI conserver
[1] 9 22 5 12 16 12 7 23 106
$HONN — nf : quand scannf=F, contient le nombre d’axes à
[1] 27 51 14 23 52 23 6 24 220 conserver
$INTL
[1] 10 18 8 14 32 20 15 46 163 Exemple typique
$SERV
[1] 16 28 7 16 25 13 6 22 133
$COUR coa1 <- [Link](mesdonnees, scannf = F, nf = 4)
[1] 20 38 5 14 22 11 6 22 138
$COMP L’objet coa1 a, entre autres champs
[1] 4 12 8 12 25 13 9 34 117
$DISC — coa1$eig : valeurs propres
[1] 8 22 6 12 30 10 4 16 108 — coa1$co, coa1$li : coordonnées des colonnes et des
$TOTAL
[1] 123 243 66 120 231 117 63 237 1200 lignes
attr(,"class") — coa1$cw, coa1$lw : poids des colonnes et des lignes
[1] "[Link]"
Les noms sont obtenus avec
> names(sympa) Faire une ACP
[1] "SERI" "GENE" "GAI" "HONN" "INTL" "SERV" "COUR"
[8] "COMP" "DISC" "TOTAL" ACP Principal Components Analysis
> rownames(sympa)
[1] "PAYS" "OUVR" "VEND" "COMM" "EMPL" "TECH" "UNIV"
[8] "LIBE" "TOTAL" [Link](df, row.w = rep(1, nrow(df))/nrow(df),
col.w = rep(1, ncol(df)),
center = TRUE, scale = TRUE,
scannf = TRUE, nf = 2)
2 Cours d’analyse de données — Jean-Marc Lasgouttes — année 2023-2024.
Paramètres comme l’AFC, avec en plus Données liées à l’inertie
— row.w, col.w : les poids des individus (mais aussi des
variables !) Commande de base calcul de l’inertie totale et autres
— center, scale : permet de faire une ACP non centrée
et/ou non réduite inert1 <- inertia(x, [Link] = FALSE,
[Link] = FALSE)
Exemple typique
— x : objet retourné par [Link]
pca1 <- [Link](mesdonnees, scannf = F, nf = 4)
— [Link] : calculs détaillés par ligne si TRUE
L’objet pca1 a les mêmes champs que pour l’AFC, plus, — [Link] : calculs détaillés par colonne si FALSE
mais co représente les corrélations des variables aux axes. Valeur retournée objet avec les champs
— [Link] : répartition de l’inertie entre les axes
Faire une ACM — [Link] : contribution des lignes aux axes
— [Link] : qualité de représentation des lignes par les
ACM c’est comme l’AFC, mais on peut donner des poids axes
aux individus — [Link] : qualité de représentation cumulée des lignes
par les sous-espaces
[Link](df, row.w = rep(1, nrow(df))/nrow(df), — et les mêmes avec [Link] pour les colonnes
scannf = TRUE, nf = 2)
Le tableau de Burt On l’a directement avec
[Link] (df1, df2, counts = rep(1, nrow(df1)))
Les variables supplémentaires qualitatives On peut uti-
liser la petite fonction [Link] qui est dans dans fonc-
tions.R
[Link](acm, suppl)
où acm est un objet retourné par [Link] et suppl est le
tableau de variables supplémentaires.
L’objet retourné contient les champs
— li : coordonnées des variables supplémentaires
— eff : effectifs des catégories supplémentaires
— [Link] : effectif total
— test : valeurs test des catégories supplémentaires
Des graphiques !
Les valeurs propres
barplot(coa1$eig)
La projection des individus on affiche les modalités de
colonne du premier plan avec
[Link](coa1$co)
et on ajoute les modalités de ligne avec
[Link](coa1$li, [Link]=T)
Paramètres [Link](x, xax=1, yax=2, [Link]=F,
...)
— x : la table qu’on veut représenter ($li ou $co)
— xax, yax : indice de l’axe principal en abscisse, ordon-
née
— [Link]=T indique que les nouveaux points seront
sur le graphe préexistant
Le cercle des corrélations pour l’ACP seulement, avec
[Link](pca1$co, xax=1, yax=2, ...)
Cours d’analyse de données — Jean-Marc Lasgouttes — année 2023-2024. 3