Vous êtes sur la page 1sur 38

UNIVERSITÉ SULTAN MOULAY SLIMANE

Ecole Nationale des Sceinces Appliquées


Béni Mellal

F.Ing : Transformation Digitale INDUSTRIELLE

Support de Travaux Pratiques

Analyse de Données en R

Auteur :
Mohamed GOUSKIR

m.gouskir@usms.ma

Année Universitaire : 2022-2023


ii
Table des matières

Avant propos v

Introduction 1

1 Initiation à R 3
1. Les premiers pas sous R . . . . . . . . . . . . . . . . . . . . . 3
2. Simulation aléatoire . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Descriptions empiriques . . . . . . . . . . . . . . . . . . . . . 5
4. Lecture de données contenues dans un fichier . . . . . . . . . . 6
5. Questions et exercices . . . . . . . . . . . . . . . . . . . . . . . 7
6. Premiers pas dans Rcmdr . . . . . . . . . . . . . . . . . . . . 8

2 Régression Linéaire et Analyse de Variance 9


Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1. Régression linéaire simple : les données de Galton . . . . . . . 9
2. Régression Linéaire Multiple . . . . . . . . . . . . . . . . . . . 11
3. Analyse de variance à un facteur . . . . . . . . . . . . . . . . 12

3 Analyse en Composantes Principales 15


Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1. Fichier de données . . . . . . . . . . . . . . . . . . . . . . . . 15
2. Procédure PRINCOMP . . . . . . . . . . . . . . . . . . . . . . 16

iii
Table des matières

4 Analyse Factorielle des Correspondances 21


Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1. Analyse Factorielle des Correspondances Simple-AFC . . . . . 21
1.1. Objectif de l’étude . . . . . . . . . . . . . . . . . . . . 21
1.2. But : . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.3. Fichier de données . . . . . . . . . . . . . . . . . . . . 22
1.4. AFC via le package FactoMineR . . . . . . . . . . . . . 23
2. Analyse Factorielle des Correspondances Miltiple-AFCM . . . 24
2.1. Objectif de l’étude : L’exemple des races canines . . . . 24
2.2. But : . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3. Fichier de données . . . . . . . . . . . . . . . . . . . . 25
2.4. La procédure MCA de FactoMineR . . . . . . . . . . . 26
2.5. Informations sur les individus . . . . . . . . . . . . . . 27
2.6. Informations sur les points modalités . . . . . . . . . . 27
2.7. Les graphiques proposés par MCA . . . . . . . . . . . 28
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5 Classification automatique 29
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1. Traitements réalisés . . . . . . . . . . . . . . . . . . . . . . . . 29
2. Classification Hiérarchique Ascendante . . . . . . . . . . . . . 29
2.1. DONNÉES . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2. La procédure hclust() de R . . . . . . . . . . . . . . . 30
2.3. Découpage en classes . . . . . . . . . . . . . . . . . . . 31
3. K-means . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Bibliographie 33

iv
Avant propos

Ce polycopie propose de découvrir comment faire pour se mettre à l’ana-


lyse des données issues d’un tableau de données, en vous aidant d’accéder
à des méthodes et algorithmes de l’analyse de données très utilisées. Vous
apprendrez notamment à réaliser simplement et rapidement quatre méthodes
d’Analyse de données parmi celles contenues dans le logiciel R : commencent
par la statistique élementaire, les méthodes linéaires et des méthodes explora-
toire à savoir l’analyse en composantes principales (ACP), l’analyse factorielle
des correspondances (AFC) et une Classification Hiérarchique Ascendante
(CAH). Vous apprendrez également à visualiser vos données très simplement
de différentes façons avec toute la puissance du logiciel R.

v
INTRODUCTION

Les TP seront illustrés à l’aide du logiciel R, version libre du logiciel S-


plus. Ce logiciel développé par des statisticiens pour des statisticiens est par-
ticulièrement bien adapté à l’analyse statistique descriptive, inférentielle et
exploratoire. Pour faciliter son utilisation, nous utilisons une interface appelé
R commander. Pour l’analyse factorielle nous recommandons l’usage de ade4
développé par l’université de Lyon.

L’apprentissage de ce logiciel R est sans doute plus délicat que les logiciels
commerciaux mais permet à tous de disposer d’un outil gratuit, très perfor-
mant, en perpétuelle évolution, exploitable dans toutes les circonstances et
permettant à l’utilisateur une totale liberté dans ses choix d’analyse.

Le système R est un logiciel distribué gratuitement depuis le site :

http ://www.r-project.org

Le système R fournit un environnement intégrant un grand nombre de


fonctionnalités statistiques et graphiques qui en font un outil particulièrement
adapté au traitement et à l’analyse des données.

Un fichier executable permettant l’installation rapide de R sous Windows


peut être télechargé depuis le site http ://cran.us.r-project.org/bin/windows/base/

– Ouvrez une session sous Windows.

1
INTRODUCTION

– Lancez le logiciel R.

– Essayez les commandes ci-après. Ne vous contentez pas à un


simple copier-coller des commandes. Cherchez absolument à com-
prendre chacune des commandes utilisées. Si vous avez des doutes,
n’hésitez pas à solliciter l’aide de l’enseignant.

2
TP 1

INITIATION À R

1. Les premiers pas sous R

1. Faire quelques essais :


pi*sqrt(10)+exp(4)
3 :10
seq(3,10)
x = c(2,3,5,7,2,1)
y = c(10,15,12)
z = c(x,y)
z2
x*x
w=rep(x,3)
w=rep(x, each=3)
?rep : Aide
ls() : liste des variables saisies
rm(x)
x
ls()

2. Pour mieux connaı̂tre R :


?help
help(rep)

3
TP 1. INITIATION À R

help(demo)
demo(graphics)

3. Passons aux matrices :


x = 1 :12
dim(x) = c(3,4)
?dim
x
y = matrix(1 :12, nrow=3, byrow=T)
t(y)
z = matrix(1 :4, nrow=2, byrow=T)
z2̂
z*z
z%*%z

4. Graphique :

x = runif(50, 0, 2)
y = runif(50, 0, 2)
plot(x, y, main=”Titre”, xlab=”abscisse”,
ylab=”ordonnée”,col=”darkred”)
abline(h=.6,v=.6)
text(.6,.6, ”placer un commentaire”)
colors()

5. Gestion de la fenêtre graphique :


Toute commande graphique ouvre une fenêtre adaptée mais
x11() : ouvre une autre fenêtre pour éviter d’écraser le graphe précédent,
dev.off() : ferme correctement la dernière fenêtre,
split.screen(c(1,2)) : partage la fenêtre en 2 de même que l’option
mfrow de la commande par.

4
TP 1. INITIATION À R

2. Simulation aléatoire
Dans les approches de modélisation, il est souvent utile de générer artifi-
ciellement des nombres (pseudo-)aléatoires.

1. Effectuer les essais suivants :


rnorm(10) génère 10 réalisations de la loi N(0,1)
rnorm(10)
rnorm(10)
plot(rnorm(100))
rbinom(10, size=20, prob=.5)
rcauchy(10)
runif(10, min=0, max=1)
sample(1 :40, 5)
sample(1 :10, 10, replace=T)
sample(c(”echec”, ”succes”), 10, replace=T, prob=c(0.7, 0.3))
2. Voici les loi les plus utilisées dont les tables statistiques sont intégrées
dans R : beta, binom, cauchy, chisq, exp, f, gamma, norm, pois, t, unif.

3. Descriptions empiriques
1. Statistique d’ordre :
x = rnorm(10) (Echantillon i.i.d.)
y = sort(x) (Statistique d’ordre)
2. Fonction de répartition empirique :
x = rnorm(100)
n=length(x)
plot(sort(x), 1 :n/n, type=”s”, ylim=c(0,1), xlab=””, ylab=””)
?pnorm
curve(pnorm(x,0,1), add=T, col=”blue”)

3. Histogramme :
x = rnorm(100)
hist(x, breaks=20)

5
TP 1. INITIATION À R

hist(x, breaks=20, freq=F, col=”cyan”)


curve(dnorm(x), add=T,col=”darkblue”)
x = rnorm(50)
h = hist(x, plot=F)
h$breaks
h$counts
?hist
4. Boxplot :
x = rnorm(100)
y = (rnorm(400))2−1
z= rnorm(50)3
par(bg=”lightcyan”)
boxplot(x,y,z,col=c(”blue”,”white”,”red”),
border=c(”black”,”darkblue”),lwd=1.5)
5. QQ-plots :
x = rnorm(100)
y = (rnorm(400))2−1
z = rnorm(200,m=4,sd=5)
par(bg=”lightcyan”,mfrow=c(2,2))
qqplot(x,y,pch=21,bg=”red”,fg=”darkblue”,lwd=2)
qqplot(x,z,pch=21,bg=”red”,fg=”darkblue”,lwd=2)
qqnorm(y,pch=21,bg=”orange”,fg=”darkblue”,lwd=2)
qqline(y,pch=21,col=”blue”,lwd=2)
qqnorm(z,pch=21,bg=”orange”,fg=”darkblue”,lwd=2)
qqline(z,pch=21,col=”blue”,lwd=2)

4. Lecture de données contenues dans un fichier

1. Les jeux de données sont généralement stockés dans des fichiers externes.
La commande read. Table permet de lire ce type de données. Pour tester
cette commande
— Placez le fichier, contenant les données, dans votre répertoire de tra-
vail

6
TP 1. INITIATION À R

— Saisissez les commandes


Donnees = read.table(”AirQuality.data”) ♯ lire les données
summary(Donnees) ♯ résumer les données
hist(Donnees$Ozone, col=”gold”) ♯ histogramme de la va-
riable Ozone
attach(Donnes) ♯ permet d ommettre le nom du jeu de
données
hist(Ozone, freq=F, col=”gold”)
detach(Donnees)
hist(Ozone,freq=F,col=”gold”) ♯ erreur !

5. Questions et exercices

1. Produire des descriptions statistiques (moyenne,écart-type, médiane,


min, max,. . .) des données réelles :
library(MASS)
data(geyser)
attach(geyser)
help(geyser)
On pourra utiliser la commande summary ainsi que les commandes
graphiques présentées précédemment (histogramme, fonction de répartition).

2. Commenter les boxplots. Laquelle des trois séries de données (a) est
la plus dipersée ? (b) contient le plus grand nombre d’outliers (valeurs
aberrantes) ?

3. Les données suivantes représentent les charges maximales (en tonnes)


supportées par des câbles que fabrique une certaine usine :

10.1 12.2 9.3 12.4 13.7 10.8 11.6 10.1 11.2 11.3
12.2 12.6 11.5 9.2 14.2 11.1 13.3 11.8 7.1 10.5
a. Quelle est approximativement la valeur de la charge que les trois
quarts des câbles peuvent supporter ?

7
TP 1. INITIATION À R

b. Tracer le boxplot de ces données. Y a-t-il des valeurs aberrantes ?


Dans ce diagramme, où visualise-t-on la valeur déterminée au point
(a) ?
c. D’après le boxplot, la répartition de ces données semble-t-elle être
symétrique ou pas ?

6. Premiers pas dans Rcmdr


Démarrez R et lancez Rcmdr par la commanande : > library(Rcmdr)

Vous verrez s’afficher une fenêtre similaire a celle de la figure ??. Nous
voulons maintenant travailler avec les données. La première chose à faire est
donc de dire à R dans quel répertoire se trouve le fichier des données que
vous avez préparé ci-dessus. Cliquez dans Rcmdr sur le menu Données − >
Importer des données − > depuis un fichier texte ..... donnez un nom
au tableau à importer (par exemple Data) et vérifiez que la case Noms de
variables dans le fichier est cochée (c’est comme ça qu’on a préparé les
données, la première ligne contient les noms des colonne).

8
TP 2

RÉGRESSION LINÉAIRE ET ANALYSE DE VARIANCE

Introduction

Rappelons que dans une régression linéaire multiple on cherche à prédire/expliquer


une variable réponse à l’aide de p variables explicatives. Le but de sélection
de modèle est de réduire au maximum l’ensemble des variables explicatives
tout en préservant la qualité prédictive/explicative du modèle.

NB : Il est inutile de se dépêcher de taper les commandes du TP en vitesse


(et de prendre une avance artificielle sans rien comprendre à leur signification
... surtout pour ceux qui ne viennent qu’irrégulièrement en cours). Replacez
ce TP dans le cadre de ce que vous connaissez déjà de R et du cours.

1. Régression linéaire simple : les données de Galton

On se proposemaintenant d’utiliser lemodèle de régression simple pour ana-


lyser les données des tailles utilisées par Galton.

1. Charger les données :


library(UsingR)
data(galton)
attach(galton)
2. Afficher les histogrammes des variables parent et child pour avoir une

9
TP 2. RÉGRESSION LINÉAIRE ET ANALYSE DE VARIANCE

idée de la façon dont elles sont réparties.


3. Déterminer les moyennes et les écart-types des variables parent et child.

La commande lm permet d’effectuer une régression linéaire multiple.


La syntaxe générale est :
fit=lm( formule , jeu de données , options )
Pour afficher l’aide sur ce package utiliser ?lm
4. Effectuer une régression linéaire :
LinReg=lm(child parent)
plot(parent,child,bg=”red”)
abline(LinReg, lwd=3, col=”blue”)
summary(LinReg)
En déduire les estimateurs des valeurs de β0 et de β1 tels que :

child = β0 + β1 · parent + ϵ. (2.1)

Quelle est la valeur estimée de la variance des erreurs ϵ ?


5. La valeur estimée de β1 confirme-t-elle la loi héréditaire proposée et
défendue par Galton ?
6. Au vu de la valeur du coefficient de détermination R2 , discuter de la
qualité prédictive du modèle linéaire ??.
7. La théorie de Galton a été étudiée de façon plus détaillée par Karl Pear-
son (1857–1936), l’un des fondateurs de la statistique mathématique. Il
a fait des statistiques sur un échantillon plus grand. Ces données se
trouvent dans le fichier father.son :
library(UsingR)
data(father.son)
names(father.son)
par(bg=”cornsilk”,pch=21)
plot(father.son,bg=”red”)
Tracer l’histogramme des résidus standardisés et le superposer avec la
courbe de la densité de la loi gaussienne centrée réduite.
Utilisez Rcmdr pour analyser la régression linéaire simple et interpreter les
résultats.

10
TP 2. RÉGRESSION LINÉAIRE ET ANALYSE DE VARIANCE

2. Régression Linéaire Multiple


Au debut du 17ème siècle, Galilei a effectué un certain nombre d’expériences
visant à étudier les lois physiques décrivant le mouvement d’un corps dans des
différentes conditions. Une de ces expériences consistait à mesurer la distance
horizontale parcourue par un objet placé à différentes hauteurs sur un plan
incliné, ce dernier se trouvant à une hauteur de 500 punti du sol (un punto
correspond à 169/180 millimètre).

Figure 2.1 – Le modèle de Galilei

1. Commencer par charger et afficher les données :


library(UsingR)
data(galileo)
g2=galileo$init.h-500
g1=galileo$h.d
par(bg=’cornsilk’)
plot(g1, g2, pch=20, col=”red”, cex=2, ylim=c(0,1000))

Au vu du nuage des points obtenu, est-il raisonnable de chercher une


relation affine entre les variables h.d et init.h ?
2. On cherche à déterminer init.h en fonction de h.d
Pour illustrer l’importance de la sélection de modèle, supposons que
seuls les 4 premières observations sont disponibles. Nous allons examiner
deux façons de déterminer une fonction f telle que init.h ≈ f (h.d) et,
ensuite, nous comparerons la qualité prédictive de ces deux fonctions
sur les 3 observations restantes.
a. On cherche d’abord un ajustement quadratique : f (x) = ax2 +bx+c.
Pour cela, on effectue une régression de h.d sur le vecteur (init.h,

11
TP 2. RÉGRESSION LINÉAIRE ET ANALYSE DE VARIANCE

init.h ⋏ 2).
f1=g1[1 :4]
f2=g2[1 :4]
LinReg1=lm(f2 ∼ f1+I(f1 ⋏ 2))
summary(LinReg1)
♦ Quelles sont les valeurs estimées des paramètres a, b et c ?
♦ Que vaut le coefficient de détermination ?
b. On cherche ensuite un ajustement par une fonction f qui s’écrit
comme f (x) = ax2 + bx + c + dexp(x/20).
LinReg2=lm(f2 ∼ f1+I(f1 ⋏ 2)+I(exp(f1/20)))
summary(LinReg2)
♦ Quelles sont les valeurs estimées des paramètres a, b, c et d ?
♦ Que vaut le coefficient de détermination ?

On constatera que le coefficient de détermination estmeilleur que


pour l’ajustement quadratique. Cela implique-t-il que la deuxième
fonction trouvée est meilleure que la première ?
c. Pour mieux répondre à la question précédente, on calcule et affiche
les prédictions fournies par chacune des deux fonctions :
t=(2500 :6000)/10
new=data.frame(f1=t)
pred1=predict(LinReg1, new, interval =”none”)
pred2=predict(LinReg2, new, interval =”none”)
par(bg=’cornsilk’)
plot(g1,g2,pch = 20,col=”black”,cex=2,ylim=c(0,1000))
points(t,pred1,pch = 20,col=”blue”,cex=0.2)
points(t,pred2,pch = 20,col=”red”,cex=0.2)
♦ Quelle est votre conclusion ?

3. Analyse de variance à un facteur

Nous allons effectuer une analyse de variance à un facteur sur les données
de qualité d’air de New York contenues dans airquality.

12
TP 2. RÉGRESSION LINÉAIRE ET ANALYSE DE VARIANCE

1. Commençons par charger les données :


data(airquality)
help(airquality)
D=airquality
summary(D)
par(bg=’cornsilk’,col=’red’)
plot(D,pch=19)
Nous voulons d’abord déterminer si les variations de la concentration
d’ozone d’un mois à l’autre ont été significatives ou pas. Pour cela, on
effectue une ANOVA à un facteur en considérant la variable Month
comme variable qualitative :
LR = lm(Ozone ∼ as.factor(Month), data=D)
anova(LR)
♦ Quel est le role de l’instruction as.factor ?
♦ Peut-on affirmer au seuil de 5% que la concentration d’ozone n’a pas
varié au fil des mois ?
2. Nous voulons maintenant savoir si le jour du mois a une influence sur
la concentration d’ozone ou pas.
Ecrire les instructions nécessaires pour répondre à la question ci-dessus.
3. Nous voulons Maintenant faire une anlyse de variance sur l’experience
de competition chez des plantes. Commencer à charger le fichier de
donner et realisez une ANOVA.
> results< −read.table(”compet.txt”,header=T)
> results
> plot(biomass clipping, data=results)
écriture du modèle
lm(variable à expliquer ∼ variable(s) explicative(s), ...)
model< −lm(biomass clipping)
model< −aov(biomass clipping)
summary(model)

13
TP 2. RÉGRESSION LINÉAIRE ET ANALYSE DE VARIANCE

14
TP 3
ANALYSE EN COMPOSANTES PRINCIPALES

Introduction
Traitements à réaliser
— Réaliser une ACP sur un fichier de données.
— Afficher les valeurs propres. Construire le graphiques éboulis des valeurs
propres.
— Construire le cercle de corrélations.
— Projeter les observations dans le premier plan factoriel.
— Positionner des variables illustratives quantitatives dans le cercle des
corrélations.
— Positionner les modalités d’une variable illustrative catégorielle.
— Positionner des observations illustratives.
Individus actifs (Données disponibles)

1. Fichier de données
Importation, statistiques descriptives et graphiques
library(xlsReadWrite)
- changement de répertoire
setwd(”lien du fichier”)
- chargement des données dans la première feuille de calcul
- première colonne = label des observations
- les données sont dans la première feuille

15
TP 3. ANALYSE EN COMPOSANTES PRINCIPALES

autos < − read.xls(file=”autos acp pour r · xls”,rowNames=T,sheet=1)


- qqs vérifications - affichage
print(autos)
- statistiques descriptives
summary(autos)
- nuages de points
pairs(autos)

♢ Interpreter le nuage du points obtenu


- partition des données (var. actives et illustratives)
autos.actifs < − autos[,1 :6]
autos.illus < − autos[,7 :9]
- nombre d’observations
n < − nrow(autos.actifs)
print(n)

2. Procédure PRINCOMP

1- Utiliser la procédure ≪ princomp ≫ pour obtenir les résultats d’ACP

16
TP 3. ANALYSE EN COMPOSANTES PRINCIPALES

- centrage et réduction des données → cor = T


- calcul des coordonnées factorielles → scores = T
acp.autos < − princomp(autos.actifs, cor = T, scores = T)
- print
print(acp.autos)
- summary
print(summary(acp.autos))
- quelles les propriétés associées à l’objet ?
print(attributes(acp.autos))

PRINCOMP fournit les écarts-types associés aux axes. Le carré corres-


pond aux variances = valeur propres. Nous avons également le pourcentage
cumulé. Avec ATTRIBUTES, nous avons la liste des informations que nous
pourrons exploiter par la suite.
2- Valeurs propres associés aux axes

- obtenir les variances associées aux axes c.-à-d. les valeurs propres
val.propres < − acp.autos$sdev2̂
print(val.propres)
- scree plot (graphique des éboulis des valeurs propres)
plot(1 :6,val.propres,type=”b”,ylab=”Valeurs propres”,
xlab=”Composante”,main=”Scree plot”)
- intervalle de confiance des val.propres à 95%
val.basse < −val.propres * exp(-1.96 * sqrt(2.0/(n-1)))
val.haute < − val.propres * exp(+1.96 * sqrt(2.0/(n-1)))
- affichage sous forme de tableau
tableau < − cbind(val.basse,val.propres,val.haute)
colnames(tableau) < − c(”B.Inf.”,”Val.”,”B.Sup”)
print(tableau,digits=3)

3- Cercle des corrélations

- corrélation variables-facteurs
c1 < − acp.autos$loadings[,1]*acp.autos$sdev[1]

17
TP 3. ANALYSE EN COMPOSANTES PRINCIPALES

c2 < − acp.autos$loadings[,2]*acp.autos$sdev[2]
- affichage
correlation < − cbind(c1,c2)
print(correlation,digits=2)
- carrés de la corrélation (cosinus)
print(correlation2̂,digits=2)
- cumul carrés de la corrélation
print(t(apply(correlation2̂,1,cumsum)),digits=2)
- *** cercle des corrélations - variables actives ***
plot(c1,c2,xlim=c(-1,+1),ylim=c(-1,+1),type=”n”)
abline(h=0,v=0)
text(c1,c2,labels=colnames(autos.actifs),cex=0.5)
symbols(0,0,circles=1,inches=F,add=T)

4- Carte des individus sur les 2 premiers axes

- l’option ”scores” demandé dans princomp est très important ici


plot(acp.autos$scores[,1],acp.autos$scores[,2],type=”n”,
xlab=”Comp.1 - 74%”,ylab=”Comp.2 - 14%”)
abline(h=0,v=0)
text(acp.autos$scores[,1],acp.autos$scores[,2],
labels=rownames(autos.actifs),cex=0.75)

5- Carte des individus et des variables

Individus actifs et variables actives


- *** représentation simultanée : individus x variables
biplot(acp.autos,cex=0.75)

6- CONTRIBUTION des individus aux composantes

Déterminer les individus qui pèsent le plus dans la définition d’une com-
posante
- contributions à une composante - calcul pour les 2 premières composantes

18
TP 3. ANALYSE EN COMPOSANTES PRINCIPALES

all.ctr < − NULL


for (k in 1 :2){all.ctr < − cbind(all.ctr,100.0*(1.0/n)*
(acp.autos$scores[, k]2 )/(acp.autos$sdev[k]2 ))}
print(all.ctr)

7- Variables quantitatives illustratives

Positionnement dans le cercle des corrélations

- corrélation de chaque var. illustrative avec le premier axe


ma cor 1 < − function(x){return(cor(x,acp.autos$scores[,1]))}
s1 < − sapply(autos.illus[,2 :3],ma cor 1)
- corrélation de chaque variable illustrative avec le second axe
ma cor 2 < − function(x){return(cor(x,acp.autos$scores[,2]))}
s2 < − sapply(autos.illus[,2 :3],ma cor 2)
- position sur le cercle plot(s1,s2,xlim=c(-1,+1),ylim=c(-1,+1),type=”n”,
main=”Variables illustratives”,xlab=”Comp.1”,ylab=”Comp.2”)
abline(h=0,v=0)
text(s1,s2,labels=colnames(autos.illus[2 :3]),cex=1.0)
symbols(0,0,circles=1,inches=F,add=T)
- représentation simultanée (avec les variables actives)
plot(c(c1,s1),c(c2,s2),xlim=c(-1,+1),ylim=c(-1,+1),type=”n”,
main=”Variables illustratives”,xlab=”Comp.1”,ylab=”Comp.2”)
text(c1,c2,labels=colnames(autos.actifs),cex=0.5)
text(s1,s2,labels=colnames(autos.illus[2 :3]),cex=0.75,col=”red”)
abline(h=0,v=0)
symbols(0,0,circles=1,inches=F,add=T)

NB : Interpréter les résultats obtenus dans chaque étape ci-dessous

19
TP 3. ANALYSE EN COMPOSANTES PRINCIPALES

20
TP 4
ANALYSE FACTORIELLE DES CORRESPONDANCES

Introduction

Analyse Factorielle des Correspondances sert à déterminer les éléments


structurant les données (axes de projection) et à réduire les dimensions de l’es-
pace de représentation des données (sélection des p premiers axes). Sur les
données représentées sur un tableaux de contingence, tableaux de variables
continues (valeurs > 0), tableaux logiques (présence-absence), etc ... . Deux
méthodes de l’AFC :
— AFC : Analyse factorielle des correspondances simples pour un
ensemble homogène de valeurs assimilable à un tableau de contingence
entre 2 variables.
— AFCM : Analyse factorielle des correspondances multiples pour
un tableau de modalités de q (q > 2) variables qualitatives ou un en-
semble non homogène de données.

1. Analyse Factorielle des Correspondances Simple-AFC

1.1. Objectif de l’étude

Ce tutoriel reproduit sous le logiciel R, l’analyse menée dans l’ouvrage de


Lebart et al., pages 103 à 107. Les justifications théoriques et les formules
sont disponibles dans le même ouvrage, pages 67 à 103.

21
TP 4. ANALYSE FACTORIELLE DES CORRESPONDANCES

Les mêmes calculs ont été reproduits dans Tanagra. D’autres packages de
R peuvent réaliser également une AFC, nous avons choisi FactorMineR pour
sa simplicité et son adéquation avec les sorties usuelles des logiciels qui font
référence (et que l’on retrouve dans notre ouvrage ci-dessus).

1.2. But :

— Réaliser une AFC sur un fichier de données.


— Afficher les valeurs propres. Construire le graphiques éboulis des valeurs
propres.
— Calculer les coordonnées factorielles, les cos2 et les contributions des
points lignes
— Calculer les coordonnées factorielles, les cos2 et les contributions des
points colonnes
— Projeter les points dans le premier plan factoriel (représentation simul-
tanée)

1.3. Fichier de données

Importation des données, valeurs et profils

#chargement des données


importer le fichier file=”media prof afc.xls” et sous le nom media

22
TP 4. ANALYSE FACTORIELLE DES CORRESPONDANCES

print(media)

#fonction : calcul du profil


profil < − function(x)x/sum(x)*100

#profil ligne
prof.ligne < − t(apply(media,1,profil)) print(round(prof.ligne,1))

#profil colonne
prof.colonne < −apply(media,2,profil)
print(round(prof.colonne,1))

♢ Interpreter les profiles ligne et colonne

1.4. AFC via le package FactoMineR

a. Calculs et quelques statistiques

#charger le package
library(FactoMineR)

#lancer l’AFC
media.afc < − CA(media,ncp=2,graph=FALSE)

#liste des objets disponibles


print(attributes(media.afc))

#quelques statistiques sur le tableau de données


print(media.afc$call)

♢ Interpreter la distribution marginale par colonne et par ligne

b. Valeurs propres et Scree plot

23
TP 4. ANALYSE FACTORIELLE DES CORRESPONDANCES

#tableau des valeurs propres et Scree plot


print(media.afc$eig)
plot(media.afc$eig[,1],type=”b”,main=”Scree plot”)

♢ Expliquer la figure obtenue

c. Coordonnées, cosinus2 et contributions des lignes

#coordonnées, contributions et cos2 - lignes


print(media.afc$row)

♢ Interpreter la contribution des modalitées sur les axes facto-


riels
#coordonnées, contributions et cos2 - colonnes
print(media.afc$col)

♢ Interpreter la contribution des modalitées sur les axes facto-


riels

d. Représentation simultanée dans le 1er plan factoriel

#graphique

plot(media.afc,cex=0.75)

♢ Interpreter le graphique (biplot) obtenu

2. Analyse Factorielle des Correspondances Miltiple-


AFCM
2.1. Objectif de l’étude : L’exemple des races canines

Ce tutoriel reproduit sous le logiciel R, l’analyse menée dans l’ouvrage de


Tenenhaus, pages 266 à 276. Les justifications théoriques et les formules sont

24
TP 4. ANALYSE FACTORIELLE DES CORRESPONDANCES

disponibles dans le même ouvrage, pages 253 à 264.

Les mêmes calculs ont été reproduits dans Tanagra. D’autres packages de
R peuvent réaliser également une AFCM (ou ACM –Analyse des correspon-
dances multiples), nous avons choisi FactorMineR pour sa simplicité et son
adéquation avec les sorties usuelles des logiciels qui font référence (et que l’on
retrouve dans notre ouvrage ci-dessus).

2.2. But :

— Réaliser une AFCM (ACM) sur un fichier de données.


— Afficher les valeurs propres. Construire le graphiques éboulis des valeurs
propres.
— Calculer les coordonnées factorielles, les cos2 et les contributions des
individus
— Calculer les coordonnées factorielles, les cos2 et les contributions des
points modalités
— Projeter les points dans le premier plan factoriel (représentation pseudo-
barycentrique)
— Projeter les points dans le premier plan factoriel (représentation bary-
centrique)
— Positionner les modalités d’une variable illustrative qualitative
— Commenter les autres sorties/graphiques produits par la procédure MCA
de FactoMineR

2.3. Fichier de données

Importation, statistiques descriptives et graphiques


#statistiques descriptives
summary(canines)
#distribution de fréquences (graphique) des variables actives
par(mfrow=c(2,3))
for (j in 1 :6)plot(canines[,j],main=colnames(canines)[j])
layout(1)

25
TP 4. ANALYSE FACTORIELLE DES CORRESPONDANCES

Figure 4.1 – chien : Label des observations, Taille ... Agressivite : Variables actives et
Fonction :Variable illustrative qualitative

2.4. La procédure MCA de FactoMineR

#charger le package
library(FactoMineR)

#lancer l’ACM
#voir l’aide pour plus de détails sur les options
#notamment -¿ ind. supplémentaires, var. quanti. supplémentaires
canines.acm < − MCA(canines,ncp=2,quali.sup=c(7),graph=F)
print(canines.acm)

#les valeurs propres


print(canines.acm$eig)

#scree plot
plot(canines.acm$eig[,1],type=”b”,main=”Scree plot”)

26
TP 4. ANALYSE FACTORIELLE DES CORRESPONDANCES

2.5. Informations sur les individus

#coordonnées, cos2 et contribution des individus


individus < − cbind(canines.acm$ind$coord, canines.acm$ind$cos2,
canines.acm$ind$contrib)
colnames(individus) < − c(”Coord.1”,”Coord.2”, ”COS2.1”, ”COS2.2”,
”CTR.1”, ”CTR.2”)
print(round(individus,2))

#graphique associé
plot(individus[,1],individus[,2],main=”Projection des observations”,
xlab=”Comp.1”,ylab=”Comp.2”,type=”n”)
abline(h=0,v=0)
text(individus[,1],individus[,2],labels=rownames(individus),cex=0.75)

2.6. Informations sur les points modalités

#coordonnées, cos2 et contribution des modalités


modalites < − cbind(canines.acm$var$coord, canines.acm$var$cos2,
canines.acm$var$contrib, canines.acm$var$v.test)
colnames(modalites) < − c(”Comp.1”,”Comp.2”, ”COS2.1”,”COS2.2”,
”CTR.1”,”CTR.2”,”VT.1”,”VT.2”)
print(round(modalites,2))

#graphique associé
plot(modalites[,1],modalites[,2], main=”Projection des modalités”,
xlab=”Comp.1”, ylab=”Comp.2”,type=”n”)
abline(h=0,v=0)
text(modalites[,1],modalites[,2], labels=rownames(modalites), cex=0.75)

27
TP 4. ANALYSE FACTORIELLE DES CORRESPONDANCES

2.7. Les graphiques proposés par MCA

#graphiques automatiques de MCA


plot(canines.acm,cex=0.75,choix=”ind”)
plot(canines.acm,cex=0.75,choix=”var”)
Représentation barycentrique de type (a)

c.-à-d. chaque point modalité est au barycentre des individus possédant cette
modalité
#composantes principales réduites pour les individus

f1etoile < − canines.acm$ind$coord[,1]/sqrt(canines.acm$eig[1,1])


f2etoile < − canines.acm$ind$coord[,2]/sqrt(canines.acm$eig[2,1])

#composantes principales non modifiées pour les modalités


g1 < − canines.acm$var$coord[,1]
g2 < − canines.acm$var$coord[,2]

#graphique
plot(c(f1etoile,g1),c(f2etoile,g2), type=”n”, main=”Représentation
barycentrique de type (a)”)
abline(h=0,v=0)
text(f1etoile,f2etoile,labels=names(f1etoile),cex=0.5)
text(g1,g2,labels=names(g1),cex=0.5,col=”red”)

Conclusion

28
TP 5
CLASSIFICATION AUTOMATIQUE

Introduction

Ce document retranscrit une démarche de classification automatique d’un


ensemble de fromages (29 observations) décrits par leurs propriétés nutritives
(ex. protéines, lipides, etc. ; 9 variables). L’objectif est d’identifier des groupes
de fromages homogènes, partageant des caractéristiques similaires.
Nous utiliserons essentiellement deux approches en nous appuyant sur deux
procédures du logiciel R : la classification ascendante hiérarchique (CAH) avec
hclust() ; la méthode des centres mobiles (k-means) avec kmeans().

1. Traitements réalisés

ˆ Chargement et description des données


ˆ Classification automatique avec hclust() et kmeans()
ˆ Pistes pour la détection du nombre adéquat de classes
ˆ Description – interprétation des groupes

2. Classification Hiérarchique Ascendante

2.1. DONNÉES

#modifier le répertoire par défaut


setwd(” . . . mon dossier . . . ”)

29
TP 5. CLASSIFICATION AUTOMATIQUE

#charger les données - attention aux options



fromage < − read.table(file=”fromage.txt”, header=T, sep=””,dec=”.”)
#afficher les 6 premières lignes
print(head(fromage))
#stat. descriptives
print(summary(fromage))
#graphique - croisement deux à deux
pairs(fromage)

2.2. La procédure hclust() de R

#centrage réduction des données


#pour éviter que variables à forte variance prèsent indûment sur les résultats
fromage.cr < − scale(fromage,center=T,scale=T)
#matrice des distances entre individus
d.fromage < − dist(fromage.cr)
#CAH - critère de Ward, method = ≪ ward.D2 ≫ correspond au vrai critère
de Ward
#utilisant le carré de la distance
cah.ward < − hclust(d.fromage,method=”ward.D2”)
#affichage dendrogramme
plot(cah.ward)

30
TP 5. CLASSIFICATION AUTOMATIQUE

2.3. Découpage en classes

#dendrogramme avec matérialisation des groupes


rect.hclust(cah.ward,k=4)
#découpage en 4 groupes
groupes.cah < − cutree(cah.ward,k=4)
#liste des groupes
print(sort(groupes.cah))

3. K-means

31
TP 5. CLASSIFICATION AUTOMATIQUE

32
Bibliographie

33

Vous aimerez peut-être aussi