Vous êtes sur la page 1sur 22

Support de Cours sur le logiciel R

Master Statistiques Appliques

Table des matires


1 Introduction gnrale 2 Introduction sur R 3 La session R 4 Les 4.1 4.2 4.3 4.4 4.5 4.6 objets, cration et types Cration . . . . . . . . . . . . . . Achage de la valeur dun objet Les dirents types dun objet . . La valeur manquante . . . . . . . Suppression dobjets . . . . . . . Les attributs . . . . . . . . . . . 1 1 1 2 2 2 2 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 6 7 7 7 8 8 8 8 9 9 9 9 9 10 10 10 10 11 11 11

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

5 Les oprateurs arithmtiques 6 Les oprateurs logiques 7 Les 7.1 7.2 7.3 7.4 7.5 7.6 vecteurs Dnition et construction . . . . . . . . . . . . . . Arithmtique . . . . . . . . . . . . . . . . . . . . . Quelques oprations . . . . . . . . . . . . . . . . . Les vecteurs de caractres . . . . . . . . . . . . . . Les vecteurs logiques . . . . . . . . . . . . . . . . . Slection dune partie dun vecteur . . . . . . . . . 7.6.1 Slection par des vecteurs dentiers positifs 7.6.2 Slection par des vecteurs dentiers ngatifs 7.6.3 Slection par des vecteurs de logique . . . . 7.6.4 Cas classiques . . . . . . . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

8 Les 8.1 8.2 8.3

facteurs Cration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Quelques fonctions sur les facteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Quelques remarques sur la conversion en numrique des facteurs . . . . . . . . . . . . .

9 Les dates 10 Les Matrices 10.1 Cration . . . . . . . . . 10.2 Slection . . . . . . . . . 10.3 Oprations particulires 10.3.1 Algbre linaire . 10.3.2 Fonctions utiles . 10.4 Les tableaux array . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

11 Les listes 11.1 Cration, extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Listes : utilit et quelques fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Listes particulires : dimnames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Les Data Frame 12.1 Cration, extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Attach et detach (data frame et listes)

14 Import - Export 14.1 Import de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.2 Import de script et fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.3 Export de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 La programmation 16 Les fonctions 16.1 Dnition, appel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.2 Les fonctions, arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Les graphiques 17.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17.2 Personnalisation des graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17.3 Exemples de fonctions et doptions des graphiques . . . . . . . . . . . . . . . . . . . . 18 Formules sous R 18.1 Formules sous R . . . . . . . . . . . . . . . . 18.2 Formules sous R, transformation des variables 18.3 Formules sous R, transformation et protection 18.4 Formules sous R, Interaction, eets nids . . . 18.5 Formules sous R, Facteurs . . . . . . . . . . . 18.6 Formules sous R, Contrastes et facteurs . . . 18.7 Formules sous R, Contrastes et facteurs . . . 18.8 Codage des facteurs . . . . . . . . . . . . . . 18.9 Codage des facteurs, suite . . . . . . . . . . . 19 Modlisations, quelques exemples 20 Rgles de recherches des objets 21 Librairies de programmes (packages) 22 Rien ne marche ?

11 11 11 12 12 12 12 13 13 13 13 14 14 14 15 15 15 15 16 16 16 17 17 17 18 18

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

ii

Formation R

Master Statistiques Appliques Support de Cours sur le logiciel R Master de Statistique Applique

avertissement : cette prsentation nest pas un cours mais simplement un support de cours. Les explications sont succinctes voire inexistantes et les exemples sont encore plus rares... Les erreurs de typographie seront srement rencontres quelque-part, en dernier lieu laide en ligne a toujours raison...

Introduction gnrale

R est un logiciel de la famille GNU La prsentation de la page http://www.gnu.org en franais est cite ci-dessous. Le projet GNU a t lanc en 1984 an de dvelopper un systme dexploitation complet, semblable Unix et qui soit un logiciel libre : le systme GNU. ( GNU est lacronyme rcursif the GNUs Not Unix ; on le prononce gnou avec un G audible). Des variantes du systme dexploitation GNU, bases sur le noyau Linux , sont utilises largement prsent ; bien que ces systmes soient communment appels par le terme Linux , ils le seraient plus exactement par GNU/Linux . Les logiciels GNU sont nombreux et divers comme les compilateurs C, C++ et fortran (gcc), les librairies, les diteurs de textes (emacs), les environnements (GNOME), les logiciels de calcul scientique A (octave), ldition (TEX, L TEX) les jeux dchec (chess) etc.. R (ou GNU-R) est un logiciel de statistiques interactif et interprt. Il fourni un langage de commande trs souple et qui est ouvert : il possde des interface vers dautres programmes comme C et Fortran. En outre il est le proche cousin de Splus qui est un logiciel payant. Il permet entre autre la manipulation de donnes, les oprations mathmatiques classiques (cos, sin etc...), les nombres complexes, les donnes discrtes, lalgbre linaire les techniques statistiques comme, la rgression, les modles GLM, la rgression non-linaire, le bootstrap, les arbres hirarchiques, les arbres de rgression, les techniques multivaries, les nombres alatoires et les distributions, les sries chronologiques etc... les reprsentation graphiques histogrammes, diagrammes en bton, boxplot, camemberts, lissage, arbres, dessins 2D et 3D, courbes de niveaux, dessins conditionnels etc... La page de prsentation de R est http://www.R-project.org ; elle permet de tlcharger le logiciel gratuitement, de suivre ses volutions davoir des rponses aux questions frquemment poses (FAQ en anglais)...

Introduction sur R

R utilise des commandes Les commandes font intervenir des oprateurs et des fonctions les commandes oprent sur des objets Pour appeler des fonction intgres il sut de taper son nom suivi de ses arguments entre parenthses : > sqrt(x) (racine carre) > mean(x) (moyenne) > help(mean) (aide en ligne sur la fonction, ici la moyenne mean) > help.start() (lancement de laide graphique au format html - plus convivial) > q() (quitte R)

La session R

Lorsque lon ouvre le logiciel R, on dit que R ouvre une session. Il cherche une trace ventuelle dune session antrieure garde sous la forme de chier image au format interne de R. Si il en trouve une il la charge et vous retrouvez les objets et fonctions de votre prcdente session. Sinon aucun objet nest prsent. Pour consulter la liste des objets disponibles tapez un des deux ordres suivants

Formation R > objects() > ls()

Master Statistiques Appliques

Il est quelquefois utile de nacher que les objets contenant une certaine suite de caractre, par exemple tout ceux qui commance par a > ls(pattern="^a") Tous les objets crs lors de la session sont stocks dans un chier image et votre sortie R vous demande si il faut ou non le garder. On peut stocker une image de manire intentionnelle en utilisant (sous windows) le menu le/save. Cela permet de sparer les chiers stockant des objets R appartenant des projets dirents. Pour les rcuprer il sut dutiliser le menu le/load. Il est fortement conseill de sparer vos objets en autant dimage que vous avez de projets dirents, par exemple le projet Rhne-Alpes, formation R, etc...

4
4.1

Les objets, cration et types


Cration

Simplement par aectation avec les oprateurs <-, -> en lui donnant un nom : > b <- sqrt(2) (cre lobjet b) > x<-b (x reoit la valeur b) > x=b (x reoit la valeur b) > b -> x (x reoit la valeur b) Si un objet nexiste pas laectation le cre. Sinon laectation crase la valeur prcdente.

4.2

Achage de la valeur dun objet

> a (ache le contenu de a) > q (ache le contenu de la fonction q qui permet de quitter) > print(a) (ache le contenu de a)

4.3

Les dirents types dun objet

Objets simples (ou atomiques) : ce sont des objets qui ne comportent que des lments de mme mode Objets composs (ou htrognes) : ce sont des objets qui comportent des lments qui peuvent tre de modes dirents Les principaux modes sont null (objet vide) : NULL logical (booleen) : TRUE, FALSE ou T, F numeric (valeur numrique) : 1, 2.3222, pi, 1e-10, character (chane de caractre) : bonjour, "K" complex (nombre complexe) : 2+0i, 2i Les conversions dun mode un autre de manire explicite as.logical as.numeric as.complex as.character Les conversions dun mode un autre de manire implicite se font dans cet ordre logiques numriques complexes caractres

Formation R

Master Statistiques Appliques

Il est possible de tester un objet pour savoir si il est dun mode particulier, le rsultat est vrai ou faux, cest dire un boolen (TRUE ou FALSE) : is.null(x) is.logival(x) is.numeric(x) is.complex(x) is.character(x)

4.4

La valeur manquante

Elle est note NA. Ce nest pas un vritable mode car elle peut tre dans des objets atomiques, mais elle distingue la valeur manquante et possde ses propres rgles de calcul. Par exemple > NA+1 renvoie NA... Pour savoir si il existe une valeur manquante au moins dans lobjet x il faut poser la question > is.na(x), cela renvoie un objet simple de boolen de mme longueur que x. Dans un objet simple la question est pose lment par lment ; ainsi dans le cas dun vecteur cela renvoie un vecteur de mme longueur que x avec des T si llment correspondant de x est NA et des F sinon. Il existe aussi les valeurs spciales Inf pour linni et NaN pour not a number, valeurs rsultants de problmes calculatoire (par exemple exp(1e10) ou log(-2) dans lordre).

4.5

Suppression dobjets

Par dfaut R garde tous les objets cres dans la session, sauf si lon ne sauvegarde pas la session la sortie de R. Il est donc recommand de faire souvent le mnage. Pour supprimer un objet nomm a > rm(a) Pour supprimer des objets > rm(a,b) Enn pour supprimer une liste dobjets qui possde une partie de nom en commun, ici la lettre a, on utilise > rm(list=ls(pattern=".*a.*"))

4.6

Les attributs

Les attributs intrinsques (toujours prsents) Mode (mode) Longueur (length) Les attributs spciques qui varient selon le type dobjet dim, dimnames (voir 11.3) classe Comment les voir ? > attributes(objet) Comment les modier ? > attr(objet,"dim")<-c(10,10) Attribut classe (class) Permet une fonction de connatre la classe de lobjet : lorsquune fonction (gnrique) possde plusieurs mthodes direntes selon la classe. Par exemple lordre plot(x) ne donne pas le mme rsultat (ici il sagit dun dessin) selon que x est un facteur (classe factor) ou un vecteur de numrique contenant les mmes valeurs (voir 7 p.4 et 8 p.7). unclass(objet) enlve lattribut de classe

Formation R

Master Statistiques Appliques

Les oprateurs arithmtiques

parenthses () exponentiation ^ moins unaire squence : division entire, congruence %/% %% multiplication, division * / addition + aectation <- -> Le tableau est ordonn du plus prioritaire (en haut) vers le moins prioritaire (en bas).

Les oprateurs logiques


> >= < <= != == %in% 1

suprieur (strictement) suprieur infrieur (strictement) Comparaison : infrieur dirent gal dans un ensemble ngation (not) ! et logique (and) &, && Relation : ou logique (or) |, || ou exclusif (xor) xor(,)

7
7.1

Les vecteurs
Dnition et construction

Cest un objet atomique compos dun ensemble ordonn de valeurs (les composantes ou coordonnes ou lments). Le nombre dlments constitue lattribut longueur. Construction : direntes mthodes sont possibles dont : Construction par la fonction collecteur c() > x<-c(10.4,5.6,12,78,42.3) vecteur de numriques 5 lments > x<-c(x,10,23,c(12,15,46),x) vecteur 20 lments Une constante est un vecteur de longueur 1 > x<-c(A,CVER) vecteur de caractres 2 lments > x<-c(TRUE, FALSE) vecteur de logiques 2 lments Construction par loprateur squence : > 1:30 gnre le vecteur c(1,2,...,30) Construction par la fonction seq() > seq(1,30,by=0.5) c(1,1.5,2,2.5,...,30) > seq(1,30,length=300) 300 points compris entre 1 et 30 et quidistants. Construction par la fonction rep() > rep(1,4) gnre le vecteur c(1,1,1,1) Construction par la fonction scan(), R demande alors de rentrer le premier lment, puis le second ... par conversion explicite : as.vector()
1. il ne sagit pas dun oprateur logique habituel : x%in%y prend tous les elements 1 par 1 de x et regarde si ils sont gaux une des coordonnes de y (au moins), si oui la coordonne du resultat est TRUE sinon FALSE. Le resultat renvoy a donc autant de coordonnes que le vecteur x

Formation R

Master Statistiques Appliques

Remarque on peut poser la question R si lobjet est un vecteur > is.vector(x) et la rponse est TRUE ou FALSE.

7.2

Arithmtique

Les vecteurs peuvent tre utiliss dans des expressions arithmtiques. Les oprations sont eectues lment par lment et si les vecteurs sont de longueur direntes, le rsultat possde la longueur du plus long : x y y rallong x+y = = = = -1 2 2 1 0 1 1 1 1 2 2 3 4 (2 6 1 2)

En particulier une constante est rpte ! > x*12 multiplie par 12 tous les lments de x. > x+2 ajoute 2 tous les lments de x.

7.3

Quelques oprations

valeur absolue abs() racine carre sqrt() trigonomtrie cos(), sin(), tan(), asin(), acos(), atan() exponentielle exp, log(), log10() statistiques max(), min(), range(), mean(), median(), var(), IQR(), quantile(), sd(), cov(), cor() somme produit sum(), prod(), diff(), cumsum(), cumprod(), cummin(), cummax() tri sort() order() rank() renverse rev() arrondis round(x,digits=2), floor(), signif() mathmatiques beta(), gamma(), choose(), factorial(), digamma(), psigamma()

7.4

Les vecteurs de caractres

Cration par les fonctions seq(), rep(), c() Cration par la fonction format(1:12) qui permet la mise en forme des donnes numriques (chane de caractre de mme longueur), voir aussi toString() Manipulations concatnation : paste() > paste(c(X,Y),1:10,txt,sep=.,collapse=NULL) donne c(X.1.txt, Y.2.txt, X.3.txt,..., X.9.txt, Y.10.txt) > paste(c(X,Y),1:10,sep=.,collapse="hop") donne "X.1hopY.2hopX.3hopY.4hopX.5hopY.6hopX.7hopY.8hopX.9hopY.10" extraction : substr() > substr("abcdef",2,4) donne "bcd"

7.5

Les vecteurs logiques

Ce sont des boolens et sont en gnral gnrs par des conditions grce aux oprateurs logiques. Ils peuvent tre aussi gnrs par les fonctions seq(),rep(), c(). Ils permettent des slections complexes (voir 7.6.3 p.6) ou des oprations de conditions (voir 15 p.12). > 1>0 Vecteur logique de longueur 1 : TRUE > x>13 vecteur logique de mme longueur que x. Ses lments ont la valeur T quand llment correspondant satisfait la condition (ici suprieur 13) et la valeur F sil ne la satisfait pas (donc ici infrieur ou gal 13).

Formation R

Master Statistiques Appliques

Utilisation en arithmtique ordinaire : les F sont transforms en 0 et les T sont transforms en 1 : > x <- -1:1 (vecteur (-1,0,1)) > test <- x>0 (vecteur (F,F,T)) > (1+x^2)*(x>0) (vecteur (0,0,2)) On peut aussi utiliser les fonctions > all(test) renvoie un boolen : TRUE si tous les lments de test sont vrais ou FALSE sinon (ici cest faux) > any(test) renvoie un boolen : TRUE si au moins 1 des lments de test est vrai ou renvoie faux sinon (ici cest vrai)

7.6

Slection dune partie dun vecteur

Elle sopre avec loprateur de slection [] et un vecteur comme ceci : > x[vecteur] Le vecteur peut tre soit un vecteur dentiers positifs, soit un vecteur dentiers ngatifs, soit vecteur de logiques. 7.6.1 Slection par des vecteurs dentiers positifs

Les entiers sont les indices des lments slectionner et doivent tre compris entre 1 et length(x) La longueur du vecteur dindice peut tre quelconque et sa longueur donne la longueur du rsultat : > v<-1:100 > v[6] donne le sixime lment de v : 6 > v[6:8] donne les 6me , 7me et 8me lments de v > v[c(6,6,5,1:2)] donne les 6me , 6me , 5me , 1er et 2me lments de v > v[10:1] donne les 10me , 9me ... 1er lments de v. 7.6.2 Slection par des vecteurs dentiers ngatifs

Le vecteur indique les indices des lments exclure du rsultat : > v[-(1:5)] donne v sans ses 5 premiers lments. Remarque : on ne peut pas mlanger des indices positifs et ngatifs... 7.6.3 Slection par des vecteurs de logique

Elle constitue un des points commun avec des langages de script comme octave et permet lextraction dlment particulier que lon sait caractris par un priphrase (comme llment qui possde une valeur infrieure 40 mais suprieure 33.5) qui peut se traduire en condition logique : > v<-1:100 > v[(v>40)&(v<33.5)] : les lments de v qui possdent une valeur infrieure 40 et suprieure 33.5 > v[v%%5==0] donne les lments de v multiples de 5 An de comprendre ce qui se passe dcomposons la commande en 2 parties : > v%%5==0 : F F F F T F F F F T F ... > v 1 2 3 4 5 6 7 8 9 10 11 ... Le rsultat ne garde que les valeurs en regard des valeurs vraies (T) : 5, 10 etc.. 7.6.4 Cas classiques

Nous pouvons substituer un sous ensemble slectionn, des valeurs nouvelles : > x[is.na(x)]<-0 les lments NA reoivent la valeur 0 > y[y<0]<- -y[y<0] les lments ngatifs de y reoivent moins (unaire) des lments ngatifs de

Formation R

Master Statistiques Appliques

y, ce qui est quivalent lordre suivant : > y<-abs(y) Recherche de valeur(s) dans un ensemble %in% > ensemble <- c(1990, 1994, 1995, 1997) > tous <- seq(min(x), max(x)) > bool.presents <- tous %in% x > val.absents <- tous[!all.x %in% x] Recherche de la coordonne du plus petit lment > (1:length)[x==min(x)] # choix 1 > which(x==min(x)) # choix 2 > which.min(x) # choix 3 Recherche des coordonnes des valeurs manquantes NA > which[is.na(x)]

Les facteurs

Ce sont des vecteurs ayant 2 attributs supplmentaires permettant la manipulation de donnes qualitatives. Les facteurs forment une classe dobjet et bncieront donc de traitement particulier pour certaines fonctions par exemple plot().

8.1

Cration

2 types dirents les facteurs non ordonns (mle, femelle) appels factor les facteurs ordonns (riche, ais, pauvre) appels ordered Leurs attributs length, mode "character" levels class : "factor" (ou "ordered" "factor", la classe "ordered" est un ranement de la classe "factor") Cration > factor(donnees <,levels,label>) < ... > sont des arguments optionnels > ordered(donnees) > as.factor(donnees) conversion explicite > as.ordered(donnees) conversion explicite > cut coupe en classe de longueur (presque) gale une variable continue (voir aussi co.intervals pour des classes deectifs presque gaux) Remarque on peut poser la question R si lobjet est un facteur > is.factor(x) et la rponse est TRUE ou FALSE. > is.ordered(x) et la rponse est TRUE ou FALSE.

8.2

Quelques fonctions sur les facteurs

levels donne les niveaux du facteurs unclass rend rel un facteur (recode le premier niveau par 1, le second par 2...), garde les attributs (4.6, p.3 ; 8.1 p.7) table(facteur1,facteur2...) donne la table de contingence associe tapply(vecteur,facteur,FUN) applique la fonction FUN au vecteur mais sparment, niveau par niveau du facteur aggregate(vecteur,list(facteur1,facteur2),FUN=mean) applique la fonction moyenne au vecteur mais sparment, niveau par niveau du facteur1 puis lintrieur niveau par niveau du facteur2 (quivalent lordre by de SAS), voir aussi la fonction by().

Formation R

Master Statistiques Appliques

split(vecteur,facteur) spare le vecteur de donnes grce au facteur. Tous les niveau 1 du facteur sont ensembles puis tous les niveaux 2 etc... La sortie est une liste (voir 11).

8.3

Quelques remarques sur la conversion en numrique des facteurs

> x<-factor(c(10,11,13)) > as.numeric(unclass(x)) [1] 1 2 3 > as.numeric(x) [1] 1 2 3 > as.numeric(as.vector(x)) [1] 10 11 13 > as.vector(x) [1] "10" "11" "13"

Les dates

Il sagit dobjet homogne dune classe particulire, la classe date. Pour passer dun vecteur de caractre un vecteur de dates de type 25-01-2005, utiliser > as.Date(x, format = "%d-%m-%Y") Pour changer de format de date et passer un format de type 01/25/05 on utilis > format(x,"%m/%d/%y") Pour en savoir plus, consulter laide help(Date).

10

Les Matrices

Les matrices sont des objets atomiques (mme mode pour toutes les valeurs) dont les lments sont organiss en lignes et en colonnes (dans cet ordre). Elles possdent donc 1 attribut de dimension (dim). Elles possdent aussi un attribut optionnel dimnames (voir 11.3) Lattribut length est le nombre total dlments et le mode celui de chacun de ses lments.

10.1

Cration

par la fonction matrix > m<-matrix(1:8,nrow=2) rangement par colonne (par dfaut) 1 3 5 7 m: 2 4 6 8 > m<-matrix(1:8,ncol=4,byrow=T) rangement par ligne (argument byrow=T) 1 2 3 4 m: 5 6 7 8 > zero<-matrix(0,2,4) matrice (24) remplies de 0. Par conversion explicite > v<-as.matrix(1:3) donne la matrice (31) 1 v: 2 3 Remarque on peut poser la question R si lobjet est une matrice > is.matrix(x) et la rponse est TRUE ou FALSE.

Formation R

Master Statistiques Appliques

10.2

Slection

Les entiers positifs : > m[1,] donne la premire ligne : cest un vecteur ! > m[1,,drop=F] donne la premire ligne sous la forme dune matrice uniligne. > m[,c(2,2,1)] donne la seconde, la seconde et la premire colonne : cest une matrice (23). Les entiers ngatifs : > m[-1,] donne la matrice m sauf la premire ligne, ici cest un vecteur. > m[1:2,-1] donne les 2 premires colonnes de la matrice m sauf la premire colonne. Les logiques : On peut utiliser une slection par des vecteurs de logique (sur des lignes ou sur des colonnes) : > m[,m[1,]>2] : toutes les colonnes de m dont les lments de la premire ligne sont suprieurs 2. On peut utiliser une slection par une matrice de logique : > m[m>2] donne un vecteur de tous les lments de m qui sont suprieurs 2. > m[m>2]<-NA aecte la valeur NA tous les lments de m qui sont suprieurs 2.

10.3

Oprations particulires

Remarque le produit X*Y est lopration (ici produit) lment par lment des 2 matrices, de mme que la somme, lexponentiation, le log, le sinus etc.. 10.3.1 Algbre linaire produit de matrices transposition Identit dordre 5 matrice diagonale avec les valeurs du vecteur vec dans la diagonale produit crois (t(X)%*%Y) dcomposition en valeurs singulires diagonalisation dune matrice, option matrice symtrique inversion de matrice et rsolution de systme linaire dcomposition de Cholesky dcomposition QR

X%*%Y t(X) diag(5) diag(vec) crossprod(X,Y) svd(X) eigen(X,symmetric=T) solve(X,Y) chol(Y) qr(Y) 10.3.2 Fonctions utiles

Dimensions dim(X), nrow(X), ncol(X) donnent les dimensions, le nombre de lignes et de colonnes de X, renvoient NULL si cest un vecteur. Concatnation par colonne : cbind, par ligne rbind 1 opration faire par ligne (1re des 2 dimensions) ou par colonne (2me des 2 dimensions) Somme par colonne : apply(X,2,sum) Moyenne par ligne : apply(X,1,mean) Application de la fonction f(arg1,arg2,arg3) qui prend 3 arguments en entre dont le premier est un vecteur (qui sera chacune des lignes successivement) : apply(X,1,FUN=f,valarg2,valarg3) sweep(mat,2,ecartype,FUN=/) permet de diviser (multiplier, soustraire etc...) chacune des colonnes (ou ligne) par un lment dun vecteur (par exemple le vecteur des cart types par colonne, pour rduire une matrice)

10.4

Les tableaux array

Ce sont des matrices dont la dimension est suprieure 2.

Formation R

Master Statistiques Appliques

10

11

Les listes

La liste est un objet htrogne. Cest donc un ensemble ordonn dobjets qui ne sont pas forcment tous du mme mode ni de mme longueur. Les objets sont appels composants de la liste. Remarquons que les composants peuvent tre de mode =, les composants peuvent avoir un nom, la liste nest pas une classe.

11.1

Cration, extraction

Cration > tablev <- c("Paris","Lyon") > liste <- list(1:3,ville=tablev) les composants peuvent avoir 1 nom > as.list(1:5) conversion explicite, forme une liste 5 lments, qui sont des vecteurs numriques de longueur 1, gaux respectivement 1, 2, 3, 4 5. Remarque : on peut poser la question R si lobjet est une liste > is.list(x) et la rponse est TRUE ou FALSE. Extraction > maliste[[2]] : 1me composante de la liste ville > maliste$ville : 2me composante de la liste (si la composante possde 1 nom) > maliste[[1]][1] : 1er lment de la composante 1 > maliste$ville[1] : 1er lment de la composante ville (si le composant possde 1 nom) Attributs Intrinsques mode (i.e. comme les modes peuvent tre dirents il y a un mode spcial, le mode "list"), length (i.e. le nombre de composants) names

11.2

Listes : utilit et quelques fonctions

Une liste est souvent retourne comme rsultat par des fonctions rsidantes lm(), glm(), aov(), eigen()... Quelques fonctions utiles > lapply : applique une fonction successivement chacune des composantes (comme la moyenne, la variance etc...) > length : nombre de composantes > unlist(maliste) : remet la liste en vecteur (dans le mode le plus bas en priorit) > c(liste1,liste2) : fusion des 2 listes

11.3

Listes particulires : dimnames

Dnition : attribut optionnel dune matrice et qui contient dans une liste deux composantes les noms des lignes et des colonnes. Exemple : > X <- matrix(don,n,p) > dimnames(X)<-list(c("ligne1",...,"lignen"),c("col1",...,"colp")) Modication : > dimnames(X)<-list(NULL,dimnames(X)[[2]]) Slection de lignes et/ou de colonnes grce aux dimnames : > X[c("ligne4","ligne1"),c("col3","col2")]

Formation R

Master Statistiques Appliques

11

12

Les Data Frame

Dnition : Liste de classe "data frame" dont chacune des composantes est de mme longueur (ou pour les matrice de mme nombre de lignes). Les modes bien sr peuvent tre dirents

12.1

Cration, extraction

Cration : > data.frame(mat1,vect,facteur,mat2...) > read.table("nom_du_fichier") > as.data.frame(toto) par conversion explicite Extraction : On peut utiliser la mthode pour les listes ou celle pour les matrices : dframe[[5]], dframe$nomcomp,ou dframe[,5] ou enn dframe[,"nomcomp"]. Remarques : On peut poser la question R si lobjet est un data-frame > is.data.frame(x) et la rponse est TRUE ou FALSE. Pour transformer une matrice en data frame : data.matrix(dframe) Rsum numrique du data frame : summary(dframe) Entre au clavier ou correction (version ?) > dframe <- data.entry(dframe)

13

Attach et detach (data frame et listes)

> attach(dframe,pos=2) permet de saranchir du nom du data frame et de travailler directement avec le nom de ses composantes (en supposant que dans le rpertoire en position 1 il ny a rien de mme nom ; pour la notion de position voir (20, p. 17)) : > dframe$facteur facteur > facteur <- 2 cre alors une variable facteur de valeur 2 dans le rpertoire en position 1. Pour actualiser facteur il faut faire > dframe$facteur <- 2 > detach(dframe) permet de dtacher le data frame Remarque : il est aussi possible dattacher/dtacher des listes.

14
14.1

Import - Export
Import de donnes

le plus basique : scan() (en cas de dicults ou pour rduire le temps daccs) > entree<-scan("nomfich",what="",sep=";") > entree vecteur caractre lu dans un chier ASCII sparateur ; lecture volue vers 1 data frame (voie normale) > entree<-read.table("nomfich",sep=";",header=TRUE) transforme les caractres en facteurs transforme les numriques ayant peu de valeurs direntes en facteur Vrier le mode de chacune des composantes (summary puis data.matrix, as.numeric(as.vector()) ou as.integer()) Voir aussi les nombreuses options de read.table() scan().

14.2

Import de script et fonctions

Utiliser un diteur de texte (wordpad, textpad, notepad, emacs...) permet de taper ses commandes ou ses fonctions en bnciant des fonctionnalits dun diteur (couper/coller, deplacement la souris, remplacer, rechercher etc...). Pour importer un srie dordres R il sut ensuite de

Formation R

Master Statistiques Appliques

12

couper coller la zone interessante si lon souhaite importer un chier entier dordre > source(C:/../nomdufichier) Pour 1 fonction contenue dans 1 chier il est possible dutiliser les ordres > mafonction<-dget(nomfichier) (import de la fonction) > dput(lafonction,C:/../nomfichier) (export de la fonction) Le chier contenant la fonction commence toujours par function(arg1,arg2) ... Pour de meilleure fonctionnalit voir le logiciel GNU-Emacs avec le package ESS (gratuits).

14.3

Export de donnes

le plus basique : write() sortie volue vers 1 data frame > sortie<-write.table(objet,"nomfich",row.names = TRUE, col.names = TRUE)

15

La programmation

Commandes groupes {expr1 ; expr2 ; ...} if (condition) { .... } else expr2 (o expr2 peut tre une expression groupe...) Si le boolen condition est vrai alors le premier groupe dexpression est eectu sinon le deuxime (la condition else est optionnelle) Boucles for (i in vecteur) { .... } while (condition) { .... } Tant que le boolen condition est vrai les expressions {...} sont eectues. Ds que la condition est fausse les expressions {...} ne sont plus eectues. La condition est value en tte de boucle. repeat { .... if (condition) break .....} repeat permet de rpter indniment les ordres {...}. break permet une sortie anticipe des boucles next permet daller la boucle suivante : retour direct vers le dpart de la boucle, ie for, while ou repeat

16
16.1

Les fonctions
Dnition, appel

exemple simple > mafonc<-function(arg1,...) expr > "%!%"<-function(arg1,...) expr plus complet > mafonc<-function(arg1,arg2) { + resu <- arg1+arg2 + return(resu) } ( retourne le rsultat)

Formation R

Master Statistiques Appliques

13

Attention aux variables globales ! ! ! > mafonc<-function(arg1,arg2) { + resu <- arg1+arg2 + resu<- resu + i (variable non dnie, viter !) + return(resu) } appel de la fonction : > mafonc(2,5) ou quivalent > mafonc(arg1=2,arg2=5) ou encore > mafonc(arg2=5,arg1=2)

16.2

Les fonctions, arguments

Arguments par dfaut > mafonc<-function(arg1,arg2=4) appel de la fonction : > mafonc(arg1=2) largument 2 est pris par dfaut gal 4 > mafonc(2,5) ou quivalent > mafonc(arg1=2,arg2=5) ou encore > mafonc(arg2=5,arg1=2) Arguments supplmentaires > mafonc(arg1=2,...)

17
17.1

Les graphiques
Introduction

Ouverture/Fermeture du graphic device : X11() / dev.o() Dessin de points (type p) en rond (pch=o) en 2D : > plot(1:10,1:10,type=p,pch=o) (dans lordre abscisses puis ordonnes) Dessin de labels (nom des points) > plot(1:10,1:10,type=n) (mise en place, aucun dessin grce type none) > text(1:10,1:10,paste(pt,1:10,sep=) (ajout du texte pt1...pt10 aux coord. 1 :10,1 :10) Amlioration > plot(1:10,1:10,type="l",main="Mon Titre") Histogramme dun echantillon alatoire (normal) > hist(rnorm(100), main="Histogramme",prob=T) Autres types : dotchart, piechart, barplot, boxplot, stars, pairs, coplot, interaction.plot, persp...

17.2

Personnalisation des graphiques

Voir la fonction par (taper help(par)) ! Ci dessous quelques petits exemples > par(mfrow=c(3,2)) 3 graphiques en lignes et 2 en colonnes (6 en tout), voir aussi layout(matrice,widths=w,heights=h) > par(ask=T) demande conrmation chaque nouveau dessin > par(new=F) surimpose le nouveau dessin sur lancien (attention aux axes !) > par(fg=blue,bg=#f2a1c2) foreground en bleu et background en RGB #f2a1c2 (sorte de rose) > plot(1:10,2:11,xlim=(0,15),ylim=c(1,16)) dessins de points axes limits entre 0 et 15 (abscisse),et entre 1 et 16 (ordonnes) > matlines(c(1,12),c(1,12),col=2,lty=2) ligne ajoute au graphique prcdent de couleur 2 et type 2 (pointill).

Formation R

Master Statistiques Appliques

14

17.3

Exemples de fonctions et doptions des graphiques

Trace le graphe des valeurs de x ordonnes sur laxe des abscisses Trace le graphe de y en fonction de x Idem mais les points superposs sont dessins sous forme de eurs dont le nombre de ptales correspond au nombre de points pie(x) Trace un graphe en camembert boxplot(x) Trace le graphe en "botes et moustaches" de x stripplot(x) Trace le graphe des valeurs de x sur une ligne interaction.plot(f1,f2,x, Trace le graphe des moyennes de x en fonction des valeurs des fun=mean) facteurs f1 (sur laxe des abscisses) et f2 (plusieurs graphes) coplot(xy|z) Trace le graphe bivari de x et y pour chaque valeur de z (ou un petit intervalle de valeurs de z) matplot(x,y) Trace le graphe bivari de la 1re colonne de x contre la 1re colonne de y, la 2me colonne de x contre la 2me colonne de y.. pairs(x) Si x est une matrice ou un data.frame, tracer tous les graphes bivaris entre les colonnes de x plot.ts(x), ts.plot(x) Trace le graphe dune srie temporelle x en fonction du temps hist(x,freq=T) Trace un histogramme de x barplot(x) Trace un diagramme en barre (ou bande) des valeurs de x qqnorm(x) Trace les quantiles de x en fonction de ceux attendus dune loi normale qqplot(x,y) Trace les quantiles de y en fonction de ceux de x contour(x,y,z) Trace des courbes de niveau filled.contour(x,y,z) Idem mais les aires entre les contours sont colores, voir aussi image(x,y,z) persp(x,y,z) Idem mais en 3D, voir demo(persp) symbols(x,y,...) Dessiner aux coordonnes donnes par x et y des symboles (toiles, cercles, boxplots...) Les principales options pour les fonctions graphiques sont rsumes ci-dessous. axes=TRUE ou FALSE Si TRUE, les axes et le cadre sont tracs type="n","p","l","b,"h","s"... Prcise le type de graphe dessin. type="n" supprime le graphe col="blue", col.axis, col.main... Prcise la couleur du graphe, des axes, du titre... bg="red" Prcise la couleur du fond xlim=c(0,10),ylim=c(0,20) Prcise les limites des axes xlab="axe x",ylab="axe y" Prcise les annotations des axes main="titre" Prcise le titre du graphe sub="sstitre" Prcise le sous-titre du graphe bty="n","o"... Contrle comment le cadre est trac. bty="n" supprime le cadre cex=1.5, cex.axis, cex.main... Contrle la taille des caractres font=1, font.axis... Prcise la police du texte las="0" Contrle lorientation des annotations des axes lty="1" Contrle le type de lignes traces lwd=1.5 Contrle la largeur des lignes pch="+","o"... Contrle le type de symbole utilis pour le trac des points ps=1.5 Contrle la taille en points du texte et des symboles tck, tcl Prcise la longueur des graduations sur les axes mfcol=c(3,2), mfrow=c(3,2) Partitionne le graphe en 3 lignes et 2 colonnes. Les gures sont remplies colonnes par colonnes ou lignes par lignes plot(x) plot(x,y) sunflowerplot(x,y)

18
18.1

Formules sous R
Formules sous R

Elles servent crires des modles statistiques sous forme simple

Formation R

Master Statistiques Appliques

15

Exemple de la rgression > lm(carb~Wt+Disp,data=mtcars) carb = +1 W t + 2 Disp +


implicite implicite

Les donnes proviennent du tableau mtcars Suppression de lordonne lorigine > carb~-1+Wt+Disp carb = 1 W t + 2 Disp +
implicite

18.2

Formules sous R, transformation des variables

Transformation continue classique : log, exp, sin , atan... > log(carb)~Wt+Disp Transformation en binaire > Age>40 cest une variable qui prend la valeur 0 si Age< 40 et 1 sinon. Transformation en facteur > cut(Age,3) dcoupe de la variable Age en 3 intervalle de longueur gale (ou presque) Transformation en polynme orthogonaux : > poly(Age,degree=3)

18.3

Formules sous R, transformation et protection

Transformation et protection certains signes (*, ^, /) possdent des valeurs direntes dans une formule et dans un calcul arithmtique. Pour revenir une signication arithmtique il sut dutiliser une protection I() > I(Age^2) cela permet dlever Age au carr > log(Age^2) dans un autre fonction arithmtique pas besoin de protection !

18.4

Formules sous R, Interaction, eets nids

Interaction > Salaire~Sexe+Age+Sexe:Age Salaire = +1 Sexe + 2 Age + 3 Sexe Age +


implicite implicite

> Salaire~Sexe*Age (autre syntaxe quivalent mais plus courte) Eets nids > Y~region+Dpt%in%region > Y~region/Dpt (autre syntaxe quivalent mais plus courte)

18.5

Formules sous R, Facteurs

Introduction yij = + i + ij moyenne gnrale i eet du facteur A au niveau i Si le facteur A vaut le niveau i, la rponse y vaut en moyenne + i

Formation R

Master Statistiques Appliques

16

Surparamtrisation Mme le modle le plus simple est surparamtris yij = + i + ij = + + ( )


nouveau nouvel i

il faut rajouter des contraintes : = 0 pas dintercept (option "-1") i i = 0 cart p/p ("somme") 1 = 0 cart p/p niveau 1 ("tmoin")

18.6

Formules sous R, Contrastes et facteurs

En conclusion Le facteur A est reprsent par (, 1 , , I 5i + 1) coecients et 1 contrainte linaire qui relie les coecients entre eux i i = 0 Algbre linaire : I + 1 vecteurs relis par une contrainte linaire I vecteurs indpendants Nouveaux coecients , 1 , , I+1 Passage des nouveaux aux anciens par 1 1 . =C . . . . . I
I1

Gnralement = . Les coecients , 1 , ...I seront en gnral dirents selon le type de contrainte choisies et cest normal.

18.7

Formules sous R, Contrastes et facteurs

Sous R la matrice C des contrastes ou C sa transpose se calcule comme > contr.treatment(levels(facteur)) > contr.sum(levels(facteur)) > contr.helmert(levels(facteur)) > contr.poly(levels(facteur))

18.8

Codage des facteurs

fact : facteur I modalits. Soit i le coecient associ au ime niveau du facteur fact. Aectation dun contraste Contraste de type somme I i = 0 : i=1 > contrasts(fact)<-contr.sum(levels(fact)) > fact<-C(fact,sum) (autre syntaxe) Contraste de type traitement-tmoin 1 = 0 (Par dfaut pour les factor)) > contrasts(fact)<-contr.treatment(levels(fact)) > fact<-C(fact,treatment) (autre syntaxe) Contraste polynomial (Par dfaut pour les ordered) > contrasts(fact)<-contr.poly(levels(fact)) > fact<-C(fact,poly) (autre syntaxe)

Formation R

Master Statistiques Appliques

17

18.9

Codage des facteurs, suite

Voir la valeur dun contraste > contrasts(fact) contrasts est un attribut de fact : > attributes(fact) contrast renvoie une matrice de contraste Attention au s ! ! Changement ponctuel (dans un modle) Dans un modle lm > lm(y~a+b,contrasts=list(a="contr.sum",b="contr.poly"),data=dframe) le facteur a du data frame dframe possde un contraste sum le facteur b du data frame dframe possde un contraste poly

19

Modlisations, quelques exemples

En gnral les ordres sont les mmes quelque soit la modlisation choisie. calcul du modle res<-lm(y~x1+x2) rsum dun modle summary(res) dessin dun modle plot(res) extraction des rsidus residuals(res) extraction des coecients coefficients(res) prdiction du modle predict(res) De nombreuses autres options sont disponibles en fonction des modles, par exemple pour deux modles linaires le rsum donne aussi la matrice de corrlation estime des coecients summary(res,cor=T) Nous pouvons comparer des modles par AIC extractAIC(res) ou par anova aov(res,res1). Le choix de modle peut tre fait par des mthodes ascendantes ou descendantes (step). Les modles darbre de rgression ou de discrimination orent aussi de nombreuses fonctions particulires : library(rpart) (bibliothque de programmes pour les arbres qui doivent tres chargs. Dautres bibliothques existent, taper library() pour voir celles disponibles sur votre machine) res<-rpart(y~., data=mesdonnees) (le point . signie que lon prend toutes les autres variables de mesdonnees autres que y). plot(res) text(res) snip.rpart(res)...

20

Rgles de recherches des objets

Les objets sont par dfaut stocks dans la session courante .GlobalEnv, qui est tout simplement un chier au format de R (extension .Rd). Quand on utilise une fonction ou un objet, R recherche dans les chiers, les data frames attachs, les listes attaches ou les rpertoires (par exemple ceux contenant les fonctions rsidantes ou les bibliothques de programme library) selon 1 ordre x. La position pos dtermine lordre de prsance. Pour consulter cet ordre il sut de taper

Formation R > search() [1] ".GlobalEnv" [4] "package:graphics" [7] "package:datasets"

Master Statistiques Appliques

18

"package:methods" "package:stats" "package:grDevices" "package:utils" "Autoloads" "package:base"

Ainsi dans cet exemple si lon utilise x, R va chercher sa valeur dans le premier de la liste : .GlobalEnv qui est la session courante. Si il ne trouve pas x il va chercher sa valeur comme une variable du data frame mtcars sinon dans la liste listeb etc... Si il ne trouve rien il ache une erreur. Pour attacher un chier, une liste... , il sut dutiliser > attach(maliste,pos=3) (attachement en 3me position). Quand on excute une fonction, R cre 1 nouveau frame qui est un environnement local dans lequel sont cres toutes les nouvelles variables ou fonctions de la fonction. Ce frame est limin la sortie de la fonction ce qui explique que lon ne retrouve jamais les variables locales dune fonction. Les frames se superposent au dessus du frame global (l o les assignements sont permanents et gards dans le chier de la session courante). Ds que R ne trouve pas la fonction ou la variable, il redescend dun frame et recherche jusqu arriver au frame global. Si il ne trouve rien il ache une erreur. On peut quand mme dans une fonction assigner des objets dans un autre frame infrieur par la fonction assign().

21

Librairies de programmes (packages)

Des programmes supplmentaires sont disponibles sous forme de librairies (ou packages). Pour consulter ceux disponible sur votre machine > library() Pour appeller (ou utiliser) un programme dune librairie (par exemple la librairie MASS) il faut au pralable la charger dans la session par library(MASS) et ensuite toutes les fonctions de cette librairie sont accessibles. Pour installer un package disponible sur CRAN, il sut daller sur la page de CRAN (http://cran. univ-lyon1.fr/ ou http://cran.cict.fr/), de cliquer ( gauche) sur Packages, de choisir son package (cliquer) et de le tlcharger en version windows binary (sous windows) ou package source (sous Linux/Unix). Pour windows dans le menu Packages, un sous menu permet dinstaller le package (Install package(s) from local zip file) ; sous Linux/Unix dans une fentre de commande, compiler et installer le package avec R CMD INSTALL monpackage_1.0.1.tar.gz, avec les droits root (ou consulter laide).

22

Rien ne marche ?

consulter laide des fonctions utilises ou laide gnrale > help(lm) aide sur la fonction lm > help.start() aide html plus conviviale cest bloqu : Control-C ou icone stop (sous windows) il y a une erreur dans ma boucle ou ma fonction : debuggage Utiliser la fonction > browser() : >res <- NULL >x<-1:10 >for (i in 1:100) { > y<-2*x+rnorm(10,sd=10/i) > browser() > res[i]<-coef(lm(y~x)) } lexecution sarrete au niveau du browser (fureteur). Lecran ache Browse[1]>

Formation R

Master Statistiques Appliques

19

Entrer des commandes comme Browse[1]> i;x;y ache i, x, et y (ils existent) Browse[1]> coef(lm(y~x)) calcul des coecients de la regression de y sur x (cela marche). Pour sortir du browser, tapez Q (majuscule), pour continuer lexecution tapez c. Voir aussi debug...