Vous êtes sur la page 1sur 31

I NSTITUT DE M ATHMATIQUES DE T OULOUSE

P LATEFORME DE B IOSTATISTIQUE

Plate

Analyse statistique des donnes


Dveloppement de mthodologie
Accompagnement au montage d
Formation au traitement et lan

La plateforme BioStatistique mutualise les com-


ptences des chercheurs en Mathmatiques et Les
Biologie pour ltude des donnes gnres par logi
la Biologie quantitative haut dbit. libr
Elle apporte une expertise et un accompagne- ww
ment pour lutilisation et le dveloppement de
mthodologies statistiques et logiciels appro-
pris. Ac
M
sc

Pour se donner un peuBioStatistique


d Plat efor me
Expertise
Les animateurs de la plateforme
ra
do
(tr
dveloppent leurs recherches en
Statistique applique dans le cadre de m
lInstitut de Mathmatiques de lUni- cu
versit de Toulouse (UMR CNRS 5219) Ve
ou dans lune des units de recherche au
des grands organismes (CNRS, INRA, do
INSERM) du grand Toulouse. Ils ont la
tous lexprience de linterdisciplina- An
rit entre Mathmatiques et Biologie. tra
an
D

Accs th
r
Les activits de la plateforme de
bi
BioStatistique sadressent en priorit
En
Dmarche Exemples lensemble des laboratoires de re-
Premier contact avec un animateur et d
Dveloppement en cours cherche et dveloppement publics et
dfinition dune stratgie. iss
S BASTIEN D JEAN Prsentation de la problmatique
biologique et de ses aspects non
ou ralisations.
Les animateurs scientifiques de la plate-
privs de Midi-Pyrnes. Dans le cadre
M
de nouveaux projets, la plateforme
confidentiels lors dun groupe de travail forme BioStatistique ont t impliqus d
donnant lieu une discussion ouverte. dans les projets suivants : pourra galement rpondre des
de
Conseils et aide lmentaires au ANR PNRA 2006-2009 Plastimpact besoins exprims par des laboratoires
traitement des donnes, co-encadrement
tude des impacts mtabolique et en- nationaux situs hors de la rgion
de projets ou stages par lun des
animateurs. docrinien de deux contaminants de la Midi-Pyrnes.
chane alimentaire issus de la plasturgie:
Dfinition dune stratgie (CDD, Thse,
le Bisphnol A et le DEHP (dithylhexyl
Post-Doc) et construction dun projet
phtalate). Projet port par lUnit INRA de
pour le dveloppement de mthodes
Pharmacologie-Toxicologie.
Partenaires
29 octobre 2008 statistiques et doutils logiciels
spcifiques au problme pos.
AgroBi 2006-2008

Mises jour et complments :Transcriptome vs protome


Mise en uvre du projet et animation
dune recherche pluridisciplinaire
impliquant les diffrents acteurs. Lobjectif est ltude des rgulations
traductionnelles par une approche de
math.univ-toulouse.fr/sdejean biologie intgrative chez Lactococcus lactis
Formation en partenariat avec des quipes du LISBP
(Laboratoire dIngnierie des Sytmes
Planification exprimentale et Biologiques et des Procds).
normalisation des donnes.
Analyse statistique exploratoire ANR 2005-2007 Micromega
(fouille de donnes), classification Modlisation des dynamiques microbien-
et hirarchisation des rsultats nes par systmes multi-agents adaptatifs
Modles explicatifs et tests multiples intgrant les donnes macroscopiques
(modle linaire, modle mixte). et molculaires. En partenariat avec des
Discrimination et estimation de modles quipes du LISBP et du LAAS.
prdictifs (slection de variables et ACI IMPbio 2004-2007
apprentissage).
Dveloppement dun environnement
ddi lanalyse statistique des donnes
dexpression (formations, site web, sup-
ports informatiques). Travail en colla-
boration avec des chercheurs du centre
design : www.aestetype.com

INRA de Toulouse (Station dAmlioration


Gntique des Animaux, Laboratoire
de Gntique Cellulaire, Laboratoire de
Institut de Mathmatiques de Toulouse UMR 5219 Universit de Toulouse et CNRS Pharmacologie Toxicologie).

Plateforme de Biostatistique Gnople Toulouse Midi-Pyrnes

Gnopole Toulouse Midi-Pyrnes www.genotoul.fr


Table des matires

1 Introduction 3
1.1 R ? ? ? ? ? ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Environnement de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.1 R sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.2 R sous Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Ligne de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Aide en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Principe du document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Initiation 7
2.1 Structures de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.1 Scalaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.2 Vecteur - vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.3 Matrice - matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.4 Tableau - array . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.5 list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.6 data.frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Entre / Sortie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 Importation dun jeu de donnes . . . . . . . . . . . . . . . . . . . 11
2.2.2 Exportation dobjets R . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.3 Liens avec un tableur . . . . . . . . . . . . . . . . . . . . . . . . . 12

3 Fonctions graphiques 14
3.1 Donnes qualitatives - Effectifs . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 Donnes quantitatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 Graphiques 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4 Vers la 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.5 Exportation de graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4 Programmation 20
4.1 Structure de contrle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2.1 Fonctions particulires .First() et .Last() . . . . . . . . . . 22

1
5 Un peu de statistique 23
5.1 Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.2 Tests statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.3 Statistique descriptive unidimensionnelle . . . . . . . . . . . . . . . . . . 25
5.4 Rgression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.5 Statistique descriptive multidimensionnelle . . . . . . . . . . . . . . . . . 27
5.5.1 Analyse en composantes principales . . . . . . . . . . . . . . . . . 27
5.5.2 Positionnement multidimensionnel . . . . . . . . . . . . . . . . . . 27
5.5.3 Classification hirarchique . . . . . . . . . . . . . . . . . . . . . . 29

2
Chapitre 1

Introduction

1.1 R??????
Extrait de la page daccueil "The Comprehensive R Archive Network" :

R is GNU S, a freely available language and environment for statistical computing


and graphics which provides a wide variety of statistical and graphical techniques :
linear and nonlinear modelling, statistical tests, time series analysis, classification,
clustering, etc. Please consult the R project homepage (www.r-project.org/)
for further information.
CRAN is a network of ftp and web servers around the world that store identical,
up-to-date, versions of code and documentation for R. Please use the CRAN mirror
nearest to you (cran.cict.fr) to minimize network load.

Dans les deux sites voqus ci-dessus, on trouvera toutes les ressources ncessaires
lutilisateur de R, dbutant ou expriment : fichiers dinstallation, mises jour, packages,
FAQ, newsletter, documentation...

www.r-project.org cran.cict.fr

3
1.2 Environnement de travail
1.2.1 R sous Windows
Les captures dcran prsentes dans ce document proviennent de la version 2.2.1 (d-
cembre 2005).
Une des premires choses faire consiste crer un environnement de travail afin de
pouvoir rcuprer le travail effectu lors dune session ultrieure. Dans le menu Fichier,
slectionner Sauver lenvironnement de travail... (Fig. 1.1) et placer le fi-
chier suffix par .RData dans le rpertoire de votre choix.

F IGURE 1.1 Sauvegarde de lenvironnement de travail.

La sauvegarde est renouveler chaque fois que cela semble ncessaire (aprs la cration
de nouvelles variables, avant le lancement dun gros calcul...) et surtout avant de quitter la
session de R. Attention, la sortie par Fichier > Sortir, rpondre oui au message
Sauver une image de la session ? (Fig. 1.2), sauvegarde lenvironnement de travail dans un
fichier .RData qui se trouve dans le rpertoire courant (par dfaut le rpertoire dinstallation
de R (C :/Program Files/R/R-2.2.1).

F IGURE 1.2 Sortie de R.

4
1.2.2 R sous Unix
lappel de commande Unix, il suffit de saisir la commande R pour entrer dans R.
Toutes les objets que vous crs dans R sont stocks dans un fichier .RData qui se cre
automatiquement dans le rpertoire courant. Ce fichier peut tre sauver tout moment par
la fonction save.image(). la sortie de R, un message propose deffectuer une dernire
fois la sauvegarde du fichier .RData.

1.3 Ligne de commande


Quel que soit le systme dexploitation, lutilisateur finit par se retrouver face un prompt
qui attend des commandes. On parle de logiciel fonctionnant en ligne de commande par
opposition un logiciel clic-bouton o la matrise de la souris suffit faire plein de
choses (et de btises...).
Une fonction est toujours appele avec ses paramtres entre parenthses. En labsence de
paramtres, lutilisateur doit quand mme saisir les parenthses (vides), faute de quoi, cest
le code de la fonction qui est list.
Le caractre # permet dinsrer un commentaire. Cest trs utile voire indispensable
lorsque lon crit des fonctions. Toute ligne prcde du caractre # nest pas interprte.

1.4 Aide en ligne


Laide en ligne est accessible de la mme faon par un appel la fonction help. Par
exemple, laide de la fonction plot est accessible par :
R > help(plot)
De manire gnrale, laide en ligne est compose des rubriques suivantes :
Description
Usage
Arguments
Details
Value
Note
Authors
Reference(s)
See also
Examples
Le nom de ces rubriques est suffisamment explicite pour dsigner ce quelle contient.
Pour un utilisateur non expriment, les deux dernires rubriques sont certainement les plus
utiles : See also permet dapprendre le nom de nouvelles fonctions en relation avec la
recherche initiale et Examples pemet de manipuler immdiatement, par copier-coller, toute
nouvelle fonction.
La fonction help.search() permet de rechercher dans laide en ligne les fonctions
en rapport avec un terme pass en paramtres. Pour tout savoir sur les fonctions en relation
avec le trac de graphiques, on pourra saisir :

5
R > help.search("plot")
Et pour comprendre comment fonctionne help.search(), on pourra bien entendu
entrer :
R > help(help.search) et mme
R > help(help) pour savoir comment utiliser la fonction help() !

1.5 Principe du document


Le document est organis de la faon suivante :
une succession de commandes saisir est donne. Chaque commande est mise en
vidence par une graphie particulire
R > ls()
La suite dune commande sur la ligne suivante est identifie par
+ xlab="Axes des abscisses"
Deux commandes indpendantes peuvent tre tapes sur la mme ligne spares par
un " ;". Elles seront traites squentiellement.
Quelques remarques viennent parfois mettre en vidence certains points particuliers
de syntaxe ou autre.
Des questions permettent de tester lacquisition des fonctions tudies.
Une rponse possible chaque question est fournie la suite.

TABLE 1.1 Principe du document

Commandes Remarques
R > ... ...
R > ... ...
R > ... ...

Questions
...
...
...
Rponses
...
...
...

6
Chapitre 2

Initiation

Le chapitre dinitiation consiste essentiellement manipuler diffrents types dobjets


lmentaires manipulables dans R. Le problme dinportation/exportation de donnes est
galement trait.

2.1 Structures de donnes


2.1.1 Scalaire
R > 2+2 Identifier les diffrents types de donnes : entier, rel, lo-
R > exp(10) gique, chane de caractres.
R > a = log(2) le signe < est quivalent =.
R > b <- cos(10) laffectation est galement possible avec le signe >, le
nom de la variable tant alors place aprs.
R > a+b
La fonction ls() liste les variables de lenvironnement
R>a
de travail.
R>b
La fonction rm() permet deffacer une ou plusieurs va-
R > 2==3
riables.
R > b = 2<3
R > ls()
R > rm(a)
R>a
R > a="toto"

7
2.1.2 Vecteur - vector
R > d = c(2,3,5,8,4,6) ;d Les commandes illustrent com-
R > is.vector(d) ment crer un vecteur : soit
R > c(2,5,"toto") en donnant les valeurs une
une (c()), soit par une s-
R > 1 :10
quence (seq()) soit par rpti-
R > seq(from=1,to=20,by=2)
tion (rep()).
R > seq(1,20,by=5) Les lments dun vecteur sont
R > seq(1,20,length=5) du mme type (numrique, carac-
R > rep(5,times=10) tre...)
R > rep(c(1,2),3) Lextraction des lments dun
R > rep(c(1,2),each=3) vecteur se fait par loprateur [].
On peut galement nommer les
R > e = rep(1,10)
lments dun vecteur.
R > d[2] ;d[2 :3] ;d[-3] Un problme avec f+d ?
R > d[-1 :2] ;d[-(1 :2)]
R > f = c(a=12,b=26,c=32,d=41) ;f
R > names(f) ;f["a"]
R > names(f)=c("a1","a2","a3","a4")
R > f> 30 ;f[f>30]
R > which(f>30)
R > f[2] = 22 ;f+100 ;f+d
R > cos(f) ;length(f) ;sort(d)

Questions
1. Quels sont les diffrents paramtrages de la fonction seq ?
2. de la fonction rep ?
3. quoi sert la fonction unique ? Illustrer son fonctionnement sur un exemple.
Rponses
1. seq construit un vecteur par une squence de points qui-rpartis entre from et to
soit, par pas de by, soit, en prcisant le nombre de points (length).
2. rep cre un vecteur par rptition dune scalaire ou dun vecteur. Dans ce dernier cas,
le vecteur est rpt squentiellement (times) ou valeur par valeur (each).
3. unique supprime les rplicats dans un vecteur
R > unique(rep(c(1,2),each=3)) renvoie le vecteur 1-2.

8
2.1.3 Matrice - matrix
R > A = matrix(1 :15,ncol=5) ;A Construction dune matrice ;
R > B = matrix(1 :15,nc=5,byrow=T) voir section 5.1 pour la fonction
R > B2=B ;B2[1,1]="toto" ;B2 runif().
Comme pour les vecteurs, les
R > cbind(A,B) ;rbind(A,B)
lments dune matrice sont du
R > A[1,3] ;A[,2] ;B[2,] mme type.
R > A[1 :3,2 :4] Extraction des parties dune ma-
R > g = seq(0,1,length=20) trice.
R > C = matrix(g,nrow=4) Noter quun argument peut-tre
R > C[C[,1]>0.1,] # * nommer intgralement ou par un
R > D = matrix(runif(16),nc=4) raccourci non ambig : ncol de-
vient nc.
R > D>0.5
Oprations termes termes.
R > D[D[,1]>0.5,2] # ** Produit matriciel (%*%) et terme
R > A+B ;A*B terme (*).
R > cos(A) ; cos(A[1 :2,1 :2]) Inversion dune matrice (fonction
R > solve(A) ;solve(A[1 :2,1 :2]) solve()).
R > A %*% B Fonction apply ! ! ! Cest
R > A[1 :2,1 :2] %*% B[1 :2,1 :3] lide mme du logiciel qui appa-
R > apply(A,2,sum) rat dans cette fonction. Cest plus
rapide que lutilisation de boucles
R > apply(D,1,max)
(voir section 4.1).

Questions
1. Que font rbind et cbind ?
2. Dcortiquer la ligne marque * et dcrire ce quelle fait.
3. Mme chose avec **.
Rponses
1. rbind et cbind collent deux vecteurs ou matrices respectivement en ligne ou en
colonne.
2. R > C[C[,1]>0.1,] peut se dcomposer ainsi :
R > C[,1] extrait la premire colonne de la matrice C
R > C[,1]>0.1 renvoie un vecteur logique de longueur le nombre de lignes de C
contenant TRUE si la valeur est suprieure 0.1 et FALSE sinon.
R > C[C[,1]>0.1,] extrait de la matrice C les lignes o les lments sur la pre-
mire colonne sont suprieurs 0.1 et toutes les colonnes (rien aprs la virgule).
3. la ligne ** extrait de la colonne 2 de la matrice D, les lignes o llment sur la pre-
mire colonne est suprieur 0.5.

9
2.1.4 Tableau - array
R > array(c(1 :8, rep(1,8), Un array gnralise une ma-
+ seq(0,1,l=8)), dim = c(2,4,3)) trice. On peut le voir comme un
R > E = .Last.value tableau de matrices.
R > E[, , 1] Une reprsentation de larray H
1 3 5 7 9 11 13 15 17 19 21 23
R > dim(E) ;length(E) 2 4 6 8 10 12 14 16 18 20 22 24

R > nrow(E) ;ncol(E) viter de nommer un objet F


R > E+10 ou T (confusion avec TRUE ou
R > H=array(1 :24,c(2,3,4)) FALSE).
R > apply(H,1,mean)
R > apply(H,2,mean)
R > apply(H,3,mean)

2.1.5 list
R > x = list("bidon",1 :8) ;x Un objet de type list peut conte-
R > x[[1]] ;x[[1]]+1 ;x[[2]]+10 nir plusieurs types dobjets (vec-
R > y = list(matrice=D,vecteur=f, teur, matrice...).
Utile pour renvoyer plusieurs
+ texte="bidon",scalaire=8)
types dinformations comme
R > names(y) ;y[[1]]
rsultats dune fonction.
R > y$matrice ;y$vec Accs aux composants dun ob-
R > y[c("texte","scal")] jet par son numro entre double-
R > y[c("texte","scalaire")] crochets [[ ]] ou par lopra-
R > length(y) teur $ suivi du nom du composant
(sil en a un).
R > length(y$vecteur)
R > cos(y$scal)+y[[2]][1]

10
2.1.6 data.frame
R > taille = runif(12,150,180) Structure spciale pour la ma-
R > masse = runif(12,50,90) nipulation de jeux de donnes
R > sexe = rep(c("M","F","F","M"),3) du type individus (en ligne)
variables (en colonne).
R > H = data.frame(taille,masse,sexe)
Les variables peuvent tre de
R > H ;summary(H) types diffrents (numrique,
R > H[1,] ;H$taille caractre, logique...).
R > H$sexe Noter les analogies entre
R > rm(taille) ;taille # (1) data.frame, list et
R > attach(H) ;taille # (2) matrix.
R > search() # (3)
R > detach() ;taille # (4)

Questions
1. Tester la fonction summary sur dautres types dobjets.
2. Commenter lenchanement des lignes 1 4. Quel est leffet de la fonction attach ?
de la fonction search ? de la fonction detach ?
Rponses
1. Fonction summary
R > vec=c(2,5,3,6,5,4,1,8) ;summary(vec)
R > mat=matrix(1 :20,nc=4,nr=5)
R > summary(mat) ;summary(c(mat))
R > ...
2. Enchanement des lignes
(1) Supprime lobjet taille dans lespace de travail courant ; lobjet taille nest
plus reconnu.
(2) Attache le data.frame H ; les composants de H deviennent accessibles directement.
(3) search() permet de lister les environnements lis lespace de travail courant.
(4) Dtache lenvironnement en position 2 dans la liste de search().

2.2 Entre / Sortie


2.2.1 Importation dun jeu de donnes
Utiliser un diteur de texte pour saisir les fichiers ci-dessous :
X1 ;X2 ;X3
5,2.5,3.8 5 2.5 3.8 5 ;2,5 ;3,8
5 ;2.5 ;3.8
8,3.2,3.4 8 3.2 3.4 8 ;3,2 ;3,4
8 ;3.2 ;3.4
12,4.6,5 12 4.6 5 12 ;4,6 ;5
12 ;4.6 ;5
fic1.csv fic2.txt fic3.txt fic4.txt

11
R > fic1=read.table("fic1.csv", La fonction read.table()
+ sep=",") permet de lire le contenu dun
R > fic1 fichier pour crer un objet R.
R > fic1b=read.csv("fic1.csv") Les arguments header, sep et
dec permettent de prendre en
R > fic1b
compte les 3 facteurs : entte, s-
R > fic1b=read.csv("fic1.csv",
parateur des colonnes et spara-
+ header=FALSE)
teur dcimal.
R > fic1b Les fonctions read.csv() et
read.csv2() sont analogues
read.table() mais avec un
paramtrage par dfaut diffrent.

Questions
1. Importer les fichiers fic2.txt, fic3.txt et fic4.txt.
Rponses
1. Importation des fichiers :
R > fic2 = read.table("fic2.txt")
R > fic3 = read.table("fic3.txt",header=T,sep=" ;")
R > fic4 = read.table("fic4.txt",sep=" ;",dec=",")

2.2.2 Exportation dobjets R


R > A=seq(1,10,l=50) La fonction write.table() (analogue
R > write.table(A,"A.txt") read.table()) permet de renvoyer des
R > sink("A2.txt") donnes dans un fichier.
La fonction sink() redirige le rsultat des
R > A ;summary(A)
commandes vers un fichier au lieu de laf-
R > sink() ficher lcran. Ne pas oublier de fermer
R > summary(A) le fichier en rappelant sink() sans argu-
ment.

2.2.3 Liens avec un tableur


Principe de base : tous les logiciels susceptibles de traiter des donnes peuvent im-
porter et exporter des donnes dans des fichiers au format texte cest--dire lisible dans
un diteur de texte quelconque (Bloc-notes, Emacs, Asedit...)
Les manipulations dcrites ici ont pour objectif dassurer les transferts de donnes entre
R et un logiciel tableur de type Excel. Ce choix rsulte du fait que cest le principal cas de
figure auquel nous sommes rgulirement confronts. Cependant, la procdure sapplique
tout autre logiciel moyennant quelques lgres adaptations.

12
Transfrer des donnes de Excel (ou dun tableur quivalent) dans R
Dans Excel :
1. Ouvrir le fichier de donnes,
2. Enregistrer le fichier au format csv (Comma Separated Value) en le spcifiant
dans la liste droulante (Type de fichier).
Le format csv est lisible dans un diteur de texte quelconque, sa spcificit rside
dans les virgules qui sparent les valeurs de colonnes diffrentes. Il est prf-
rable au format txt qui propose des sparateurs tabulation quil est impossible
de distinguer loeil dun espace alors que le codage est diffrent. Dans une ver-
sion franaise dExcel, le sparateur des colonnes est un point-virgule, la virgule
tant le sparateur dcimal.
3. Quitter Excel.
Dans R : Limportation du fichier de donnes seffectue avec la fonction read.table().
Laide en ligne (help(read.table)) vous fournira tous les dtails sur lutilisa-
tion de cette fonction. On peut en grral assurer limportation avec les 4 arguments :
file, header, sep, dec :
* file : nom du fichier qui contient les donnes avec le chemin pour y accder,
* header (TRUE ou FALSE) : permet de prciser si la premire ligne contient le
titre des colonnes
* sep : permet de prciser le caractre qui dlimite les colonnes,
* dec : permet de prciser le sparateur dcimal
N.B. Le chemin pour accder au fichier est indiqu par des / et non par des \.

Retour dans Excel de donnes traites avec R


La fonction write.table permet denvoyer un jeu de donnes R dans un fichier texte.
Exemple : On souhaite exporter le jeu de donnes donnees.traitees dans un fichier
afin de poursuivre son analyse avec Excel. Pour cela, on prcise que le sparateur dcimal
est la virgule et le sparateur le point-virgule.
R > write.table(donnees.traitees,
+ "data-trait.csv",sep=" ;",dec=",")
Depuis Excel, on ouvre le fichier data-trait.csv en prcisant le type de fichier csv,
sinon toutes les colonnes seront concatnes dans la premire colonne du tableau Excel.

13
Chapitre 3

Fonctions graphiques

R > help.search("plot") vous donnera un aperu des multiples fonctions lies la


reprsentation graphique dans R.

3.1 Donnes qualitatives - Effectifs


R > vec=c(12,10,7,13,26,16,4,12) Les fonctions pie() et
R > pie(vec) ;pie(vec,clockwise=T) barplot() disposent
R > names(vec)=LETTERS[1 :8] dun trs grand nombre de
paramtres permettant de mo-
R > pie(vec)
difier laspect du graphique
R > barplot(vec) obtenu.
R > par(mfrow=c(1,2)) Noter lutilisation
R > pie(vec) de la commande
R > barplot(vec) par(mfrow=c(1,2)) qui
R > par(mfrow=c(1,1)) dcoupe la fentre graphique
en 1 ligne et 2 colonnes et
R > colors()
inclue les graphiques venir
ligne par ligne.

Questions
1. Quelle est la diffrence entre par(mfrow=c(2,2)) et par(mfcol=c(2,2)) ?
2. Consulter laide en ligne pour tester certains arguments optionnels des fonctions pie()
et barplot().
3. Commenter les commandes suivantes (extraites de laide en ligne de pie()) :
R > n=200
R > pie(rep(1,n), labels="", col=rainbow(n), border=NA)

Rponses

14
1. Les 2 commandes dcoupent la fentre graphique en 4 cellules. La diffrence entre
les 2 commandes est illustre par le tableau ci-dessous (par(mfrow=c(2,2)) -
par(mfcol=c(2,2))) :
1-1 2-3
3-2 4-4
Avec par(mfrow=c(2,2)), les 4 graphiques venir sont intgrs ligne par ligne ;
avec par(mfcol=c(2,2)), ils le sont colonne par colonne.
2. Par exemple, pour modifier les couleurs du camembert :
R > pie(vect,col=rgb(0,0,seq(0,1,l=8)))
R > pie(vect,col=rainbow(8))
R > ...
3. Commentaire de la ligne de commande :
R > n=200 # La valeur 200 est affecte n.
R > rep(1,n) # Cre le vecteur de taille n ne contenant que des 1.
R > pie(rep(1,n) # Produit un camembert pour n variables deffectifs tous
gaux 1. Les secteurs sont donc de mme angle.
R > rainbow(n) # Renvoie un vecteur de longueur n contenant un dgrad des
couleurs de larc-en-ciel.
R > border=NA # vite de tracer les bords des secteurs.
R > labels="" # Aucune tiquette nidentifie les secteurs.

3.2 Donnes quantitatives


R > x=rnorm(50) La gnration de nombres alatoires est traite
R > boxplot(x) dans la section 5.1.
R > hist(x) La section 5.3 dtaille certaines de ces fonctions
graphiques.
R > stripchart(x)

Questions
1. Reprsenter dans la mme fentre graphique, le "stripchart", le diagramme-bote hori-
zontal et lhistogramme correspondant lun sous lautre.
Rponses
1. Reprsentation des 3 graphiques
R > par(mfrow=c(3,1))
R > stripchart(x)
R > boxplot(x,horizontal=T)
R > hist(x)

15
3.3 Graphiques 2D
R > x=seq(-10,10,l=50) Certaines fonctions crent
R > plot(x,sin(x)) un nouveau graphique,
R > plot(x,sin(x),type="l") dautres ajoutent des l-
ments un graphique
R > abline(v=0,col="blue",lwd=5,lty=3)
existant.
R > abline(h=sin(0.7),col=3) La fonction locator()
R > text(-5,-0.5,"texte",font=3) attend de lutilisateur quil
R > par(mfrow=c(1,2)) clique sur la fentre gra-
R > plot(x,sin(x),type="l",col=1, phique.
+ main="sinus") Les arguments main,
xlab, ylab, sub...
R > plot(x,cos(x),type="b",col=3,
permettent de placer les
+ xlab="Abscisses") lgendes des axes et du
R > par(mfrow=c(1,1)) graphique.
R > plot(x,cos(x),type="l") La fonction matplot()
R > points(0,1,pch="o",cex=3, trace les colonnes dune
+ col="blue") matrice.
R > lines(c(-5,5),c(0,0),lty=2,col=2) Les options graphiques sont
listes dans la rubrique
R > locator(1) ;text(locator(2),
"Graphical Parameters" de
+ c("clic","clac"),font=c(2,3)) R > help(par) .
R > A=cbind(seq(0,1,l=20),rnorm(20),
+ runif(20))
R > matplot(A,type="b")

Questions
1. Saurez-vous tracer la tte Toto ?

O O
+

Rponses
1. Voici un exemple pour obtenir la tte Toto :
R > plot(0,0,xlim=c(-15,15),ylim=c(-15,15),
+ type="n",axes=FALSE,xlab="",ylab="")
R > points(0,0,pch="+",cex=4) # le nez
R > points(c(-4,4),c(5,5),pch="O",cex=4) # les yeux
R > lines(c(-3,3),c(-5,-5),lwd=3) # la lvre suprieure
R > lines(c(-3,3),c(-6,-6),lwd=3) # la lvre infrieure

16
R > lines(10*sin(0 :360*pi/180),
+ 10*cos(0 :360*pi/180),lwd=5) # le contour du visage
En option, le chapeau :
R > lines(c(-12,12),c(10,10),lwd=3)
R > rect(-6,10,6,14,border=1,lwd=3,col=1)

3.4 Vers la 3D
R > M=matrix(1 :100,nc=10) Reprsentation sous forme
R > image(M) dimage (image()), de
R > x = seq(-10, 10, length= 30) ;y=x nappe (persp()) ou de
contour (contour()).
R > f = function(x,y)
Exemple de la fameuse
+ {r=sqrt(x2+y2) ; 10 * sin(r)/r} fonction sinc() (sinus
R > z = outer(x, y, f) cardinal), extrait de laide
R > z[is.na(z)] = 1 en ligne de la fonction
R > persp(x,y,z) persp().
R > persp(x, y, z, theta=30, phi=30, Pour mieux comprendre
ce que fait la fonction
+ expand = 0.5, col="lightblue")
outer(), on testera :
R > image(x,y,z) R > x=y=1 :5
R > contour(x,y,z) R > z=outer(x,y,"+")
R > filled.contour(x,y,z)
R > image(x,y,z)
R > contour(x,y,z,add=T)

Questions
1. Reprsenter le drapeau franais (ou tout autre drapeau de votre choix, vos risques et
prils).

2. Reprsenter un damier 1010 (cest possible en une seule ligne).

Rponses
1. Drapeaux :
France :
R > image(t(matrix(c(rep(-1,30),rep(0,30),rep(1,30)),
+ nr=10,nc=9)),col=c("blue","white","red"),axes=F) ;box()

17
Italie :
R > image(t(matrix(c(rep(-1,30),rep(0,30),rep(1,30)),
+ nr=10,nc=9)),col=c("green","white","red"),axes=F) ;box()
Japon :
R > plot(0,0,xlim=c(-10,10),ylim=c(-10,10),type="n",
+ axes=FALSE,xlab="",ylab="")
R > polygon(c(-8,8,8,-8),c(-5,-5,5,5),col="white",border=1)
R > lines(3*sin(0 :360*pi/180),3*cos(0 :360*pi/180),
+ lwd=5,col="red")
R > polygon(3*sin(0 :360*pi/180),3*cos(0 :360*pi/180),
+ lwd=5,col="red",border=0)
Canada ( ! ! !) :
R > X=c(-0.25,-0.2,-2.5,-2,-4,-3.5,-3.75,-2.25,-2,-1,-1.5,
+ -0.75,0,0.75,1.5,1,2,2.25,3.75,3.5,4,2,2.5,0.2,0.25)
R > Y=c(-5,-2.5,-3,-2,0,0.25,1.75,1.5,2,1,4,3.5,5,3.5,4,1,
+ 2,1.5,1.75,0.25,0,-2,-3,-2.5,-5)
R > plot(0,0,xlim=c(-10,10),ylim=c(-10,10),type="n",
+ axes=FALSE,xlab="",ylab="")
R > polygon(c(-8,8,8,-8),c(-6,-6,6,6),col="white")
R > polygon(c(-8,-5,-5,-8),c(-6,-6,6,6),col="red")
R > polygon(c(5,8,8,5),c(-6,-6,6,6),col="red")
R > polygon(X,Y,col="red",border=0)
...
2. Damier (en une seule ligne, sans " ;") :
R > image(matrix(rep(c(rep(c(1,0),5),rep(c(0,1),5)),5),
+ nc=10),col=c("white","black"),axes=F)
Juste pour empcher les pions de tomber :
R > box()
En dtaillant, les diffrentes tapes, cela peut ressembler :
R > v1 = rep(c(1,0),5) # 1 0 1 0 1 0 1 0 1 0
R > v2 = rep(c(0,1),5) #0101010101

R > v3 = c(v1,v2) #10101010100101010101

R > v4 = rep(v3,5) #10101010100101010101101010101001010101011010101010010101010110

10101010010101010110101010100101010101
1 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
R > mat = matrix(v4,nc=10) 1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1

R > image(mat,col=c("white","black"))

18
3.5 Exportation de graphiques
Dans lenvironnement Windows, une premire solution consiste copier le graphique
(menu Fichier > Copier vers le presse-papier). Le graphique ainsi plac
dans le presse-papier peut ensuite tre coll dans le logiciel de son choix.
Pour sauvegarder le graphique dans un fichier, on utilisera dans le menu Fichier la
rubrique Sauver sous. Plusieurs formats sont disponibles : vectoriel (mtafichier), post-
script, pdf, png, bmp, jpeg.
Une autre faon de procder, et cest la seule possible en environnement Unix, consiste
utiliser les fonctions associes la sauvegarde de fichiers graphiques : bmp(), jpeg(),
png(), pdf(), postscript(). La procdure suivre est la suivante :
1. Crer un fichier graphique vers lequel la sortie graphique est redirige
R > jpeg("fichier.jpg")
2. Tracer le graphique : le graphique napparat pas lcran.
R > plot(1 :100)
R > text(20,80,"abcdef")
3. Fermer le fichier. Ne surtout pas oublier cette tape ! La sortie graphique revient
alors lcran pour le prochain trac.
R > dev.off()
Cette procdure est galement utile en environnement Windows lorsque lon souhaite
sauver un graphique trac lors du droulement dune fonction.

19
Chapitre 4

Programmation

4.1 Structure de contrle


R > for (i in 1 :10) print(i) La rptition dinstructions se fait
R > y=z=0 ; par for ou while.
R > for (i in 1 :10) { On peut trs souvent sabstenir
davoir recours des boucles en
+ x=runif(1)
"pensant" vectoriel (ou matriciel).
+ if (x>0.5) y=y+1
La condition sexprime par if
+ else z=z+1 } ... else ou en condens par
R > y ;z ifelse.
R > for (i in c(2,4,5,8)) print(i)
R > x = rnorm(100)
R > y = ifelse(x>0, 1, -1)
R > i=0
R > while (i<10){
+ print(i)
+ i=i+1}

Questions
1. Que pensez-vous de :
for (i in 1 :length(b)) a[i]=cos(b[i])
2. Comment obtenir lquivalent de y et z dans la deuxime boucle for sans passer par
une boucle ?
3. Dans lenchanement de commandes ci-dessous, supprimer dabord la boucle for sur
j puis les 2 boucles.
R > M=matrix(1 :20,nr=5,nc=4)
R > res=rep(0,5)
R > for (i in 1 :5){
+ tmp=0

20
+ for (j in 1 :4) {tmp = tmp + M[i,j]}
+ res[i]=tmp}
Rponses
1. Cette boucle est inutile. Il suffit de saisir
R > a=cos(b) . Llment de base de R est la matrice dont le vecteur est un cas
particulier.
2. Une solution consiste sommer les lments TRUE dun vecteur logique
R > x=runif(10) ;y=sum(x>0.5) ;z=10-y
3. Suppression de boucles
Boucle for sur j :
R > for (i in 1 :5) res[i]=sum(M[i,])
Les 2 boucles :
R > res=apply(M,1,sum)

4.2 Fonctions
R > bidon=function(x){x+2} La fonction function() per-
R > ls() met de crer une fonction.
R > bidon On peut donner une valeur par d-
R > bidon(3) faut un paramtre dune fonc-
tion. Cela signifie que si lutili-
R > x = bidon(4)
sateur ne renseigne pas un para-
R > bidon = fix(bidon)
mtre, une valeur par dfaut est
R > bidon = function(a,b=a){a+b} prvue et ne gnre donc pas der-
R > bidon(2,3) reur.
R > bidon(5)
R > calc.rayon=function(r){
+ p=2*pi*r ;s=pi*r*r ;
+ list(rayon=r,perimetre=p,
+ surface=s)}
R > resultat=calc.rayon(3)
R > resultat$ray
R > 2*pi*resultat$r==resultat$perim

Questions
1. crire une fonction qui calcule le primtre et la surface dun rectangle partir des
longueurs l1 et l2 des deux cts. La fonction renvoie galement la longueur et la
largeur du rectangle.
2. crire une fonction qui calcule les n premiers termes de la suite de Fibonacci (u1 =
0, u2 = 1, n > 2, un = un1 + un2 )

21
3. Utiliser cette fonction pour calculer le rapport entre 2 termes conscutifs. Reprsenter
ce rapport en fonction du nombre de termes pour n = 20. Que constatez-vous ? Avez-
vous lu Da Vinci Code ?
Rponses
1. Fonction rectangle() (la fonction rect() existe dj) :
R > rectangle=function(l1,l2){
+ p=(l1+l2)*2
+ s=l1*l2
+ list(largeur=min(l1,l2),longueur=max(l1,l2),
+ perimetre=p,surface=s)}
Utilisation de la fonction :
R > rectangle(4,6) ;res=rectangle(8,7)
2. Fonction fibo() pour calculer les n premiers termes de la suite de Fibonacci :
R > fibo=function(n){
+ res=rep(0,n)
+ res[1]=0 ;res[2]=1
+ for (i in 3 :n) res[i]=res[i-1]+res[i-2]
+ res}
3. Calcul du rapport de 2 termes conscutifs
R > res=fibo(20)
R > ratio=res[2 :20]/res[1 :19]
R > plot(1 :19,ratio,type="b")

1+ 5
Le rapport tend vers le nombre dor 2
1.618034.

4.2.1 Fonctions particulires .First() et .Last()


R > .First=function(){ Les fonctions .First() et
+ cat("*** Bonjour ;-) \n") .Last(), si elles existent,
+ library(lattice) sont excutes automatiquement
+ options( respectivement lentre et la
sortie de R.
+ digits=10,
On peut ainsi par exemple redfi-
+ prompt="Dis-moi tout > ")} nir le prompt pour le rendre plus
R > .Last=function(){ convivial.
+ cat("A bientt, jespre...")} Ces fonctions sont utiles pour at-
tacher (dtacher en sortant) syst-
matiquement une ou plusieurs bi-
bliothques de travail.

22
Chapitre 5

Un peu de statistique

Rappel :

R is GNU S, a freely available language and environment for statistical com-


puting and graphics which provides a wide variety of statistical and graphical
techniques : ...

5.1 Simulation
R > help.search("Distribution") La plupart des distributions cou-
R > help(rnorm) rantes sont programmes dans R.
R > rnorm(10) ;pnorm(0) Noter les diffrentes fonctions
lies chaque distribution.
R > qnorm(0.5) ;dnorm(0)
Par exemple, pour la loi nor-
R > plot(dnorm, -3, 3, male : dnorm(), pnorm(),
+ col="blue",lwd=3) qnorm(), rnorm() donnent
R > y=seq(qnorm(1-0.025),3,l=100) respectivement la densit, la
R > polygon(c(y,rev(y)), fonction de rpartition, la fonction
+ c(dnorm(y),rep(0,100)),col=3) quantile et un gnrateur alatoire.
Observer au passage une utilisa-
R > text(2.2,0.015,"0.025",cex=0.9,
tion un peu particulire de la fonc-
+ font=2) tion plot().

Questions
1. Tracer les fonctions densits et les fonctions de rpartition de quelques distributions
de probabilits usuelles (exponentielle, log-normale, Cauchy...)
Rponses
1. Quelques densits et fonctions de rpartition associes (sur un mme graphique) :
R > par(mfcol=c(2,4))
R > plot(dnorm,-5,5)
R > plot(pnorm,-5,5)

23
R > plot(dexp,0,5)
R > plot(pexp,0,5)
R > plot(dlnorm,0,5)
R > plot(plnorm,0,5)
R > plot(dcauchy,0,5)
R > plot(pcauchy,0,5)

5.2 Tests statistiques


R > help.search("test") La plupart des tests statistiques cou-
R > x=rnorm(100) rants (et bien dautres) sont program-
R > y=rnorm(100,mean=1) ms dans R.
Test de Student pour la comparaison de
R > t.test(x,y)
moyennes.
R > var.test(x,y) Test de Fisher pour la comparaison de
R > t.test(x,y,var.equal=T) variances.
R > cor.test(x,y) Test de nullit du coefficient de corr-
R > ks.test(x,y) lation.
R > ks.test(x,"pnorm") Test de Kolomogorov-Smirnov
...
R > ks.test(y,"pnorm")
R > ks.test(y,"pnorm",1)

24
5.3 Statistique descriptive unidimensionnelle
R > x=runif(100) On revient ici un peu en partie sur les
R > y=runif(100) graphiques pour donnes quantitatives vo-
R > mean(x) ;var(x) ;sd(x) ques dans la section 3.2.
Les fonctions boxplot() et hist()
R > min(x) ;max(x)
peuvent ne pas produire de graphique (op-
R > quantile(x) ;median(x) tion plot=FALSE).
R > quantile(x,0.5) La fonction stem produit une diagramme
R > quantile(x,0.9) stem-and-leaf (tige et feuille) qui donne un
R > boxplot(x,plot=FALSE) aperu de la rpartition des donnes de fa-
R > cov(x,y) on plus rustique quun histogramme
La fonction hist() propose des op-
R > summary(x)
tions pour modifier lapparence de lhisto-
R > stem(x) ;stem(y) gramme.
R > boxplot(x)
R > hist(x)
R > x[25]=2
R > res=boxplot(x) ;res
R > hist(x)
R > x[25]=runif(1)
R > hist(x,density=10)
R > hist(x,plot=FALSE)
R > hist(x,nclass=5)

25
5.4 Rgression
R > search() Vrifier la prsence de
R > ls(pos=7) # (*) "package :datasets"
R > help(cars) dans la liste des bibliothques dis-
ponibles (fonction search()).
R > res1 = lm(dist speed,
Dans la ligne (*), le chiffre 7 cor-
+ data=cars) respond au numro de lextension
R > res1 "package :datasets" dans
R > plot(cars) la liste fournie par search. v-
R > abline(res1) rifier.
R > names(res1) Vrifier la prsence du jeu de don-
R > summary(res1) nes cars. Une description des
donnes est fournie par la fonction
R > anova(res1)
help().
R > res2=lowess(cars$speed,
La fonction lowess() (LOcally
+ cars$dist,f=0.5) WEighted Scatterplot Smooth)
R > lines(res2,col="blue",lty=2) produit un lissage des donnes
par une fonction polynomiale par
morceaux.
Questions
1. Reprsenter, en plus de la droite de rgression, les points correspondants aux valeurs
de distance ajustes par le modle de rgression linaire.
2. Relier par des segments de droite les valeurs de distance ajustes et relles pour chaque
valeur de vitesse.
3. Reprendre la fonction lowess() en modifiant la valeur du paramtre f. Reprsenter
sytmatiquement la courbe lisse correspondante sur le graphique des donnes ini-
tiales.
4. Ajouter une lgende ce graphique (fonction legend).
Questions
1. Reprsentations des valeurs ajustes :
R > plot(cars) ;abline(res1)
R > points(cars[,1],res1$fitted,pch="+",col="blue")
2. Segments de droite entre valeurs ajustes et observes :
R > for (i in 1 :length(res1$fitted))
+ lines(c(cars[i,1],cars[i,1]),
+ c(cars[i,2],res1$fitted[i]),col="red",lty=2)
3. Quelques courbes lowess ajoutes au graphiques des donnes :
R > plot(cars)
R > lines(lowess(cars$speed,cars$dist,f=0.1),col=2)

26
R > lines(lowess(cars$speed,cars$dist,f=0.3),col=3)
R > lines(lowess(cars$speed,cars$dist,f=0.5),col=4)
R > lines(lowess(cars$speed,cars$dist,f=0.7),col=5)
R > lines(lowess(cars$speed,cars$dist,f=0.9),col=6)
4. Lgende positionne par un clic de la souris :
R > legend(locator(1),
+ c("f=0.1","f=0.3","f=0.5","f=0.7","f=0.9"),
+ col=2 :6,lty=1,text.col=2 :6)

5.5 Statistique descriptive multidimensionnelle


5.5.1 Analyse en composantes principales
R > df.body=read.table("body.csv", Le fichier body.csv
+ sep=" ;",dec=",",header=T, est accessible ici :
+ row.names=1) math...fr/sdejean/R
Noter la redfinition des fonctions
R > dim(df.body)
summary() et plot().
R > dimnames(df.body) La fonction biplot() peut tre
R > acp.body = prcomp(df.body) utilise indpendamment du rsul-
R > names(acp.body) tat de prcomp().
R > summary(acp.body) La fonction princomp() existe
R > plot(acp.body) aussi pour effectuer une ACP
(les rsultats sont quivalents mais
R > biplot(acp.body)
les calculs permettant de les
R > plot(acp.body$x) obtenir diffrent avec ceux de
R > plot(acp.body$x,type="n") prcomp()).
R > text(acp.body$x,
+ dimnames(df.body)[[1]])

5.5.2 Positionnement multidimensionnel


R > eurodist MDS : ACP sur un tableau de
R > class(eurodist) distance.
R > length(eurodist) Commandes adaptes de
R > mds.eurodist=cmdscale(eurodist) laide en ligne de la fonction
cmdscale().
R > plot(mds.eurodist) # (1)
R > text(mds.eurodist,
+ rownames(mds.eurodist)) # (2)

Questions

27
1. Quelle est la longueur de lobjet eurodist ? Do vient cette valeur ?
2. Que pensez-vous de la reprsentation fournie par les lignes (1) et (2) ? Construisez une
reprsentation plus vraisemblable.
3. Mettre en uvre le MDS sur les donnes body. Dabord avec la distance euclidienne
(distance par dfaut) puis avec la distance "1-corrlation" (la fonction as.dist()
sera utile dans ce dernier cas).
Rponses
1. eurodist est un jeu de donnes de "package :datasets" qui se prte bien
la mise en uvre du positionnement multidimensionnel (voir help(cmdscale()).
2. Lobjet eurodist est de longueur 210. Cette valeur vient du nombre de distances
deux--deux calculables entre 21 villes : 2120
2
(matrice 21 21 symtrique et de dia-
gonale nulle).
3. La reprsentation obtenue par (1) et (2) est inverse nord-sud par rapport la ralit.
On peut obtenir une reprsentation plus vraisemblable par
R > x = mds.eurodist[,1]
R > y = -mds.eurodist[,2]
R > plot(x, y, type="n")
R > text(x, y, rownames(mds.eurodist))
4. Application aux donnes body (distance euclidienne) :
R > dist.body=dist(df.body)
R > mds.body=cmdscale(dist.body)
R > plot(mds.body)
R > text(mds.body,dimnames(body)[[1]])
5. Distance "1-corrlation" :
R > cor.dist=function(x){as.dist(1-cor(t(x)))}
R > dist.c.body=cor.dist(df.body)
R > mds.c.body=cmdscale(dist.c.body)
R > plot(mds.c.body)
R > text(mds.c.body,rownames(df.body))

28
5.5.3 Classification hirarchique
R > hc.body=hclust(dist.body, On rcupre certains objets
+ method="ward") crs prcdemment.
R > plot(hc.body) Deux notions de distances :
inter-individus et inter-groupes.
R > plot(hc.body,hang=-1)
Reprsentation (par plot())
R > plot(hclust(dist.c.body, dune arbre de classification ou
+ method="ave"),hang=-1) dendrogramme.
R > plot(hc.body,hang=-1) Le rsultat de
R > rhc.body=rect.hclust(hc.body, rect.hclust() nest
+ k=3) pas seulement graphique. Voir
le contenu de rhc.body.
Voir galement la fonction
cutree() au fonctionnement
similaire.
Questions
1. Mettre en uvre la classification hirarchique sur les donnes eurodist.
2. Reprsenter les dendrogrammes pour diffrents critres dagglomration.

Rponses
1. Classification hirarchique :
R > hc.eurodist.ward=hclust(eurodist,method="ward")
R > hc.eurodist.single=hclust(eurodist,method="single")
R > hc.eurodist.complete=hclust(eurodist,method="complete")
R > hc.eurodist.ave=hclust(eurodist,method="ave")
2. Reprsentation des dendrogrammes :
R > par(mfrow=c(1,4))
R > plot(hc.eurodist.ward,hang=-1,main="Ward")
R > plot(hc.eurodist.single,hang=-1,main="Single")
R > plot(hc.eurodist.complete,hang=-1,main="Complete")
R > plot(hc.eurodist.ave,hang=-1,main="Average")

29
Bibliographie

Comme cela est voqu en dbut de document, toutes les ressources souhaitables sur
sont disponibles sur les 2 sites :
www.r-project.org
cran.cict.fr
Parmi la documentation, signalons les documents en franais :
R pour les dbutants - Emmanuel Paradis, version franaise de R for Beginners (81
pages).
Introduction au systme R - Yves Brostaux, (22 pages avec jeux de donnes).
ainsi que le document
Writing R extensions
utile tout utilisateur dsireux de dvelopper en R (interface avec des programmes C, cra-
tion de package...).
Sur le web, le site de Vincent Zoonekynd
Statistiques avec R - zoonek2.free.fr/UNIX/48_R_2004/all.html
est trs complet sur les mthodes statistiques lmentaires accessibles sur la base de R (sans
package additionnel) ainsi que sur les solutions graphiques.

30

Vous aimerez peut-être aussi