• Aucun résultat trouvé

Notes de Cours sur le logiciel R

N/A
N/A
Protected

Academic year: 2022

Partager "Notes de Cours sur le logiciel R"

Copied!
37
0
0

Texte intégral

(1)

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

(2)

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

(3)

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

(4)

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 dernierb 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

(5)

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

(6)

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

> AB

[ , 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

(7)

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)]

(8)

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

(9)

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

(10)

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 )

(11)

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(...)

(12)

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.

(13)

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

(14)

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

(15)

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)

(16)

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

(17)

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 alorsnmgraphiques 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)

(18)

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 !

(19)

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 ] ) )

Références

Documents relatifs

La partie II comprend six chapitres : les fonctions mathématiques de base ; la statistique descriptive (incluant la mise en œuvre des fonctions graphiques de base) ; la simulation

L’ergonomie de ces applications autorise une prise en main très rapide par les élèves, leur permettant d’être très rapidement autonome, ce qui est très motivant

Sélectionne cette fois Eclipses de lunes, laisse les valeurs par défaut et clique sur « Calculer ». Complète le schéma

En épidémiologie, survenue d’une maladie à un groupe de facteurs de risque, avec des poids spécifiques pour chaque facteur de risque En fiabilité : survenu d’un accident sur

Dans le modèle multiplicatif, l’amplitude de la composante saisonnière et du bruit n’est plus constante au cours du temps : elles varient au cours du temps proportionnellement à

la plupart des chiers d'aide sont bien documentés ; accès direct à la che d'aide avec la fonction help() ;. recherche de chiers d'aide par titre ou mot-clé avec la

Compléter sur cette feuille et donner les valeurs approchées par défaut et excès. Valeur approchée à

Mais l’utilité principale de cette fenêtre est de pouvoir définir de nouvelles fonctions qui ne sont pas prédéfinies dans R pour pouvoir les utiliser chaque fois qu’on