F. Farnir, L. Massart 1 BMV Année académique 2008-2009
Pourquoi? Logiciel d analyse statistique et graphique Gratuit... GNU General Public License Disponible sur Internet... voir http://www.r-project.org Maintenu pour toutes les plateformes... PC, Mac, Linux,... Ouvert... Simple d utilisation...
Site web abritant R
Simple? Il faut programmer... Mais: Langage interprété... Syntaxe simple et intuitive (avec un peu d expérience)... Concepts simples...
Concepts de base? Tout est sous forme d «objets nommés» variables, données, fonctions, résultats On travaille sur les objets à l aide: d opérateurs (exemple: + ) de fonctions (exemple: sin ) Arguments Options Fonction Arg. par défaut Résultats
Fonctionnement schématique Commandes R OS Fonctions Opérateurs Objets «données» Objets «résultats» Librairies R Fichiers E/S (données, graphiques,...) Mémoire vive Disque dur
Les fonctions de R Stockées dans des «librairies» de fonctions Regroupées dans des «packages» Structure du répertoire R_ROOT/libraries/<package>/R/<package> Répertoire d installation de R exemple: R_ROOT/libraries/base/R/base
Une session élémentaire de R On «double-clique» sur, puis:
Quelques commandes > n <- 10 => affecte 10 à la variable «n» > print(n) => affiche le contenu de «n» > n => affiche le contenu de «n» > 5 -> N => affecte 5 à la variable «N» > ls() => liste tous les objets > rm(list=ls(«^n»)) => efface les objets dont le nom commence par «n» > q() => permet de quitter R
Obtenir de l aide > help() => ouvre une fenêtre d aide > help(«help») => aide sur l aide... > help(«ls») «ls» > help.start() >?<func> => ouvre une fenêtre d aide avec l aide sur la fonction => ouvre un site (local) d aide en HTML => aide sur la fonction <func>
Les objets dans Tout ce qui est manipulable dans R est sous forme d objets (nombres réel, logique ou complexe, chaine de caractères, fonctions, expressions,...) Les objets se différencient notamment par leurs attributs 2 attributs sont présents avec chaque type d objet x: le mode => > mode(x) «numeric» la longueur => > length(x) 2
Les objets dans (suite) Exemple: > x <- 10 > mode(x) [1] «numeric» > y <- «R is easy» > mode(y) [1] «character» > length(y) [1] 1 >
Les objets dans (suite) Les objets de longueur 1 Vecteurs > a <- vector(mode=«numeric», length=5) > a [1] 0 0 0 0 0 > length(a) [1] 5 > is.vector(a) [1] TRUE > a <- c(1,4,9,16,25) > a [1] 1 4 9 16 25
Les objets dans (suite) Les objets de longueur 1 Facteurs > b <- factor(a) > b [1] 1 4 9 16 25 Levels: 1 4 9 16 25 > length(b) [1] 5 > is.factor(b) [1] TRUE
Les objets dans (suite) Les objets de longueur 1 Tableaux > a <- vector(length=10) > c <- array(a,dim=c(2,5)) > c [,1] [,2] [,3] [,4] [,5] [1,] FALSE FALSE FALSE FALSE FALSE [2,] FALSE FALSE FALSE FALSE FALSE > is.array(c) [1] TRUE > dim(c) [1] 2 5
Les objets dans (suite) Les objets de longueur 1 Tableaux (suite) > d <- matrix(data=10,nr=2,nc=3) > d [,1] [,2] [,3] [1,] 10 10 10 [2,] 10 10 10 > d <- matrix(1:6,nr=2,nc=3,byrow=true) > d [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6
Les objets dans (suite) Les objets de longueur 1 «Data frame» > d <- data.frame(race=«bbb»,poids=100.0) > d race poids 1 BBB 100.0 >
Les objets dans (suite) Les objets de longueur 1 «Data frame» (suite) > x <- c(1,2,3,4); y <- («A»,«C»,«G»,«T») > e <- data.frame(x,y) > e x y 1 1 A 2 2 C 3 3 G 4 4 T >
Les objets dans (suite) Les objets de longueur 1 Listes > e <- list(race=«bbb»,poids=100.0) > e $race [1] «BBB» $poids [1] 100.0 >
Les objets dans (suite) Les objets de longueur 1 Listes (suite) > x <- c(«bbb»,«cha») > y <- c(100.0,120.0) > e <- list(race=x,poids=y) > e $race [1] «BBB» «CHA» $poids [1] 100.0 120.0
Les objets dans (suite) Les objets de longueur 1 Listes (suite) > e$race [1] «BBB» «CHA» > e$poids [1] 100.0 120.0 >
Les objets dans (suite) Remarques Il existe d autres objets (function, expression, ts,...) Pour chaque objet, des défauts existent Il est possible de convertir des objets vers un autre type Chaque type d objets a potentiellement des fonctions qui lui sont associées (méthodes), permettant de manipuler ce type d objets en particulier Voir l exemple page suivante
Les objets dans (suite) Exemple de «méthode» Objet de type «expression» > e <- expression(x/(x^2+y^2)) > e expression(x/(x^2+y^2)) > x <- 2; y <- 1 > eval(e) [1] 0.4 > D(e, «x») 1/(x^2 + y^2) - x * (2 * x)/(x^2 + y^2)^2
Lecture de données externes Répertoire de travail («working directory») Répertoire dans lequel on lit (et on écrit) > getwd() => get working directory > setwd(«r_home/my_data») => set working directory Autre solution: spécifier explicitement le nom du fichier cible... > mydata<-read.table(«c:/fred/data.dat»)
Lecture de données externes Types de fichiers En général: ASCII, Excel, SAS, SPSS, SQL... Ici, on se limitera au mode ASCII > data <- read.table(«data.dat», header=true, sep=«,», quote=, dec=«.»)
Lecture de données externes Exemple de lecture Fichier: race,poids BBB,120.0 Charolais,340.0... Dans : > data race poids 1 BBB 120 2 Charolais 340...
Lecture de données externes Exemple de lecture (suite) > data$race [1] BBB Charolais Levels: BBB Charolais > is.factor(data$race) [1] TRUE > data$poids [1] 120 340 > is.vector(data$poids) [1] TRUE
Lecture de données externes Remarques sur la lecture D autres fonctions de lecture existent: read.csv («comma separated variables»), read.delim, read.fwf («fixed width format»), scan... Exemple: > d<-scan(«data.dat», what=list(,0), skip=1,sep=«,»)
Ecriture de données externes Remarques sur l écriture Comme pour l écriture, diverses fonctions d écriture existent, parmi lesquelles write.table(...) et write(...) Exemple: > write.table(data,file=«data.out», row.names=true,col.names=true, quote=false)
Ecriture de données externes Sauvetage et chargement de variables Exemple: > save(x,y,z,file=«xyz.dat»,ascii=true) => sauvetage des variables x,y,z > load(«xyz.dat») => récupération des variables x,y,z (autre session R)
Ecriture de données externes Sauvetage et chargement de toutes les variables Exemple: > save(list=ls(all=true), file=«all.dat»,ascii=true) > load(«all.dat») => récupération de toutes les variables (autre session R)
Génération de données Lire des données à l écran > d <- scan() 1: 1 2 3 4 5 6: Read 5 items > d [1] 1 2 3 4 5 >
Génération de données Créer des séquences d entiers et de réels > a <- 1:5 > a [1] 1 2 3 4 5 > b <- seq(1,2,0.1) > b [1] 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 > c <- seq(length=6,from=1,to=3) > c [1] 1.0 1.4 1.8 2.2 2.6 3.0
Génération de données Créer des séquences d entiers et de réels (suite) > a <- c(rep(1,3),rep(2,4),rep(3,2)) > a [1] 1 1 1 2 2 2 2 3 3 > b <- sequence(2:4) > b [1] 1 2 1 2 3 1 2 3 4 > c <- sequence(c(2,3,4)) > c [1] 1 2 1 2 3 1 2 3 4
Génération de données Créer des séquences de facteurs > a <- gl(3,4,label=c(«bbb»,«cha»,«bxc»),length=24) > a [1] BBB BBB BBB BBB CHA CHA CHA CHA BxC BxC BxC BxC [13] BBB BBB BBB BBB CHA CHA CHA CHA BxC BxC BxC BxC Levels: BBB CHA BxC
Génération de données Créer des séquences de facteurs (suite) > a <- expand.grid(race=c(«bbb»,«cha»,«cxb»), sexe=c(«m»,«f»),conf=c(«--»,«-»,«+»,«++»)) > a race sexe conf 1 BBB M -- 2 CHA M -- 3 CxB M -- 4 BBB F --... 24 CxB F ++ >
Génération de données Créer des séquences aléatoires Illustration sur la distribution binomiale B(n=10;p=0.3)
Génération de données Créer des séquences aléatoires Fonctions R dbinom(x,n,p) => Valeur des probabilités Exemple: > x <- seq(0,10,1) > y <- dbinom(x,10,0.3)
Génération de données Créer des séquences aléatoires Fonctions R rbinom(k,n,p) => Valeurs de la variable aléatoire Exemple: > k <- 3 > rbinom(k,10,0.3) [1] 2 3 3
Génération de données Créer des séquences aléatoires Fonctions R pbinom(r,n,p) Exemple: > pbinom(3,10,0.3) [1] 0.6496107 => Valeurs des probabilités cumulées
Génération de données Créer des séquences aléatoires Fonctions R qbinom(prob,n,p) => Valeur de r : P( r) 1-prob Exemple: > qbinom(0.95,10,0.3) [1] 5 Exemple appliqué: si j observe 100 vêlages, combien de veaux femelles verrai-je au moins, avec une probabilité de 95%? > qbinom(0.05,100,0.5) [1] 42
Génération de données Créer des séquences aléatoires Autres distributions: <d,p,q,r><nom>(<arguments>) <arguments> dépend du type de distribution, <nom> = (norm, exp, pois, t, f, chisq, multinom, hyper, nbinom, unif,...) Exemple: > qnorm(0.05,mean=0,sd=1) [1] -1.644854
Manipulation de données Les expressions dans R Utilisation des opérateurs de R (liste: cfr manuel) > x <- 10; y <- 15 > x + y [1] 25 > x <= y [1] TRUE > 9 < (x < 11) [1] FALSE > 9 < x && x < 11 [1] TRUE
Manipulation de données Les expressions dans R (suite) Utilisation des opérateurs de R sur des vecteurs > x <- 1:3; y <- 1:3 > x == y [1] TRUE TRUE TRUE > identical(x,y) [1] TRUE > identical(0.9,1.1-0.2) [1] FALSE > all.equal(0.9,1.1-0.2) [1] TRUE
Manipulation de données Indexation dans R (suite) Accès aux éléments des vecteurs et tableaux > x <- c(1^2,2^2,3^2,4^2,5^2,6^2) > y <- matrix(x,nr=2,nc=3,byrow=true) > x [1] 1 4 9 16 25 36 > y [,1] [,2] [,3] [1,] 1 4 9 [2,] 16 25 36 >
Manipulation de données Indexation dans R (suite) Accès aux éléments des vecteurs > x[3] [1] 9 > x[c(1,4)] [1] 1 16 > i<-c(1,2) > z<-x[i] > z [1] 1 4
Manipulation de données Indexation dans R (suite) Accès aux éléments des matrices > y[1,3] [1] 9 > y[,2] [1] 4 25 > y[,2]<-10:11 > y [,1] [,2] [,3] [1,] 1 10 9 [2,] 16 11 36
Manipulation de données Indexation dans R (suite) Accès aux éléments des matrices > z <- y[-1,] > z [1] 16 11 36 > x <- runif(5) > x [1] 0.4461344 0.5481882 0.5895491 0.4740851 0.5399470 > x[x>0.5] [1] 0.5481882 0.5895491 0.5399470
Manipulation de données Indexation dans R (suite) Accès aux éléments des matrices par noms > t <- matrix(c(10,30,50,30),nr=2) > rownames(t) <- c(«malade»,«sain») > colnames(t) <- c(«traité»,«témoin») > t Traité Témoin Malade 10 50 Sain 30 30 > t[«malade»,] Traité Témoin 10 50
Manipulation de données Indexation dans R (suite) Accès aux éléments des listes > z <- list(1:3,«bbb»,«cha»,«cxb») > z[1] # retourne une liste [[1]] [1] 1 2 3 > z[[1]] # retourne le vecteur [1] 1 2 3 > z[[1]][3] [1] 3
Calculs élémentaires Quelques opérations > x <- 1:3 > y <- seq(1,2,0.5) > x*y [1] 1.0 3.0 6.0 Recyclage > x <- 1:6 > y <- seq(1,2,0.5) > x-y [1] 0.0 0.5 1.0 3.0 3.5 4.0
Calculs élémentaires Calcul matriciel Exemple: résoudre x + 3y = 4 1 3 x 4 => = 2x + 4y = 6 2 4 y 6 Code R > a <- matrix(1:4,nr=2) > b <- c(4,6) > solve(a) %*% b [,1] [1,] 1 [2,] 1
Calculs élémentaires Fonctions Très nombreuses... Voici quelques exemples > x <- 1:8 > x[x%%2==0]<-x[x%%2==0]+3 > x [1] 1 5 3 7 5 9 7 11 > mean(x) [1] 6 > median(x) [1] 6
Calculs élémentaires Fonctions Très nombreuses... Voici quelques exemples (suite) > sort(x) > x [1] 1 3 5 5 7 7 9 11 > range(x) [1] 1 11 > var(x) [1] 10.28571
Les graphiques de R Fonctionnement général Les fonctions graphiques retournent, en général, leur résultat vers un dispositif graphique (fichier pdf, fichier image, écran) Les fonctions principales créent le graphique Les fonctions secondaires ajoutent des éléments au graphique Les paramètres graphiques peuvent être manipulés à volonté par l utilisateur
Les graphiques de R Sélection du dispositif graphique Les possibilités dépendent du système où R est installé. La liste s obtient par: >?device Dispositifs communs: windows(), postscript(), pdf(), pictex(), png(), jpeg(), bmp()... exemple: > pdf(«myplot.pdf») > x<-1:10; y<-(x-2)*(x-5) > plot(x,y) > dev.off() # Libère le fichier myplot.pdf
Les graphiques de R Sélection du dispositif graphique
Les graphiques de R Ouverture de plusieurs dispositifs graphiques Gestion d une liste de dispositifs ouverts > pdf(«plot.pdf»); jpeg(«plot.jpg») > dev.list() pdf jpeg:75:plot.jpg 2 3 > dev.cur() > dev.set(2) pdf 2
Les graphiques de R Fermeture de dispositif graphique Gestion d une liste de dispositifs > pdf(«plot.pdf»); jpeg(«plot.jpg») > dev.list() pdf jpeg:75:plot.jpg 2 3 > dev.off(3) # retourne le dev actif pdf 2 > dev.list() pdf 2
Les graphiques de R Fractionnement d un dispositif graphique Accès à différentes parties d un dispositif > x11() > split.screen(c(1,2)) [1] 1 2 > screen(1) > plot(x,y) > screen(2) > plot(x,z)
Les graphiques de R Fractionnement d un dispositif graphique
Les graphiques de R Quelques fonctions graphiques de R Les fonctions plot(x) et plot(x,y) > x<-rnorm(100,mean=170,sd=10) > y<-rnorm(100,mean=70,sd=20) > split.screen(c(1,2)) [1] 1 2 > screen(1) > plot(x) > screen(2) > plot(x,y)
Les graphiques de R Quelques fonctions graphiques de R Les fonctions plot(x) et plot(x,y)
Les graphiques de R Quelques fonctions graphiques de R La fonction pie(x) > x<-c(10,20,20,20,20,20) > n<-c(«animal et société»,«anglais», «Biologie»,«Chimie»,«Physique»,«Stat») > pie(x,labels=n,main=«pondérations en 1BMV») >
Les graphiques de R Quelques fonctions graphiques de R La fonction pie(x)
Les graphiques de R Quelques fonctions graphiques de R La fonction boxplot(x) > x<-rnorm(200,mean=165,sd=15) > boxplot(x) >
Les graphiques de R Quelques fonctions graphiques de R La fonction boxplot(x)
Les graphiques de R Quelques fonctions graphiques de R La fonction boxplot(formule) > x<-c(rep(«m»,100),rep(«f»,100)) > y<-c(rnorm(100,mean=170,sd=10), rnorm(100,mean=160,sd=10)) > d<-data.frame(sexe=x,taille=y) > boxplot(taille~sexe,data=d,notch=true)
Les graphiques de R Quelques fonctions graphiques de R La fonction boxplot(formule)
Les graphiques de R Quelques fonctions graphiques de R La fonction coplot(y~x z) > race <- c(rep(«bbb»,50),rep(«cha»,50), rep(«bxc»,50)) > agebbb <- runif(50,min=0,max=60) > agecha <- runif(50,min=0,max=60) > agebxc <- runif(50,min=0,max=60) > age <- c(agebbb,agecha,agebxc) > colors <- c(rep(«blue»,50), rep(«red»,50), rep(«green»,50))
Les graphiques de R Quelques fonctions graphiques de R La fonction coplot(y~x z) (suite) > tailbbb <- rnorm(50,mean=40+1.0*agebbb,sd=0.2*agebbb) > tailcha <- rnorm(50,mean=40+1.2*agecha,sd=0.2*agecha) > tailbxc <- rnorm(50,mean=40+1.1*agebxc,sd=0.2*agebxc) > taille <- c(tailbbb,tailcha,tailbxc) > coplot(taille~age race,col=colors)
Les graphiques de R Quelques fonctions graphiques de R La fonction coplot(y~x z) (suite)
Les graphiques de R Quelques fonctions graphiques de R La fonction hist(x) > x <- rbinom(1000,20,0.2) > hist(x,col=«blue»)
Les graphiques de R Quelques fonctions graphiques de R La fonction hist(x)
Les graphiques de R Quelques fonctions graphiques de R La fonction qqnorm(x) > x <- rnorm(1000,mean=100,sd=10) > qqnorm(x,col=«red»)
Les graphiques de R Quelques fonctions graphiques de R La fonction qqnorm(x)
Les graphiques de R Quelques fonctions graphiques de R La fonction qqplot(x,y) > x <- rnorm(1000,mean=10,sd=1) > y <- rnorm(1000,mean=10,sd=1) > z <- rexp(1000,mean=10) > screen(1) > qqplot(x,y) > screen(2) > qqplot(x,z)
Les graphiques de R Quelques fonctions graphiques de R La fonction qqplot(x,y)
Les graphiques de R Quelques fonctions graphiques de R Les fonctions contour(x,y,z) et filled.contour(x,y,z) > x <- seq(-10,10,1) > y <- seq(-10,10,1) > z <- matrix(nr=21,nc=21) > for (i in x) { + for (j in y) { + z[i+11,j+11]=i^2+j^2 + } + } > filled.contour(x,y,z)
Les graphiques de R Quelques fonctions graphiques de R Les fonctions contour(x,y,z) et filled.contour(x,y,z)
Les graphiques de R Quelques fonctions graphiques de R Les fonctions contour(x,y,z) et filled.contour(x,y,z) > x <- seq(-10,10,1) > y <- seq(-10,10,1) > z <- matrix(nr=21,nc=21) > for (i in x) { + for (j in y) { + z[i+11,j+11]=i^2-j^2 + } + } > filled.contour(x,y,z)
Les graphiques de R Quelques fonctions graphiques de R Les fonctions contour(x,y,z) et filled.contour(x,y,z)
Les graphiques de R Quelques fonctions graphiques de R Les fonctions contour(x,y,z) et filled.contour(x,y,z) > x <- seq(-10,10,1) > y <- seq(-10,10,1) > z <- matrix(nr=21,nc=21) > for (i in x) { + for (j in y) { + z[i+11,j+11]=i^2+j^2-2*i*j + } + } > filled.contour(x,y,z)
Les graphiques de R Quelques fonctions graphiques de R Les fonctions contour(x,y,z) et filled.contour(x,y,z)
Les graphiques de R Quelques fonctions graphiques secondaires de R > x <- 0:10 > y <- rnorm(11,mean=3+0.5*x,sd=1) > plot(x,y) > abline(3,0.5,col=«green») > title(«droite et points») > text(2,5,expression(y==3+0.5*x))
Les graphiques de R Quelques fonctions graphiques secondaires de R
Les paramètres graphiques de R Plus de 70 paramètres sont disponibles pour améliorer l environnement graphique Accessibles via la commande par(): > x <- 1:10; y <- (x-2)*(x-6) > oldpar <- par() > par(bg = «lightgreen») > par(col.axis = «red») > plot(x,y,type=«l») > par(oldpar) > plot(x,y,type=«l»)
Les paramètres graphiques de R Plus de 70 paramètres sont disponibles pour améliorer l environnement graphique
Autres graphiques dans R Plusieurs packages sont disponibles et enrichissent les possibilités graphiques de R exemple: > library(lattice) Ce package contient des fonctions permettant de construire des graphes conditionnés sur les valeurs d une variable (voir aussi coplot pour un exemple dans le package de base).
Analyses statistiques dans R Le package stats inclut une série de fonctions statistiques de base. D autres types d analyses statistiques sont accessibles dans d autres packages (éventuellement à ajouter à l installation de base) Nous allons illustrer une analyse simple par un exemple tiré d une librairie d exemples fournis avec le logiciel
Un exemple d analyse simple Problème L efficacité de 6 insecticides est comparée, en comptant le nombre d insectes observés dans une culture traitée (12 parcelles traitées par insecticides). La question est de savoir s il y a une différence (significative) d efficacité entre les différents traitements (a-t-on en général moins d insectes avec certains insecticides qu avec d autres?)
Un exemple d analyse simple Solution Ces problèmes peuvent être traités par une analyse de la variance (ANOVA, voir le cours de statistique). Le modèle est le suivant Compte ij = µ + Spray i + e ij où Compte ij désigne le nombre d insectes sur la parcelle j traitée avec le Spray i, et e ij désigne l erreur associée à cette observation
Un exemple d analyse simple Solution avec R Le traitement avec R est très simple: > data(insectsprays) # Internal data > result <-aov(sqrt(count)~spray, data=insectsprays) > L objet result contient les résultats de l analyse. Nous allons montrer différentes fonctions extrayant l information de cet objet.
Un exemple d analyse simple Affichage de l objet > result Call: aov(formula = sqrt(count) ~ spray, data = InsectSprays) Terms: spray Residuals Sum of Squares 88.43787 26.05798 Deg. of Freedom 5 66 Residual standard error: 0.6283453 Estimated effects may be unbalanced
Un exemple d analyse simple Résumé de l objet > summary(result) Df Sum Sq Mean Sq F value Pr(>F) spray 5 88.438 17.688 44.799 < 2.2e-16 *** Residuals 66 26.058 0.395 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Un exemple d analyse simple Exemple de graphique de l objet > termplot(result,se=true, partial.resid=true) >
Un exemple d analyse simple Exemple de graphique de l objet
Un exemple d analyse simple Formules Dans une analyse statistique, une composante importante du modèle est la relation de causalité qu on essaie d établir entre une (ou plusieurs) variable(s) dite(s) dépendante(s) et une (ou plusieurs) variable(s) dite(s) indépendante(s) (ou explicative(s)). Exemple: dans l exemple précédent, on essaie d établir une relation de cause à effet entre l insecticide (spray) (qui serait la variable explicative) et (une fonction de) le nombre d insectes observés sur une parcelle (qui serait la variable dépendante, ou expliquée)
Un exemple d analyse simple Formules Cette relation est matérialisée par une formule décrivant la dépendance. Exemple: sqrt(count) ~ spray signifie qu on essaie d expliquer la racine carrée du nombre d insectes par l insecticide utilisée (si le nombre d insectes trouvés dans une parcelle dépend de manière cohérente de l insecticide utilisé, c est que l insecticide «a un effet» sur le nombre d insectes) D autres relations de cause à effet sont modélisables addition de plusieurs effets, interactions entre effets, régression sur la dimension de la parcelle... voir le cours de statistique
Un exemple d analyse simple Exemples de formules y ~ a+b Deux facteurs additifs (a et b) pour expliquer y y ~ a:b L interaction de 2 facteurs (a et b) pour expliquer y y ~ poly(x,3)... Un polynome du 3 ème degré en x (variable numérique, et non plus facteur) pour expliquer y
Un exemple d analyse simple Classe d objets, et fonctions génériques Les fonctions statistiques (aov, lm,...) retournent leurs résultats dans un objet de mode «list», mais dont la structure dépend de la fonction utilisée (on parle alors de classe d objet plutôt que du mode) L accès aux éléments de la liste se fait via des fonctions spécifiques à une classe Certaines fonctions sont présentes de manière générale (même si leur résultat dépend évidemment du type d objet). On les appelle fonctions génériques.
Un exemple d analyse simple Exemples de fonctions génériques summary(<objet>) Résumé de l objet print(<objet>) Affichage de l objet coeff(<objet>) Affichage des coefficients estimés de l objet fitted(<objet>)... Affichage des valeurs ajustées par le modèle
Programmer en R Un des intérêts majeurs de R est la possibilité de construire des programmes utilisant toutes les fonctionnalités de R Un exemple typique d application de cette possibilité est la situation où on souhaite répéter les mêmes calculs sur différents ensembles de données Nous allons illustrer le principe sur un exemple fictif dans lequel 3 ensembles de données (dataset) vont être étudiés de manière similaire.
Programmer en R Utilisation des programmes Les programmes seront stockés dans des fichiers «<nom>.r» Ils seront chargés et exécutés par la commande: > source(«<nom>.r»)
Programmer en R Programme I (birds1.r) layout(matrix(1:3,3,1)) # partition data<-read.table(«bird1.dat») plot(data$v1,data$v2,type=«l») title(«bird 1») data<-read.table(«bird2.dat») plot(data$v1,data$v2,type=«l») title(«bird 2») data<-read.table(«bird3.dat») plot(data$v1,data$v2,type=«l») title(«bird 3»)
Programmer en R Programme II (birds2.r) layout(matrix(1:3,3,1)) # partition species<-c(«bird1»,«bird2»,«bird3») files<-c(«bird1.dat», «bird2.dat»,«bird3.dat») for (i in 1:length(species)) { } data<-read.table(files[i]) plot(data$v1,data$v2,type=«l») title(species[i])
Programmer en R Programme III (birds3.r) layout(matrix(1:3,3,1)) # partition myfun<-function(s,f) { } data<-read.table(f) plot(data$v1,data$v2,type=«l») title(s) myfun(«bird1», «bird1.dat» ) myfun(«bird2», «bird2.dat» ) myfun(«bird3», «bird3.dat» )
Programmer en R Programme IV (birds4.r) myfun<-function(s,f) { } data<-read.table(f) plot(data$v1,data$v2,type=«l») title(s) layout(matrix(1:3,3,1)) # partition species<-c(«bird1»,«bird2»,«bird3») files<-c(«bird1.dat», «bird2.dat»,«bird3.dat») sapply(species,myfun,files)
Programmer en R Exercice: la courbe de croissance de Gompertz Représentez la fonction de Gompertz dans l intervalle t = 0 => t = 10 y ( t) = a * e b* e c* t pour différentes valeurs de a, b et c a est l asymptote horizontale (exemple: poids adulte) b est négatif c est le «taux de croissance» (et est négatif)