Notes de Cours sur le logiciel R
Anne PHILIPPE
Université de Nantes, Laboratoire de Mathématiques Jean Leray email : Anne.philippe@math.univ-nantes.fr
26 septembre 2012
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 1 / 147
Plan
1 Objets et Opérations Vecteurs et matrices Dataframes
Listes
2 Les fonctions
3 Les graphiques
4 Structures de contrôle et Itérations
5 Autour des lois de probabilités
6 Outils graphiques en statistique
7 Inférence statistique Estimation non paramétrique Tests Régression
8 Séries Chronologiques
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 2 / 147
Installation
Le logiciel R est unfreewaredisponible sur le sitehttp://cran.r-project.org/
Il existe des versions Windows MacOS X Linux ...
Outils disponibles :
un langage de programmation orienté objet des fonctions de "base"
des librairies/packages complémentaires (1800 sur le site CRAN)
Documentations
Documents sur le logiciel R :
http://www.math.sciences.univ-nantes.fr/⇠philippe/R_freeware.html Site consacré aux graphiques
addictedtor.free.fr/graphiques/
Collection spécifique UseR chez Springer Plus de 80 livres,
par exemple
Introductory Statistics With R Bayesian Computation With R Applied Statistical Genetics With R :
Generalized Additive Models : An Introduction with R Extending the Linear Model With R
Time Series Analysis And Its Applications : With R Examples
Au démarrage
> apparaît automatiquement en début de chaque ligne de commandes
+ apparaît en début de ligne si la ligne précédente est incomplète
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 5 / 147
Sous linux
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 6 / 147
Utiliser l’aide
> help( " p l o t " )
> ?p l o t
> help.search( " p l o t " )
> ??p l o t
Les démos :
# pour o b t e n i r l a l i s t e des demos
> demo( )
> demo(g r a p h i c s)
Les exemples :
La fonctionexampleexécute les exemples généralement inclus à la fin des fichiers d’aide.
> example(FUN)
Éditeur
Sous MacOS et Windows, un éditeur de texte intégré au logiciel R
Ctrl Rexécute la ligne sur laquelle se trouve le curseur ou les lignes d’un bloc sélectionné.
source("nom-du-fichier.R") pour exécuter le code contenu dans le fichier nom-du-fichier.R
Librairies
Toutes les librairies ne sont pas chargées au lancement du logiciel library()retourne la liste des librairies installées.
library(LIB)charge la librairieLIB
library(help = LIB)retourne la liste des fonctions de la librairie LIB search(), searchpaths()retourne la liste des librairies chargées.
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 9 / 147
Objets et Opérations
1 Objets et Opérations Vecteurs et matrices Dataframes
Listes
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 10 / 147
Objets et Opérations
Opérations élémentaires
1 Opérations élémentaires sur les scalaires :⇤, , +, /,ˆ
>2+4 6
2 Opérations avec affectation (avec ou sans affichage)
x=2+4 x
6( x=2+4) # avec a f f i c h a g e du r é s u l t a t 6
3 Les principaux types sont entier , réel, complexe caractère
logique : TRUE, FALSE, NA (not available)
Objets et Opérations
Objets
Les objets de base sont vecteurs, matrices data.frames, listes
Quelques fonctions génériques :
ls()retourne la liste des objets de la session.
rm(a)supprime l’objeta
Objets et Opérations
Fonctions is/as
is.xxx(obj) teste siobjest un objet de typexxx
as.xxx(obj) contraint si possibleobjau type d’objetxxxoùxxx représente un type d’objet (complex, real, vector matrix etc...)
> x=3
> i s.r e a l( x ) [ 1 ] TRUE
> i s.complex( x ) [ 1 ] FALSE
> as.complex( x ) [ 1 ] 3+0 i
> as.c h a r a c t e r( x ) [ 1 ] "3"
Remarque :
Conversion de TRUE / FALSE en valeur numérique :
> as.i n t e g e r(T) [ 1 ] 1
> as.i n t e g e r( F ) [ 1 ] 0
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 13 / 147
Objets et Opérations Vecteurs et matrices
1 Objets et Opérations Vecteurs et matrices Dataframes
Listes
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 14 / 147
Objets et Opérations Vecteurs et matrices
Créer des vecteurs
la fonctionc( )concatène des scalaires ou des vecteurs :
> x=c( 1 , 4 , 9 )
> y=c( x , 2 , 3 )
> y
[ 1 ] 1 4 9 2 3
Suites arithmétiques de raison 1 ou -1 :c(a:b).
> c( 1 : 4 ) > c( 4 : 1 )
# a<b r a i s o n 1 # a>b r a i s o n 1
[ 1 ] 1 2 3 4 [ 1 ] 4 3 2 1
# a b n ’ e s t pas un e n t i e r
> c( 1 . 4 : 7 )
[ 1 ] 1 . 4 2 . 4 3 . 4 4 . 4 5 . 4 6 . 4
Objets et Opérations Vecteurs et matrices
Généralisation :seq(a,b,t)oùaest premier terme, le dernierb et la raisont
seq( from , to ) l a r a i s o n e s t 1
seq( from , to , by= ) on f i x e l a r a i s o n
seq( from , to , l eng th. out= ) on f i x e l e nb de t e r m e s
par exemple
> seq( 1 , 4 ,by =0.1)
[ 1 ] 1 . 0 1 . 1 1 . 2 1 . 3 1 . 4 1 . 5 1 . 6 1 . 7 . . . . [ 2 6 ] 3 . 5 3 . 6 3 . 7 3 . 8 3 . 9 4 . 0
x=rep(y ,n) pour créer un vecteur constitué de l’élément yrépéténfois.
(y peut être un scalaire ou un vecteur) par exemple
> rep( 1 , 4 ) [ 1 ] 1 1 1 1
Objets et Opérations Vecteurs et matrices
Créer des matrices
Les matrices sont créées avec la fonctionmatrix() à partir d’un vecteur. On doit fixer le nombre de colonnesncolet/ou le nombre de lignesnrow.
> x = matrix(c( 2 , 3 , 5 , 7 , 1 1 , 1 3 ) ,ncol=2)
Par défaut la matrice est remplie colonne par colonne. Pour remplir ligne par ligne, on ajoute l’argumentbyrow=T
> y = matrix(c( 2 , 3 , 5 , 7 , 1 1 , 1 3 ) ,ncol=2, byrow=T)
> x > y
[ , 1 ] [ , 2 ] [ , 1 ] [ , 2 ]
[ 1 , ] 2 7 [ 1 , ] 2 3
[ 2 , ] 3 11 [ 2 , ] 5 7
[ 3 , ] 5 13 [ 3 , ] 11 13
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 17 / 147
Objets et Opérations Vecteurs et matrices
Attention: si la dimension du vecteur n’est pas égale au produit (ncol⇥nrow) alors l’opération effectuée est la suivante :
> matrix(c( 1 : 3 ) , ncol=2,nrow=3) [ , 1 ] [ , 2 ]
[ 1 , ] 1 1
[ 2 , ] 2 2
[ 3 , ] 3 3
> matrix(c( 1 : 3 ) , ncol=2) [ , 1 ] [ , 2 ]
[ 1 , ] 1 3
[ 2 , ] 2 1
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 18 / 147
Objets et Opérations Vecteurs et matrices
Quelques matrices particulières : diagonale, Toeplitz
> diag( 1 : 4 )
[ , 1 ] [ , 2 ] [ , 3 ] [ , 4 ]
[ 1 , ] 1 0 0 0
[ 2 , ] 0 2 0 0
[ 3 , ] 0 0 3 0
[ 4 , ] 0 0 0 4
>
> t o e p l i t z( 1 : 4 )
[ , 1 ] [ , 2 ] [ , 3 ] [ , 4 ]
[ 1 , ] 1 2 3 4
[ 2 , ] 2 1 2 3
[ 3 , ] 3 2 1 2
[ 4 , ] 4 3 2 1
diag
La fonctiondiagretourne une matrice diagonale lorsque le paramètre d’entrée est un vecteur.
Si le paramètre d’entrée est une matrice, alors elle retourne un vecteur constitué de la diagonale de la matrice
Objets et Opérations Vecteurs et matrices
Concaténer des vecteurs/matrices
rbind
cbind
> x =1:10
> y=x^2
> r b i n d( x , y )
[ , 1 ] [ , 2 ] [ , 3 ] [ , 4 ] [ , 5 ] [ , 6 ] [ , 7 ] [ , 8 ] [ , 9 ] [ , 1 0 ]
x 1 2 3 4 5 6 7 8 9 10
y 1 4 9 16 25 36 49 64 81 100
> cbind( x , y )
x y
[ 1 , ] 1 1
[ 2 , ] 2 4
[ 3 , ] 3 9
[ 4 , ] 4 16 [ 5 , ] 5 25 [ 6 , ] 6 36 e t c
Objets et Opérations Vecteurs et matrices
Extraire des éléments d’un vecteur ou d’une matrice
> v e c t=c( 1 . 5 : 9 . 5 )
> v e c t
[ 1 ] 1 . 5 2 . 5 3 . 5 4 . 5 5 . 5 6 . 5 7 . 5 8 . 5 9 . 5
> mat=matrix( vect ,ncol=3,nrow=3) [ , 1 ] [ , 2 ] [ , 3 ]
[ 1 , ] 1 . 5 4 . 5 7 . 5 [ 2 , ] 2 . 5 5 . 5 8 . 5 [ 3 , ] 3 . 5 6 . 5 9 . 5
Extraire un élément
> v e c t [ 1 ] > mat[ 2 , 1 ] [ 1 ] 1 . 5 [ 1 ] 2 . 5
Colonne/ligne d’une matrice
> mat[ , 1 ] > mat[ 3 , ]
[ 1 ] 1 . 5 2 . 5 3 . 5 [ 1 ] 3 . 5 6 . 5 9 . 5
Extraire un bloc ou plusieurs coordonnées
> mat[ 2 : 3 , 1 : 2 ] > v e c t [c( 1 , 3 , 7 ) ]
[ , 1 ] [ , 2 ] [ 1 ] 1 . 5 3 . 5 7 . 5
[ 1 , ] 2 . 5 5 . 5 [ 2 , ] 3 . 5 6 . 5
Attention :vect[-j]retourne le vecteurvectsans la j ème coordonnée
> v e c t [ c( 1 , 3 , 7 ) ] r e t o u r n e 2 . 5 4 . 5 5 . 5 6 . 5 8 . 5 9 . 5
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 21 / 147
Objets et Opérations Vecteurs et matrices
Opérations sur les Matrices/Vecteurs
•Les opérations + * - / entre 2 vecteurs ou matrices de même dimension sont desopérations terme à terme.
> x
[ 1 ] 1 2 3 4 5
> y
[ 1 ] 0 0 0 1 1
> x⇤y
[ 1 ] 0 0 0 4 5
> A [ , 1 ] [ , 2 ]
[ 1 , ] 2 1
[ 2 , ] 4 9
> B
[ , 1 ] [ , 2 ]
[ 1 , ] 0 2
[ 2 , ] 1 1
> A⇤B
[ , 1 ] [ , 2 ]
[ 1 , ] 0 2
[ 2 , ] 4 9
>
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 22 / 147
Objets et Opérations Vecteurs et matrices
Attention
Si les vecteurs ne sont pas de même longueur, le plus court est complété automatiquement .
> x =c( 1 : 5 )
> x x : 1 2 3 4 5
[ 1 ] 1 2 3 4 5 y : 1 2 1 2 1
> y =c( 1 , 2 )
> y x+y : 2 4 4 6 6
[ 1 ] 1 2
> x + y
[ 1 ] 2 4 4 6 6
Objets et Opérations Vecteurs et matrices
Quelques opérations particulières sur les matrices
> a=matrix( 1 ,ncol=2,nrow=2)
> a
[ , 1 ] [ , 2 ]
[ 1 , ] 1 1
[ 2 , ] 1 1
> a+3 #m a t r i c e +s c a l a i r e [ , 1 ] [ , 2 ]
[ 1 , ] 4 4
[ 2 , ] 4 4
> a+c( 1 : 2 ) #m a t r i c e + v e c t e u r [ , 1 ] [ , 2 ]
[ 1 , ] 2 2
[ 2 , ] 3 3
Objets et Opérations Vecteurs et matrices
Action d’une fonction sur un vecteur ou une matrice
Soit FUN une fonction définie sur les scalaires qui retourne un scalaire.
Par exemple
s q r t s q u a r e r o o t
abs a b s o l u t e v a l u e
s i n cos tan t r i g o n o m e t r i c f u n c t i o n s ( r a d i a n s ) exp l o g e x p o n e n t i a l and n a t u r a l l o g a r i t h m
log10 common l o g a r i t h m
gamma lgamma gamma f u n c t i o n and i t s n a t u r a l l o g
Lorsque le paramètre d’entrée est un vecteur (respectivement une matrice), la fonction FUN est appliquée sur chacune des composantes. L’objet retourné est un vecteur (respectivement une matrice).
s Exemple
SiA= (ai,j)est une matrice, alors exp(A)retourne une matrice constituée des élémentseai,j.
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 25 / 147
Objets et Opérations Vecteurs et matrices
Quelques fonctions sur les matrices
Le produit matriciel est obtenu avec%⇤% Calcul des valeurs/vecteurs propres :eigen Calcul du déterminant :det
t(A)retourne la transposée de la matriceA
décomposition de Choleski :chol (X) retourneR telle queX =R0R oùR est une matrice triangulaire supérieure etR0 est la transposée de R.
décomposition svd :svd(X)retourne (U,D,V) telles queX=UDV0 où U et V sont orthogonales et D est diagonale.
solve
solve(A)retourne l’inverse de la matriceA solve(A,b)retournextel queAx =b
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 26 / 147
Objets et Opérations Vecteurs et matrices
Objets booléens et instructions logiques
Les opérations logiques :< , > , <= , >= , != [différent], ==
[égal] retournentTRUEouFALSE.
La comparaison entre deux vecteurs est une comparaison terme à terme.
Si les vecteurs ne sont pas de même longueur, le plus court est complété automatiquement.
> a= 1 : 5 ; b=2.5
> a<b
[ 1 ] TRUE TRUE FALSE FALSE FALSE
Il est possible de définir plusieurs conditions à remplir avec les opérateurs ET :&
OU :|
Objets et Opérations Vecteurs et matrices
Pour extraire les éléments d’un vecteurvect, on peut utiliser des instructions logiques.
SoitI un vecteur de booléens de même longueur que vect:
vect[I]retourne les coordonnéesvect[j] telles queI[j] =TRUE. Applications
extraire les composantes >8
vect[vect>8]:vect>8est un vecteur deTRUEetFALSE, on extrait les composantes affectées àTRUE.
extraire les composantes >8 ou <2 vect[(vect>8) | (vect<2)]
extraire les composantes >8 et <10 vect[(vect>8) & (vect<10)]
Objets et Opérations Vecteurs et matrices
Effet de la précision sur la comparaison de réels
Est ce quep 22=2 ?
> (s q r t(2)^2 == 2) [ 1 ] FALSE
Une solution
> a l l.equal(s q r t( 2 ) ^ 2 , 2 ) [ 1 ] TRUE
#ou>isTRUE (a l l.equal(s q r t( 2 ) ^ 2 , 2 ) )
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 29 / 147
Objets et Opérations Vecteurs et matrices
Fonction which
Soitvecun vecteur logique. La fonction which(vec) retourne les indices des coordonnées du vecteurvecqui prennent la valeurTRUE
> x =(1:10)^2
> x
[ 1 ] 1 4 9 16 25 36 49 64 81 100
> which( x== 25) [ 1 ] 5
> which( x > 21)
[ 1 ] 5 6 7 8 9 10
Exemple
Les commandesx[x>1]etx[which(x>1)]retournent le même vecteur.
Cas particulier
which.max(x)retournewhich(x==max(x))
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 30 / 147
Objets et Opérations Vecteurs et matrices
Ces fonctions retournent un scalaire : sum()(sommeP
ixi),prod()(produit Q
ixi),mean()(moyenne 1nPn i=1xi
)
max(), min()
length()(longueur du vecteur),
dim(), ncol(), nrow() (dimension de la matrice/nombre de lignes / nombre de colonnes.)
Ces fonctions retournent un vecteur :
cumsum()(sommes cumulées(x1,x1+x2, . . . ,Pn
i=1xi),cumprod() (produits cumulés),
sort(tri),order, unique
remarque :sort(x) = x[order(x)]
fft()(transformé de Fourier)
Objets et Opérations Dataframes
1 Objets et Opérations Vecteurs et matrices Dataframes
Listes
Objets et Opérations Dataframes
Définition des data.frames
C’est une matrice dont toutes les colonnes ne sont pas nécessairement du même type : scalaire, booléen, caractère. Par exemple
> data1= data.frame( x1 =1, x2 =1:10 , a=l e t t e r s [ 1 : 1 0 ] ) x1 x2 a
1 1 1 a
2 1 2 b
3 1 3 c
4 1 4 d
5 1 5 e
6 1 6 f
7 1 7 g
8 1 8 h
9 1 9 i
10 1 10 j
Par défaut les lignes sont numérotées 1,2 etc.
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 33 / 147
Objets et Opérations Dataframes
Opérations sur les dataframes
1 Pour visualiser les premières ligneshead()
2 Pour definir ou visualiser le nom des lignesrow.names
3 Pour definir ou visualiser le nom des colonnesnames
4 La dimension de l’objet est donnée pardim
> names( data1 ) [ 1 ] " x1 " " x2 " "a"
> names( data1 )< c( " c1 " , " c2 " , " c3 " )
> head ( data1 , 3 ) c1 c2 c3
1 1 1 a
2 1 2 b
3 1 3 c
> dim( data1 ) [ 1 ] 10 3
>row.names( data1 ) < l e t t e r s [ 1 : 1 0 ]
#l e v e c t e u r s l e t t e r s c o n t i e n t l e s l e t t r e s de l ’ a l p h a b e t
> head ( data1 , 2 ) c1 c2 c3
a 1 1 a
b 1 2 b
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 34 / 147
Objets et Opérations Dataframes
Opérations sur les dataframes
Les opérations entre des dataframes sont opérations terme à terme comme pour les matrices.
A = data.frame( x =1:3 , y =2:4) B = data.frame( xx =1, yy =1:3) C= data.frame( x =1:3 , y=rep( "a" , 3 ) )
> A 1 1 2x y 2 2 3 3 3 4
> B xx yy
1 1 1
2 1 2
3 1 3
> A+B 1 2 3x y 2 3 5 3 4 7
> C 1 1 ax y 2 2 a 3 3 a
> A+C
x y
1 2 NA 2 4 NA 3 6 NA
Warning message :
I n Ops.f a c t o r( l e f t , r i g h t ) :
c e c i n ’ e s t par p e r t i n e n t pour des v a r i a b l e s f a c t e u r s
Objets et Opérations Dataframes
Opérations sur les dataframes
Pour extraire un élément ou un bloc, la syntaxe est la même que pour les matrices.
Pour extraire une colonne les deux syntaxes suivantes peuvent être utilisées
> A$x [ 1 ] 1 2 3
> A [ , 1 ] [ 1 ] 1 2 3
Pour concaténer des dataframes ayant le même nombre de lignes
data.frame(A, B) x y xx yy
1 1 2 1 1
2 2 3 1 2
3 3 4 1 3
Objets et Opérations Listes
1 Objets et Opérations Vecteurs et matrices Dataframes
Listes
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 37 / 147
Objets et Opérations Listes
Définition d’une liste
C’est une structure qui regroupe des objets (pas nécessairement de même type).
On crée les listes avec la fonctionlist Exemple
On construit une liste appeléerndqui contient 3 objets : un vecteur dansserie
un scalaire danstaille
une chaîne de caractères danstype La syntaxe est la suivante
>rdn=l i s t( s e r i e=c( 1 : 1 0 0 ) , t a i l l e =100 , t y p e=" a r i t h m " )
attention
Une liste peut être créée sans donner des noms aux variables c’est a dire rdn=list(c(1:100),100,"arithm").
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 38 / 147
Objets et Opérations Listes
Opérations sur les listes
Pour visualiser la liste des composantes d’une liste
>names( rdn )
[ 1 ] " s e r i e " " t a i l l e " " t y p e "
> summary( rdn )
Length C l a s s Mode
s e r i e 100 none numeric
t a i l l e 1 none numeric
t y p e 1 none c h a r a c t e r
Pour atteindre les composantes d’une liste
>rdn$t a i l l e OU >rnd [ [ 2 ] ]
[ 1 ] 100 [ 1 ] 100
attention
Si la liste a été créée sans spécifier de noms aux variables, il n’y a pas de nom par défaut et la seule la première syntaxe est utilisable.
Objets et Opérations Listes
Pour extraire les objets d’une liste
>attach( rdn )
" s e r i e " " t a i l l e " " t y p e "
supprimer les objets créés à la ligne précédente :
>detach( rdn )
Objets et Opérations Listes
Importer/exporter des données
1 Importer une suite :x=scan("data.dat") : pour créer un vecteur à partir de données stockées dans un fichier, icidata.dat.
2 Importer un tableau :
x=read.table("data.dat")
x=read.table("data.dat", header=TRUE)
L’instruction header=TRUE permet de préciser que la première ligne du fichier contient le nom des colonnes du tableau.
3 Exporter :write, write.table
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 41 / 147
Objets et Opérations Listes
Importer/exporter des objets R
1 Sauvegarder des objets R dans un fichier
> x =1:10
> y=l i s t( a=1 , b=TRUE ,c=" exemple " )
> save( x , y ,f i l e= ’ s a v . rda ’ )
2 Lire un fichier qui contient des objets R
> load( " s a v . rda " )
> x
[ 1 ] 1 2 3 4 5 6 7 8 9 10
Attention si un objet R appeléx(ouy) existait avant l’appel de la fonction load, il a été remplacé par celui contenu dans le fichiersav.rda
3 saveRDSpeut aussi être utiliser si on sauvegarde une unique liste. Le fichier est lu avecreadRDS. On peut changer le nom de la liste à la lecture du fichier
> a= l i s t( x =1, y=3)
> saveRDS ( a , ’ s a v . r d s ’ )
> b = readRDS ( ’ s a v . r d s ’ )
> b
$x[ 1 ] 1
$y[ 1 ] 3
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 42 / 147
Les fonctions
2 Les fonctions
Les fonctions
Structure générale pour créer des fonctions
La structure générale d’une fonction est
>FUN=f u n c t i o n( l i s t e_des_p a r a m è t r e s )
{ commandes
r e t u r n( o b j e t s_r e t o u r n é s ) }
Les accolades{et}définissent le début et la fin de la fonction.
La dernière instructionreturncontient le ou les objets retournés par la fonction.
Exécuter la fonction :FUN(...)
Les fonctions
Exemple
La fonction suivante retourne le résultat den lancers d’une pièce.
PF = f u n c t i o n( n , proba . p i l e )
#nb a l é a t o i r e s u i v a n t U n i f ( 0 , 1 ){ u=r u n i f( n )
pf=(u<proba . p i l e ) pf = as.i n t e g e r(pf) r e t u r n(pf)
}
La sortie de la fonction est
PF ( 1 0 , 1/2)
[ 1 ] 0 0 1 0 1 0 1 1 0 0
# avec a f f e c t a t i o n de l a s o r t i e dans l e v e c t e u r x x = PF ( 1 0 , 1/2)
x[ 1 ] 0 1 1 1 0 0 0 0 0 0
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 45 / 147
Les fonctions
Renvois multi-arguments
La fonctionreturninterdit les sorties avec plusieurs arguments : il faut les regrouper dans un seul objet sous la forme d’une liste.
PF = f u n c t i o n( n , proba . p i l e )
{u=r u n i f( n ) #nb a l é a t o i r e s u i v a n t U n i f ( 0 , 1 ) pf=(u<proba . p i l e )
pf = as.i n t e g e r(pf) f =mean(pf)
r e t u r n(l i s t( e c h a n t i l l o n = pf, f r e q u e n c e = f ) ) }
Exécution de la fonction :
PF ( 4 , 1/2)
$e c h a n t i l l o n [ 1 ] 0 0 1 0
$f r e q u e n c e [ 1 ] 0 . 2 5
l= PF ( 4 , 1/2) l$e c h a n t i l l o n [ 1 ] 0 0 1 1
l$f [ 1 ] 0 . 5
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 46 / 147
Les fonctions
Paramètres par défaut
On peut affecter des valeurs par défaut aux paramètres d’entrée d’une fonction.
Modification de la fonctionPF
par défaut on suppose que la pièce est équilibrée.
PF = f u n c t i o n( n , proba . p i l e =1/2) {
u=r u n i f( n ) #nb a l é a t o i r e s u i v a n t U n i f ( 0 , 1 ) pf=(u<proba . p i l e )
pf = as.i n t e g e r(pf) r e t u r n(pf)
}
Les commandes
PF ( 1 0 ) OU PF ( 1 0 , 1/2)
retournent le même résultat
Les fonctions
Paramètres d’entrée
Il y a trois façons de spécifier les paramètres d’entrée d’une fonction
par la position : les paramètres d’entrée sont affectés aux premiers arguments de la fonction. PF(3,1/2) : les paramètres d’entrée sont n=3 et
proba.pile=1/2
par le nom : il s’agit du moyen le plus sûr, les noms des arguments sont précisés de manière explicite. On peut alors écrire PF(proba.pile=1/2 ,n=3), l’ordre n’est plus prioritaire
avec des valeurs par défaut : ces valeurs par défaut seront utilisées si les paramètres d’entrée ne sont pas spécifiés. On peut alors écrire PF(3) ou PF(n=3) : les paramètres d’entrée sont n=3 et la valeur par défaut pour proba.pile c’est à dire 1/2.
Les fonctions
Remarque sur les valeurs par défaut
Modification de la fonctionPF:
on inverse l’ordre des paramètres d’entrée :
PF = f u n c t i o n( proba . p i l e =1/2 , n ) {
. . . } PF ( 1 0 )
E r r e u r dans .I n t e r n a l(r u n i f( n , min, max) ) : ’ n ’ e s t manquant PF( n=10)
[ 1 ] 0 0 1 0 1 0 1 0 1 0
IL est donc préférable de placer les paramètres sans valeur par défaut en premier dans la déclaration des variables d’entrée.
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 49 / 147
Les fonctions
Pour les fonctions de deux variables
f une fonction de deux variablesf : (x,y)7!f(x,y) x ety deux vecteurs de même dimension.
La commandef(x,y)retourne le vecteur constitué des élémentsf(xi,yi) . Sixety ne sont pas de même dimension, celui de plus petite dimension est répété.
Tableaux croisés La fonctionouterretourne une matrice de la forme
M(i,j) =fun(xi,yj)
x =1:5 y =1:5
M=outer( x , y , ’ fun ’ )
funpeut aussi être une opération élémentaire +/-*
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 50 / 147
Les fonctions
la fonction Vectorize
Soitf une fonction dont le paramètre d’entréex estun scalaire.
Vectorizetransforme la fonctionf en une fonction vectorielle c’est à dire une fonction qui évalue la fonctionf en chaque point d’un vecteur d’entrée.
Soitx= (x1, ...,xn), on veut évaluer f aux pointsxi.
# on t r a n s f o r m e l a f o n c t i o n { f } en une f o n c t i o n v e c t o r i e l l e d f .
> df = V e c t o r i z e ( f , ’ x ’ )
>y=df( x )
Autres programmations possibles
1 avec une bouclefor
> y = rep( 0 , n )
> f o r ( i i n 1 : n ) y [ i ] = f ( x [ i ] )
2 avec la fonctionsapply
> y = s a p p l y( x , ’ f ’ )
Les fonctions
Illustration sur des fonctions de 2 variables
> f=f u n c t i o n( x , y ) s i n( x+y ^2)
> f ( 1 , 1 ) [ 1 ] 0.9092974
> #
> x = 1 : 3
> y= 1 : 3
> # on c a l c u l e f ( x [ i ] , y [ i ] )
> f ( x , y )
[ 1 ] 0.9092974 0.2794155 0.5365729
> z =1:2
> f ( x , z )
[ 1 ] 0.9092974 0.2794155 0.7568025
Message d ’ a v i s : I n x + y^2 :
l a t a i l l e d ’ un o b j e t p l u s l o n g n ’ e s t pas m u l t i p l e de l a t a i l l e d ’ un o b j e t p l u s c o u r t
> # l e c a l c u l e f f e c t u é e s t
> #f ( x [ 1 ] , z [ 1 ] ) f ( x [ 2 ] , z [ 2 ] ) f ( x [ 3 ] , z [ 1 ] )
> #i d e n t i q u e à
> f ( x ,c( z , z [ 1 ] ) )
[ 1 ] 0.9092974 0.2794155 0.7568025
Les fonctions
suite
> f ( 1 , y )
[ 1 ] 0.9092974 0.9589243 0.5440211
># i d e n t i q u e à
> f (rep( 3 , 1 ) , y )
[ 1 ] 0.7568025 0.6569866 0.5365729
>
>#c a l c u l du t a b l e a u c r o i s é f ( x [ i ] , y [ j ] )
> df = V e c t o r i z e( f , ’ x ’ )
> df( x , z )
[ , 1 ] [ , 2 ] [ , 3 ]
[ 1 , ] 0.9092974 0.1411200 0.7568025
[ 2 , ] 0.9589243 0.2794155 0.6569866
># l e s v e c t e u r s c o l o n n e s s o n t f ( 1 , 1 : 2 ) f ( 2 , 1 : 2 ) f ( 3 , 1 : 2 )
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 53 / 147
Les graphiques
3 Les graphiques
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 54 / 147
Les graphiques
Les fonctions usuelles plot(), lines(), points()
plotest la fonction centrale
Le fonctionspointsoulinessont utilisées pour superposer des courbes ou des nuages de points.
Premier exemple : représenter des vecteursplot(y) / plot(x,y)
x= seq( 4 ,4 , .1 ) y=l o g( x^2+1/x ^2)
0 20 40 60 80
1234
Index
y
plot(y)
-4 -2 0 2 4
1234
x
y
plot(x,y,pch=3)
Les graphiques
Quelques arguments de la fonction plot
pour fixer les limites des axes ylim=c(ay,by)etxlim=c(ax,bx) par défaut les bornes sont optimisées sur la première courbe tracée
type="p" (points) ou "l" (ligne): pour tracer une ligne ou un nuage de points.
pch: type de points lty: type de lignes.
col : couleur
0 5 10 15 20 25 30
024
Index
x
type=p
0 5 10 15 20 25 30
024
Index
x
type=l
0 5 10 15 20 25 30
024
Index
x
type=s
0 5 10 15 20 25 30
024
Index
x
type=h
Les graphiques
Graphique en 3D
représentation d’une fonction deR2!R x < seq( 10 , 10 , l eng th= 30) y < x
f < f u n c t i o n( x , y ) { r < s q r t( x^2+y ^ 2 ) ; 10 ⇤ s i n( r )/r } z < outer( x , y , f )
persp( x , y , z , t h e t a = 30 , p h i = 30 , expand = 0 . 5 , c o l = " l i g h t b l u e " )
x
y z
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 57 / 147
Les graphiques
Représentation graphique d’une matrice
contour(x, y, matrice.... ) image( ) persp( )
x
y
100 200 300 400 500 600 700 800
100200300400500600
Maunga Whau Volcano
x y
z
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 58 / 147
Les graphiques
Superposition de courbes
x=rnorm( 2 0 ) y=rexp( 2 0 )
#nuage de p o i n t s p l o t( x , y )
#a j o u t e r un nuage de p o i n t s p o i n t s( x +.1 , y +.1 , pch=2)
#a j o u t e r une l i g n e l i n e s(s o r t( x ) , y , l t y =2)
#a j o u t e r une l i g n e h o r i z o n t a l e a b l i n e( h=3)
#t e x t e + f r a m e t i t l e t e x t( 1 , 5 , " commentaire " )
t i t l e( " s u p e r p o s e r des c o u r b e s " )
-1 0 1 2
012345
x
y
commentaire superposer des courbes
Les graphiques
légende legend
legend( 1 , 1 . 9 , c( " x^2 1" , " s i n " , " c o s " ) , c o l = c( 3 , 4 , 6 ) ,
l t y = c( 2 , 1, 1 ) , pch = c( 1 , 3 , 4 ) )
-1.0-0.50.00.51.01.5
x^2 - 1
x^2-1 sin
cos les emplacements prédéfinis :
0.0 0.2 0.4 0.6 0.8 1.0
-1.0-0.50.00.51.0
x
y
bottomright (x,y) bottom
(x,y) bottomleft
(x,y) left
(x,y) topleft, inset = .05
(x,y) top
(x,y) topright, inset = .02
(x,y)
right (x,y) center
(x,y)
Les graphiques
Autour de la fonction plot
Le graphique produit par la fonctionplot(x)dépend de la classe de l’objetx.
methods(p l o t)
[ 1 ] " p l o t . data . frame " " p l o t . d e f a u l t "
[ 3 ] " p l o t . d e n s i t y " " p l o t . f a c t o r "
[ 5 ] " p l o t . f o r m u l a " " p l o t . f u n c t i o n "
[ 7 ] " p l o t . h i s t o g r a m " " p l o t . lm"
[ 9 ] " p l o t . mlm" " p l o t . mts"
[ 1 1 ] " p l o t . new" " p l o t . POSIXct"
[ 1 3 ] " p l o t . POSIXlt " " p l o t . t a b l e "
[ 1 5 ] " p l o t . t s " " p l o t . window"
[ 1 7 ] " p l o t . xy "
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 61 / 147
Les graphiques
Illustrations
sur une fonction (par exsin)
p l o t(s i n, x l i m=c( pi , p i ) )
sur un tableau
x=r p o i s( 1 0 0 0 , 1 ) y=t a b l e( x )
xy 0 1 2 3 4 6
374 372 162 71 20 1
p l o t( y )
sur un histogramme ou une densité
r=rnorm( 1 0 0 , 1 ) z=h i s t( r ,p l o t=F ) p l o t( z )
w=d e n s i t y( r ) p l o t(w)
-3 -2 -1 0 1 2 3
-1.0-0.50.00.51.0
x
sin (x) 0100200300
x
y
0 1 2 3 4 5
Histogram of r
r
Frequency
-1 0 1 2 3
05101520
-2 -1 0 1 2 3 4
0.00.10.20.30.4
density.default(x = r)
N = 100 Bandwidth = 0.3564
Density
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 62 / 147
Les graphiques
Représentation graphique d’une matrice ou dataframe
Les outils graphiquesmatplotetpairssont adaptés aux matrices dont les colonnes correspondent à des variables.
Exemple
>data( i r i s )
> i r i s
S e p a l . Length S e p a l . H e i g h t P e t a l . Length P e t a l . H e i g h t S p e c i e s
1 5 . 1 3 . 5 1 . 4 0 . 2 s e t o s a
2 4 . 9 3 . 0 1 . 4 0 . 2 s e t o s a
3 4 . 7 3 . 2 1 . 3 0 . 2 s e t o s a
4. . .
54 5 . 5 2 . 3 4 . 0 1 . 3 v e r s i c o l o r
55 6 . 5 2 . 8 4 . 6 1 . 5 v e r s i c o l o r
. . .
147 6 . 3 2 . 5 5 . 0 1 . 9 v i r g i n i c a
148 6 . 5 3 . 0 5 . 2 2 . 0 v i r g i n i c a
Les graphiques
Fonction matplot(matrice ...)
Cette fonction représente sur un même graphique les colonnes d’une matrice ou d’une data.frame.
Anderson’s Iris Data – 3 species
0 50 100 150
02468
iris
Les graphiques
Utilisation des biplots , pairs(matrice , ....)
Cette fonction représente tous les nuages de points possibles entre les différentes colonnes.
Sepal.Length
2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5
4.55.56.57.5
2.02.53.03.54.0
Sepal.Width
Petal.Length
1234567
4.5 5.5 6.5 7.5
0.51.01.52.02.5
1 2 3 4 5 6 7
Petal.Width Anderson's Iris Data -- 3 species
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 65 / 147
Les graphiques
Construction d’un polygone
1 On commence par fixer les axes des abscisses et des ordonnés à l’aide d’un graphique vide.
p l o t(c( 1 , 9 ) , c( 0 , 2 ) , t y p e="n" )
2 Avec la fonctionpolygon, on trace le polygone défini pas ses sommets
polygon(c( 4 . 5 , 5 . 5 , 5 . 5 , 4 . 5 ) ,c( 0 , 0 , 1 , 1 ) )
3 Arguments supplémentaires
polygon( 1 : 9 , c( 2 , 1 , 2 , 1 ,NA, 2 , 1 , 2 , 1 ) , c o l=c( " r e d " , " b l u e " ) ,
b o r d e r=c( " g r e e n " , " y e l l o w " , lwd =3, l t y=c( " dashed " , " s o l i d " ) )
2 4 6 8
0.00.51.01.52.0
c(1, 9)
c(0, 2)
etape 1
2 4 6 8
0.00.51.01.52.0
c(1, 9)
c(0, 2)
etape 2
2 4 6 8
0.00.51.01.52.0
c(1, 9)
c(0, 2)
etape 3
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 66 / 147
Les graphiques
autre exemple
0 20 40 60 80 100
-505101520
Time
Distance
Distance Between Brownian Motions
n=100
z . haut=c( 0 ,cumsum(rnorm( n ) ) ) z . bas= c( 0 ,cumsum(rnorm( n ) ) ) xx < c( 0 : n , n : 0 )
yy < c( z . bas , rev( z . haut ) )
#g r a p h i q u e v i d e pour f i x e r l e s d i m e n s i o n s
p l o t ( xx , yy , t y p e="n" , x l a b="Time" , y l a b=" D i s t a n c e " )
#t r a c e r l e p o l y g o n e
polygon( xx , yy , c o l=" g r a y " , b o r d e r = " r e d " ) t i t l e( " D i s t a n c e Between Brownian Motions " )
Les graphiques
Pour sauvegarder un graphique : utilisation de la fonctiondev.print.
pour obtenir un fichier postscript :
dev.print(postscript, file="essai.ps") pour obtenir un fichier pdf :
dev.print(pdf, file="essai.pdf")
utilisation des menus (sous widows ou mac seulement) La fenêtre graphique peut être fractionnée en utilisant
par(mfrow=c(n,m)), on obtient alorsn⇥mgraphiques sur une même page organisés sur n lignes et m colonnes
split.screen(m,n)
screen(i), screen(i,FALSE) pour sélectionner la sous fenêtre erase.screen()
close.screen(all = TRUE)
Structures de contrôle et Itérations
4 Structures de contrôle et Itérations
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 69 / 147
Structures de contrôle et Itérations
Instructions conditionnelles
La syntaxe
if (condition) {instructions}permet de calculer les instructions uniquement si la condition est vraie.
if (condition) { A } else {B}calcule les instructionsAsi la condition est vraie et les instructionsBsinon.
Par exemple,
if (x>0) y=x*log(x) else y=0
Remarque : Si les instructions se limitent à un seul calcul comme dans cet exemple on peut utiliser la fonctionifelse
y=ifelse(x>0,x*log(x),0)
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 70 / 147
Structures de contrôle et Itérations
Opération non vectorielle
1 Avec la commande if (condition) ... else ... la condition ne peut pas être vectorielle
Par exemple
> x= 1 : 7
> i f( x >2) p r i n t( "A" ) e l s e p r i n t( "B" ) [ 1 ] "B"
Dans la condition,x a une longueur supérieure à 1. Seul lepremier élément est utilisé :
(x>2) correspond à (x[1] >2)
2 ifelsepermet d’appliquer une instruction conditionnelle sur chacune des coordonnées d’un vecteur.
> i f e l s e( x <2,"A" , "B" )
[ 1 ] "A" "B" "B" "B" "B" "B" "B"
Alternative :
> g = f u n c t i o n( x ) i f( x >2) p r i n t( "A" ) e l s e p r i n t( "B" )
>vg = V e c t o r i z e( g , ’ x ’ )
> vg ( 1 : 1 0 )
Structures de contrôle et Itérations
Itérations
On utilise les boucles pour exécuter plusieurs fois une instruction ou un bloc d’instructions
Les trois types de boucle sont for:
for(varinseq) {commandes}
while:
while(cond) { commandes}
repeat:
repeat{ commandes ;if(cond)break}
1 Dans une bouclefor, le nombre d’itérations est fixé.
2 La durée d’execution des boucleswhile/repeatpeut être infinie !
Structures de contrôle et Itérations
Exemple
Les 3 programmations suivantes retournent le même résultat.
1 Avec l’instructionfor
f o r ( i i n 1 : 1 0 ) {
commandes }
2 Avec l’instructionwhile.
i= 1w h i l e ( i <= 10 ) {
commandes i = i +1 }
3 Avec l’instructionrepeat
i= 1 repeat
{ commandes
i = i +1
i f ( i >10) break }
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 73 / 147
Structures de contrôle et Itérations
Exemple
On veut simulern variables aléatoires suivant la loi deX1+...+Xp où lesXi sont iid suivant la loi uniforme sur[0,1].
On stocke l’échantillon dansY.
# i n i t i a l i s a t i o n de Y avec des 0 Y = rep( 0 , n )
f o r ( i i n 0 : n )
{ Y [ i ] = sum(r u n i f( p , 0 , 1 ) ) }
Une autre façon de remplirY par concaténation :
# Y e s t un v e c t e u r v i d e Y = NULL
f o r ( i i n 0 : n ) {
Y = c(Y , sum(r u n i f( p , 0 , 1 ) ) ) }
Une autre programmation :
# i n i t i a l i s a t i o n de Y avec des 0 Y = rep( 0 , n )
f o r( i i n 1 : p )
{ Y = Y + r u n i f( n , 0 , 1 ) }
Anne PHILIPPE (U. Nantes) Logiciel R 26 septembre 2012 74 / 147
Structures de contrôle et Itérations
Exemple
On simule des variables aléatoires suivant la loi de BernoulliB(1/2)jusqu’à l’obtention du premier 1.
Le nombre de variables (notéN dans le code ci dessous) simulées suivant la loi de Bernoulli suit une loi géométrique de paramètre 1/2.
En utilisantwhile
x=rbinom( 1 , 1 , . 5 ) N=1
w h i l e ( x != 1) {x=rbinom( 1 , 1 , . 5 )
N=N+1 }
En utilisantrepeat
N=0 repeat {
x=rbinom( 1 , 1 , . 5 ) N=N+1
i f ( x==1) break }
Structures de contrôle et Itérations
Exemple
On dispose des températures moyennes mensuelles relevées à Nottingham pendant 10 ans de 1920 à 1939.
> nottem
Jan Feb Mar Apr May Jun J u l Aug Sep Oct Nov Dec
1920 4 0 . 6 4 0 . 8 4 4 . 4 4 6 . 7 5 4 . 1 5 8 . 5 5 7 . 7 5 6 . 4 5 4 . 3 5 0 . 5 4 2 . 9 3 9 . 8 1921 4 4 . 2 3 9 . 8 4 5 . 1 4 7 . 0 5 4 . 1 5 8 . 7 6 6 . 3 5 9 . 9 5 7 . 0 5 4 . 2 3 9 . 7 4 2 . 8 e t c
> nottem=matrix( nottem ,ncol=12, byrow=T)
On souhaite calculer un profil moyen annuel et le stocker dans le vecteurtemp.
temp = rep( 0 , 1 2 )
f o r ( i i n 1 : 1 2 ) temp [ i ] = mean( nottem [ , i ] )
On peut aussi initialiser le vecteurtempcomme le vecteur vide, puis on le remplit en concaténant les résultats
temp = NULL
f o r ( i i n 1 : 1 2 ) temp = c( temp , mean( nottem [ , i ] ) )