You are on page 1of 24

Une introduction au langage R

Faouzi LYAZRHI

UP Biostatistique Ecole Nationale Vtrinaire, 23, chemin des Capelles, BP 87614, F-31076 Toulouse cdex email : f.lyazrhi@envt.fr

2005

1. INSTALLER R 2. PREMIERES INSTRUCTIONS AVEC R


2.1. Oprations lmentaires 2.2 Importer, exporter des donnes 2.3 Crer, gnrer, saisir des donnes

3 6
6 7 11

3. QUELQUES FONCTIONS STATISTIQUES ELEMENTAIRES 4. FAIRE DES GRAPHIQUES AVEC R 5. TEST, ANOVA ET REGRESSION LINEAIRE AVEC R
5.1 Comparaison de deux moyennes 5.2. Comparaison de deux variances 5.3. Comparaison de deux pourcentages 5.4. Test de conformit 5.5. Anova 1 facteur 5.6. Comparaisons multiples 5.7. ANOVA 2 facteurs 5.8. Rgression linaire

13 15 18
18 19 19 19 20 20 21 21

6 ECRIRE UNE FONCTION DANS R

23

R est un logiciel de calcul scientifique interactif libre qui possde une large collection doutils statistiques et graphiques. Plusieurs sites sont consacrs ce logiciel, en particulier le site http://www.r-project.org/ offre une description exhaustive sur le langage R et fournit les liens indispensables pour les diffrents tlchargements, accder aux diffrentes bibliothques de fonctions ainsi que les des documents daide. Le site miroir du cict peut-tre utilis aussi : http://cran.cict.fr/index.html . Des versions compiles de R sont disponibles pour Linux, Windows et Mac OS X.

1. Installer R
En cliquant (par exemple) sur le lien du site miroir du cict, slectionner dans la page daccueil (affiche comme ci-dessous) votre systme dexploitation :
Precompiled Binary Distributions Base system and contributed packages. Windows and Mac users most likely want these versions of R.

Linux MacOS X (10.2.x and above) This version of R for the Mac is actively maintained. MacOS (System 8.6 to 9.1 and MacOS X up to 10.1.x) Last supported version of R is 1.7.1, there will be no more updates. Windows (95 and later)

Cliquer sur base : Note: CRAN does not have Windows systems and cannot check these binaries for viruses. Use the normal precautions with downloaded executables.

Subdirectories:
base contrib Binaries for base distribution (managed by Duncan Murdoch) Binaries of contributed packages (managed by Uwe Ligges)

Puis tlcharger le fichier rw2001.exe :

README.rw2001 CHANGES NEWS rw2001.exe

Installation and other instructions. New features of this Windows version. New features of all versions. Setup program (about 23 megabytes). Please download this from a mirror near you. This corresponds to the file named SetupR.exe in pre-1.6.0 releases.

Le fichier rw2001.exe est un excutable, une fois sauvegarder sur votre disque dur, vous double-cliquez dessus. Vous pouvez garder les options par dfaut, nous verrons plus loin comment changer certaines options comme le rpertoire de travail.

Un raccourci est cr sur le bureau Rgui.exe (R Graphique user interface). Vous pouvez changer le rpertoire de travail en modifiant dmarrer dans : pour cela crer un rpertoire sous la racine par exemple userdata, et taper le chemin complet dans la case dmarrer dans : c:\userdata.

Pour vrifier votre dossier de travail, il suffit de double cliquer sur le raccourci rgui.exe, puis linvite de R signalant que la console est en attente dune instruction (dsign par le symbol >) taper getwd() :

Si vous quittez R en fermant la fentre, une bote de dialogue saffichera, cliquer sur oui :

Dans votre rpertoire de travail userdata, deux fichiers sont crs :

Le fichier .RData contient les objets crs lors de la session. Les objets de R peuvent tre des donnes (tableaux), des fonctions (formule, expression), des graphiques En double cliquant sur .RData, vous pouvez le consulter dans R. Lhistorique des instructions lors de la session est enregistr dans le fichier .Rhistory qui peut-tre consult laide dun diteur de texte. Nous verrons plus loin comment utiliser ces deux fichiers.

2. Premires instructions avec R


Rappelons que R est un langage interactif, donc toujours en attente dune instruction signale par linvite < . R dispose dune aide en ligne trs complte et qui vous sera trs utile car la plupart des fonctions de R ncessitent plusieurs arguments et options, donc ne pas hsiter faire appel cette aide en ligne !!

2.1. Oprations lmentaires


Toutes les oprations lmentaires peuvent tre excutes linvite de R, toutes les instructions seront valides en tapant sur la touche entre du clavier. Attention certains caractres constituent des oprateurs pour R : $, [, [[, :, ?, <- (voire plus loin). Noter que R fait la diffrence ente une majuscule une minuscule. Calculer > 4+8 > 12 > (6+5*2)/2 >8 > 2^2 (puissance) >4 > sqrt (9) (racine carre) >3

pour les modifier ou/et les rexcuter.

Remarque : A laide des flches de dplacement du clavier vous pouvez rappeler les dernires instructions

crer un objet Un objet peut-tre cr laide de loprateur assigner qui scrit avec le symbole < suivi du signe Cet objet est stock dans la mmoire vive et peut tre modifi en lui assignant une autre valeur. > n <- 100 afficher les objets en mmoire En tapant le nom dun objet le contenu de ce dernier est affich (quand cet objet ne requiert pas des arguments). >n > 100 > n <- 100/2+5 >n > 55 Il est possible dafficher le nom des objets stocks ou /et leur contenu dans la mmoire vive : > n <- 12 > m <-8 >s <- 12+8 >nom <- dupont ls() [1] n m s Dupont > ls.str() m : num 8 (num, variable numrique) n : num 12 s : num 20 nom : chr "dupont" (chr,variable caractre)

Help (laide en ligne)

R dispose dune aide en ligne trs exhaustive et qui peut vous tre trs utile. En tapant ? suivi du nom de linstruction ou help(nom de linstruction). La description de cette instruction, ses arguments, le type dobjet retourn par cette instruction sont affichs ainsi quelques exemples dutilisation. > help.start() Cette instruction permet de lancer votre navigateur (par exemple Mozilla ou Internet-explorer) et daccder directement laide html file:///C:/PROGRA~1/R/rw1081/doc/html/rwin.html

2.2 Importer, exporter des donnes


Le langage R peut lire des donnes provenant de sources externes sous forme de fichiers, comme il peut en crer et sauvegarder dans des formats transportables. La fonction qui permet la lecture de ces fichiers est read.table, R dispose dautres variantes de cette fonction (scan(), read.fwf,). Ces fonctions ncessitent des arguments qui permettent la lecture de tous les fichiers (csv, texte dlimit, largeur fixe) tout en prcisant le format interne du fichier (prsence de noms de variables, type de sparateur, prsence de variables caractre,.). Nanmoins le format le plus simple importer dans R reste les fichiers sauvegards dans le format .txt. Importer des donnes Dans la plupart des cas un fichier de donnes est cr partir dun tableur ou un traitement de texte. Le fichier data1.xls a t cr avec Excel et contient les donnes ci-aprs :

Pour limporter dans R, commencer par le sauvegarder sous forme texte dans votre rpertoire de travail (par exemple, c:\userdata ) comme suit :

A laide de la commande read.table() vous pouvez lire le fichier data1.txt dans R : > read.table(data1.txt) Cette instruction va lire le contenu du fichier data.txt :

R nomme par dfaut les variables V1, V2, V3,..etc. Par consquent la premire ligne contient le nom des variables.

Largument h=T , header=TRUE indique que dans le fichier data1.txt la premire ligne correspond au nom des variables. Si le fichier contient des donnes manquantes reprsentes par un caractre (tout caractre sauf un blanc). Dans ce cas il suffit dutiliser largument na.strings= NA, ou NA est le caractre reprsentant la donne manquante. 8

> read.table(nom du fichier, na.strings=NA) Conserver le contenu du fichier

On peut conserver le contenu du fichier et le stocker dans un objet quon peut manipuler dans R :

la commande attach() permet de manipuler les variables sparment en les appelant par leur nom :

Remarque 1 : si la premire ligne ne contient pas le nom de la variable, dans ce cas chaque variable peut tre
appele sparment laide de linstruction data2$V1, data2$V2,etc Remarque 2 : pour afficher les nome des variables contenues dans un fichier il suffit de taper names(data2) :

R dispose dun tableur, lappel du tableur se fait laide de linstruction edit() > edit(data2)

Le contenu du fichier peut tre modifi laide de lditeur. Ne pas oublier de confirmer les modifications en sauvegardant le fichier dans un autre objet : > data2modif <- edit(data2) ou bien laide de la commande fix() : > fix(data2)

Il est possible dimporter un fichier dans R depuis un rpertoire distant par exemple depuis un site. le fichier data1.txt peut-tre importer depuis le site http://www.biostat.envt.fr/~lyazrhi/data1.txt il suffit de taper :

Remarque :

Exporter des donnes

On peut exporter un objet cr dans R dans un autre logiciel par exemple Excel ou Word. Pour cela on utilise la fonction write.table() qui sauvegarde le contenu de lobjet dans un fichier texte :

file=

row.names col.names

correspond au nom du fichier o sera sauvegard le contenu de lobjet. quote, si FALSE les variables et leur contenu ne seront pas considrs comme caractre et donc ne seront pas crits entre . si FALSE indique quil ne faut pas crer dans le fichier une colonne contenant les noms des lignes. si FALSE mme chose pour les noms des colonnes.

Pour consulter le fichier cr (data2expor dans lexemple), vous ouvrez Excel puis fichier-ouvrir et diter le fichier cr qui se trouve dans votre rpertoire de travail. Utiliser lhistorique

Lutilisation de lhistorique nest possible que si vous avez rpondu oui en quittant R :

Lhistorique de toutes les commandes utilises est sauvegard dans le fichier .Rhistory. Vous pouvez lditer avec un diteur de texte de votre choix :

Cet historique peut-tre utilis dans une autre session, pour cela vous pouvez louvrir laide de la commande load history du menu File :

10

Ensuite avec les flches ``en haut et ``en bas du clavier vous rxecuter toutes les commandes en les modifiant ventuellement. Conserver les rsultats dune analyse

Par ailleurs on peut conserver les commandes et/ou les rsultats affichs dans la fentre principale de R ou des graphiques dans un document (Word par exemple). Pour cela il suffit de slectionner avec la souris les rsultats que vous souhaitez inclure dans un rapport ou conserver dans un document et de faire un copier/ coller. Sinon, Les rsultats peuvent tre renvoys automatiquement dans un fichier texte laide de la commande sink() : > sink('sortie.txt') > a=1:10 (gnre une suite de nombres de 1 10) >a >b=a/4 >b > sink() (ferme le fichier rsultat et redirige les sorties lcran) Vous pouvez ouvrir le fichier sortie.txt avec un Word par exemple

2.3 Crer, gnrer, saisir des donnes


R dispose dune large bibliothque de fonctions mathmatiques et de densit de probabilits qui permettent de crer, transformer des donnes ou de les gnrer et de les stocker dans des fichiers. R permet aussi la saisie directe dun tableau de donnes. Saisir des donnes On peut saisir les donnes et les stocker dans un fichier en les tapant au clavier. Pour cela on peut les saisir colonne (vecteur) par colonne en utilisant la commande scan() ou c(), ou bien les saisir sous forme de table (matrice) laide de la commande data.frame() ou matrix(). Par exemple supposons que lon dispose de deux variables taille (cm) et poids (kg) mesurs sur 4 individus : taille : 168 ; 175 ; 172 ; 182 poids : 67 ; 75 ; 69 ; 81 1re mthode : Avec la commande scan(), on saisie au clavier les valeurs de chacune des deux variables, puis la commande data.frame() permet des les stocker dans une mme tableau qui peut tre transportable :

11

logiciels.

Remarque : Avec la commande write.table (voire plus haut) on peut exporter le fichier dans dautres

2me mthode : On peut utiliser la fonction data.frame() qui fait appel la commande c() : > data.frame(taille=c(168 ,175,172,182), poids=c(67,75,69,81)) 3me mthode : On peut utiliser la commande matrix() qui fait appel aussi linstruction c(). > matrix(data=c(168,67,175,75,172,69,182,81),nr=4,nc=2,byrow=TRUE) [,1] [,2] [1,] 168 67 [2,] 175 75 [3,] 172 69 [4,] 182 81 Les arguments nr et nc dclarent le nombre de lignes et de colonnes et largument byrow si TRUE indique que le remplissage de la matrice se fait par ligne. Gnrer des donnes Lutilisation de variables qualitatives en statistique est trs frquente en particulier on a souvent besoin de coder certains facteurs comme le facteur individu, traitement, levage,etc. linstruction : gnre une suite dentiers > x <- 1 :20 x contient les entiers 1 ;2 ;3 ;4 ;20 la fonction seq() permet de gnrer une suite de nombres avec un incrment donn > x <- seq(1,4,0.5) x contient la suite 1 ; 1.5 ; 2 ;2.5 ;3 ;3.5 ;4 la fonction rep() gnre une suite dun mme nombre > x <- rep(1 ;5) x contient la suite 1 ;1 ; 1;1 ;1 La commande gl(k,n) permet de gnrer n rplications dun mme nombre pour chacun des k niveaux dun facteur. Cette fonction admet deux arguments (trs utiles pour lanalyse de la variance !!) : lenght et labels. Voici 3 exemples : > x <- gl(3,2) x contient : 11 22 33 > x <- gl(3,2,12) 12

x contient : 11 22 33 11 22 33 > x<- gl(3,2,c(A, B,C)) x contient : AABBCC Gnrer des observations (nombres alatoires)

Le recours la simulation de donnes est trs frquent en statistique, aussi R dispose-t-il dune bibliothque de fonctions de densit de probabilits qui permettent de simuler des chantillons dobservations provenant dune loi de probabilits donne. Le tableau ci-dessous donne la liste et les commandes correspondantes des lois de probabilits usuelles : Loi de Probabilits Fonction

Normale Student Khi-deux Fisher Uniforme Poisson Binomiale Hypergomtrique Statistique de Wilcoxon

rnorm(n, mean=,sd=) rt (n, df) rchisq(n, df) rf(n, df1, df2) runif(n, min=, max=) rpois(n, lambda) rbinom(n, size, prob) rhyper(nn, m, n, k) rwilcox(nn, m, n), rsignrank(nn, n)

Toutes les fonctions peuvent tre adaptes en changeant la premire lettre de la fonction : rfonction() pour gnrer des observations, dfonction() pour calculer la densit de probabilits , pfonction() pour calculer la densit de probabilits cumules et qfonction() pour calculer le quantile correspondant une probabilit donne. Exemples : > pnorm(1.96,mean=0,sd=1) [1] 0.9750021 > qnorm(0.975,mean=0,sd=1) [1] 1.959964 > x <- rnorm(6, mean=0,sd=1) gnre 6 observations provenant dune loi normale centre rduite >x [1] 0.9720369 0.1537153 0.8520248 -0.5951156 2.0430104 -1.4644110

3. Quelques fonctions statistiques lmentaires


Dans ce paragraphe nous allons dcrire les fonctions usuelles que lon rencontre en statistique. Pour chaque fonction nous nous contenterons dvoquer son utilisation avec les arguments par dfaut. Ne pas hsiter faire appel laide en ligne pour avoir plus dinformations sur chaque fonction. La fonction summary() appliqu un fichier ou une variable renvoie les statistiques lmentaires, min, max, moyenne et les trois quartiles.

13

On peut aussi demander les statistiques lmentaires pour le poids seulement :

Les statistiques lmentaires sur la taille chez les hommes :

Les statistiques lmentaires sur la taille suivant le sexe :

14

Le tableau suivant donne un descriptif des diffrentes fonctions statistiques usuelles :

fonction

description

sum(x) prod(x) max(x) min(x) range(x) length(x) mean(x) median(x) var(x) sd(x) quantile(x) cov(x) cor(x) cov(x,y) cor(x,y) sort(x) table(x,y)

la somme des lments de x les produits des lments de x la plus grand des lments de x le plus petit des lments de x ltendue des lments de x le nombre dlments de x la moyenne des lments de x la mdiane des lments de x la variance des lments de x (calcule avec n-1) lcart-type de x les 3 quartiles de x matrice de variances-covariances matrice des corrlations covariance entre x et y corrlation entre x et y ordonne les lments de x et y table de contingence

4. Faire des graphiques avec R


Comme pour les statistiques lmentaires, la fonction plot est une fonction gnrique pour les graphiques. Cette fonction admet plusieurs arguments (pour sen convaincre taper ?plot), nous allons dcrire certains dentre eux.

A lexcution de cette commande le graphique saffiche dans une fentre :

15

et en cliquant avec le bouton droit de la souris sur le graphique vous pouvez le sauvegarder dans un fichier (2 types de format proposs) ou bien le copier et le coller par exemple dans un document Word. Voici les diffrentes commandes des graphiques usuels : Fonction graphique plot(x) plot(x,y) coplot(x~y|z) stripchart(x) hist(x, nclass=..) qqnorm(x) boxplot(x) piechart(x) boxplot(x~y) description graphe des valeurs de x (en y ) contre leurs rangs (en x) graphe de x contre y graphe de x contre y pour chaque valeur de z consiste mettre les points sur un axe histogramme de x quantiles de x en fonction de celles attendues dune loi normale (droite dHenry) boite moustaches de x diagramme en camembert de x boite moustaches de x pour chaque niveau du facteur y

Pour avoir la liste de toutes les options des commandes graphiques et leur dfinition vous pouvez utiliser help(par) ou ?par. En voici quelques unes avec la fonction plot() : plot(x,y. type= , xlab= titre de laxe des x , ylab=titre de laxe des y, xlim=c(-a,a), ylim=c(-b,b), pch=--, col= , bty= , tcl=--, main=titre du graphique, las=--, cex=--, lty=--) type : spcifie le type de graphique, p : points, l : lignes, b : points connects par des lignes, o lignes recouvrant les points, h : lignes verticales, s : escaliers, les donnes tant reprsentes par le haut des lignes, S : les donnes tant reprsentes par le bas des lignes. xlim, ylim : dfinissent les limites de laxe des x et des y pch : spcifie le symbole utilis pour reprsenter les points. Tous les symboles ont un code, (20), (5), (22), (6), (10), (13), (18), (8), (17), (1)etc.) col : la couleur du symbole utilis bty : spcifie la forme du cadre du graphique (o,u,l,7,c,]), la forme du carde ressemblant au caractre choisi. Le caractre n supprime le cadre du graphique las : spcifie la disposition des annotations des axes : 0, parallles aux axes, 1 horizontales, 2 perpendiculaires aux axes, 3 verticales) cex : contrle la taille des symboles. lty : spcifie le type de ligne trace (1 : continue, 2 : tiret, 3 : gras, 4 : point et tiret5 : tiret long, 6 : tiret long et court) tcl : spcifie la longueur du trait de graduation par dfaut tcl=-0.5 cex.axis, cex.lab, cex.main, contrlent respectivement la taille des annotations des axes, la taille des titres daxes et la taille du titre du graphique

Un exemple de graphique :

Le rsultat obtenu avec cette commande est donn dans la figure ci-dessous.

16

On peut aussi reprsenter la taille en fonction du poids et par sexe et rajouter une lgende :

17

Il existe dans R dautres commandes graphiques qui permettent de rajouter ou de modifier certaines options une fois que le graphique est fait. points(x,y) : ajoute des points au graphique lines(x,y) : ajoute des lignes text(x,y,labels,..) : ajoute un texte au coordonnes (x,y) abline(a,b) : trace une ligne de pente b et dordonne lorigine a abline(h=y) : trace une droite parallle laxe des x abline(v=x) : trace une droite parallle laxe des y abline(lm(y~x)) : trace la droite de rgression de y sur x legend(x,y) : ajoute une lgende aux coordonnes (x,y) avec le symbole donn par legend.

5. Test, Anova et Rgression linaire avec R


Dans ce paragraphe nous allons prsenter travers des exemples les tests les plus utiliss en statistique infrentielle. Cette liste nest pas exhaustive, vous pouvez utiliser laide en ligne pour plus de dtails sur les options supplmentaires ou pour connatre la commande correspondant un test donn.

5.1 Comparaison de deux moyennes

Dans ce paragraphe nous allons dcrire comment faire un test de Student pour comparer deux moyennes. On souhaite comparer les tailles moyennes chez les hommes et les femmes, les donnes utilises sont celles du fichier data1.txt (http://www.biostat.envt.fr/~lyazrhi/data1.txt). Cas o les variances sont homognes (test de Student)

Cas o les variances ne sont pas homognes (test dAspin-welch)

18

5.2. Comparaison de deux variances


On souhaite comparer les dispersions des tailles chez les hommes et les femmes

Test de Bartlett

5.3. Comparaison de deux pourcentages


On souhaite comparer le pourcentage de malades en fonction du sexe. Pour cela on peut dabord crer une table de contingence laide de la commande table().

Test du Khi-deux

Le test du Khi-deux pour comparer les pourcentages de malades se fait de la faon suivante :

Test de Fisher exact

5.4. Test de conformit

Test de Kolmogorov-Smirnov
On souhaite tester la normalit de la variable taille, pour cela on utilise la commande ks.test(), cette commande permet de tester si lchantillon provient bien dun loi normale de moyenne m estime par la moyenne de lchantillon mean(var) et dcart-type sigma estim par lcart-type de lchantillon sd(var). 19

Remarque : cette commande peut-tre adapte toute autre loi de probabilits, utiliser laide en ligne
pour en savoir plus.

5.5. Anova 1 facteur


Suposons que lon veuille tudier leffet du facteur sport 4 niveaux sur la variable poids. Pour cela il faut dclarer la variable sport comme un facteur 4 niveaux laide de la commande as.factor(). Lanova seffectue laide des commandes aov() et anova() :

5.6. Comparaisons multiples


Pour comparer plus de deux groupes, R offre la possibilit de faire des comparaisons multiples. Ces comparaisons multiples viennent la suite dune analyse de la variance a fin quelles puissent seffectuer par rapport la bonne rsiduelle.

Correction de bonferroni

la liste exhaustive de toutes les corrections proposes.

Remarque : R propose dautres corrections que celle de Bonferroni, il suffit de taper ?p.djust pour afficher

Il arrive quon veuille comparer deux niveaux du facteur contrl (contrast), pour cela on utilise la commande t.test() :

20

Test de Tukey HSD (Honest Significant Differences)


R offre la possibilit dutiliser dautres tests de comparaisons multiples, par exemple le test de Tukey HSD. On commence par une analyse de la variance puis le test de Tukey :

5.7. ANOVA 2 facteurs


Dans ce paragraphe on se propose dtudier leffet des facteurs sexe et fumeur avec une ventuelle interaction sur la variable poids. Comme pour lANOVA 1 facteur, il convient de dclarer les variables sexe et fumeur comme facteurs.

5.8. Rgression linaire


La rgression linaire dans R se fait laide de la commande lm (linear model). Nous allons lilluster travers un exemple : Supposons que lon veuille faire une rgression linaire de la taille sur le poids (fichier data1.txt) : 21

Remarque : Par dfaut la rgression est faite avec ordonne lorigine. Les rsultats affichs par sont comme suit :

Pour tracer la droite de rgression il suffit de taper la commande suivante :

R offre la possibilit de faire les diffrents graphiques usuels pour valider les conditions ncessaires une rgression linaire. Ces graphiques sont au nombre de quatre, et pour pouvoir les visualiser simultanment dans la mme fentre graphique on utilise la commande mfrow=() : 22

mfrow=c(2,2) , signifie quon divise la feuille graphique en 4 graphiques, le rsultat est donn ci-dessous.

Remarque : Pour revenir laffichage par dfaut de la fentre graphique, il suffit de tape la commande

6 Ecrire une fonction dans R


Il est possible dcrire une fonction (macro) personnalise constitue dune suite de commandes laide dun diteur de texte ou tout simplement directement dans lditeur de fonction de R. Pour cela il suffit de taper la commande fix(nom de la fonction) qui ouvre automatiquement lditeur de fonction de R :

23

La dfinition dune nouvelle fonction se fait sous la forme : nom_de la fonction <- function(arg1,arg2,..) { bloc dinstructiuons }

Remarque : Si la nouvelle fonction na pas besoin darguments pour sexcuter, remplacer


fuction(arg1,arg2,) par function() En voici un exemple : fregresssion <-function() { par(mfrow=c(2,2)) x <-rnorm(12,6) y <- rnorm(21,9) plot(x,y) abline(lm(y~x)) hist(x) hist(y) } Pour excuter la fonction fregression, il suffit de taper fregression()

24

You might also like