anne philippe cours r

33
 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 14 septembre 2011 Anne PHILIPPE (U. Nan tes)  Logiciel R  14 septembr e 2011 1 / 1 31 Plan 1  Objets et Opérations Vecteurs et matrices Dataframes Listes 2  Les fonctions 3  Les graphiques 4  Structures de c ontrôle et Itérations 5  Auto ur des loi s de probabilités 6  Outils graphiqu es en statistique 7  Inférence statistique Estimation non paramétrique Tests Régression 8  Séries Chronologiques Anne PHILIPPE (U. Nan tes)  Logiciel R  14 sep te mbr e 2011 2 / 1 31 Installation Le logiciel R est un  freeware  disponible sur le site http://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) Anne PHILIPPE (U. Nan tes)  Logiciel R  14 septemb re 2 01 1 3 / 1 31 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écique 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 Anne PHILIPPE (U. Nan tes)  Logiciel R  14 sept embr e 2011 4 / 1 31

Upload: clux

Post on 21-Jul-2015

21 views

Category:

Documents


0 download

TRANSCRIPT

Plan

Notes de Cours sur le logiciel RAnne PHILIPPEUniversit de Nantes, Laboratoire de Mathmatiques Jean Leray email : [email protected]

1

2 3 4

14 septembre 2011

Objets et Oprations Vecteurs et matrices Dataframes Listes Les fonctions Les graphiques Structures de contrle et Itrations

5 6 7

8

Autour des lois de probabilits Outils graphiques en statistique Infrence statistique Estimation non paramtrique Tests Rgression Sries Chronologiques

Anne PHILIPPE

(U. Nantes)

Logiciel R

14 septembre 2011

1 / 131

Anne PHILIPPE

(U. Nantes)

Logiciel R

14 septembre 2011

2 / 131

Installation

DocumentationsDocuments sur le logiciel R :

http://www.math.sciences.univ-nantes.fr/philippe/R_freeware.html

Le logiciel R est un freeware disponible sur le site http://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 complmentaires (1800 sur le site CRAN)Anne PHILIPPE (U. Nantes) Logiciel R 14 septembre 2011 3 / 131

Site consacr aux graphiques addictedtor.free.fr/graphiques/ Collection spcique UseR chez Springer Plus de 80 livres, par exempleIntroductory 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 ExamplesAnne PHILIPPE (U. Nantes) Logiciel R 14 septembre 2011 4 / 131

Au dmarrage

Sous linux

> apparat automatiquement en dbut de chaque ligne de commandes + apparat en dbut de ligne si la ligne prcdente est incomplte

Anne PHILIPPE

(U. Nantes)

Logiciel R

14 septembre 2011

5 / 131

Anne PHILIPPE

(U. Nantes)

Logiciel R

14 septembre 2011

6 / 131

Utiliser laide

diteurSous MacOS et Windows, un diteur de texte intgr au logiciel R

> > > >

help("plot") ?plot help.search("plot") ??plot

Les dmos :> demo() # pour obtenir la liste des demos > demo(graphics)

Les exemples : La fonction example excute les exemples gnralement inclus la n des chiers daide.> example(FUN)Anne PHILIPPE (U. Nantes) Logiciel R 14 septembre 2011 7 / 131

Ctrl R excute la ligne sur laquelle se trouve le curseur ou les lignes dun bloc slectionn. source("nom-du-fichier.R") pour excuter le code contenu dans le chier nom-du-fichier.RAnne PHILIPPE (U. Nantes) Logiciel R 14 septembre 2011 8 / 131

Objets et Oprations

Librairies

1

Toutes les librairies ne sont pas charges au lancement du logiciel library() retourne la liste des librairies installes. library(LIB) charge la librairie LIB library(help = LIB) retourne la liste des fonctions de la librairie LIB search(), searchpaths() retourne la liste des librairies charges.

Objets et Oprations Vecteurs et matrices Dataframes Listes

Anne PHILIPPE

(U. Nantes)

Logiciel R Objets et Oprations

14 septembre 2011

9 / 131

Anne PHILIPPE

(U. Nantes)

Logiciel R Objets et Oprations

14 septembre 2011

10 / 131

Oprations lmentaires1

Objets

Oprations lmentaires sur les scalaires : , , +, /, >2+4 6

Les objets de base sont vecteurs, matrices data.frames, listes Quelques fonctions gnriques : ls() retourne la liste des objets de la session. rm(a) supprime lobjet a

2

Oprations avec aectation (avec ou sans achage)>x=2+4 >x 6 >(x=2+4) 6

# avec affichage du rsultat

3

Les principaux types sontentier , rel, complexe caractre logique : TRUE, FALSE, NA (not available)

Anne PHILIPPE

(U. Nantes)

Logiciel R

14 septembre 2011

11 / 131

Anne PHILIPPE

(U. Nantes)

Logiciel R

14 septembre 2011

12 / 131

Objets et Oprations

Objets et Oprations

Vecteurs et matrices

Fonctions is/asis.xxx(obj) teste si obj est un objet de type xxx as.xxx(obj) contraint si possible obj au type dobjet xxx o xxx reprsente un type dobjet (complex, real, vector matrix etc...)> x=3 > is.real(x) [1] TRUE > is.complex(x) [1] FALSE

1

> as.complex(x) [1] 3+0i > as.character(x) [1] "3"

Objets et Oprations Vecteurs et matrices Dataframes Listes

Remarque : Conversion de TRUE / FALSE en valeur numrique :> as.integer(T) [1] 1 > as.integer(F) [1] 0Anne PHILIPPE (U. Nantes) Logiciel R Objets et Oprations Vecteurs et matrices 14 septembre 2011 13 / 131 Anne PHILIPPE (U. Nantes) Logiciel R Objets et Oprations Vecteurs et matrices 14 septembre 2011 14 / 131

Crer des vecteursGnralisation : seq(a,b,t) o a est premier terme, le dernier b et la raison t la fonction c( ) concatne des scalaires ou des vecteurs :> x=c(1,4,9) > y=c(x,2,3) > y [1] 1 4 9 2 3 seq(from, to) seq(from, to, by= ) seq(from, to, length.out= ) la raison est 1 on fixe la raison on fixe le nb de termes

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 1.8 1.9 2.0 2.1 2.2 2.3 .... [26] 3.5 3.6 3.7 3.8 3.9 4.0 raison -1

Suites arithmtiques de raison 1 ou -1 : c(a:b).> c(1:4) # a c(4:1) # a>b [1] 1 2 3 4 [1] 4 3 2 1 > c(1.4:7) # a-b nest pas un entier [1] 1.4 2.4 3.4 4.4 5.4 6.4x=rep(y ,n) pour crer un vecteur constitu de llment y rpt n fois. (y peut tre un scalaire ou un vecteur) par exemple> rep(1,4) [1] 1 1 1 1Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201115 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201116 / 131Objets et OprationsVecteurs et matricesObjets et OprationsVecteurs et matricesCrer des matricesLes matrices sont cres avec la fonction matrix() partir dun vecteur. On doit xer le nombre de colonnes ncol et/ou le nombre de lignes nrow.> x = matrix(c(2,3,5,7,11,13),ncol=2)Attention : si la dimension du vecteur nest pas gale au produit (ncol nrow) alors lopration eectue 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 1Par dfaut la matrice est remplie colonne par colonne. Pour remplir ligne par ligne, on ajoute largument byrow=T> y = matrix(c(2,3,5,7,11,13),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 13Anne PHILIPPE(U. Nantes)Logiciel R Objets et Oprations Vecteurs et matrices14 septembre 201117 / 131Anne PHILIPPE(U. Nantes)Logiciel R Objets et Oprations Vecteurs et matrices14 septembre 201118 / 131Quelques matrices particulires : diagonale, ToeplitzConcatner des vecteurs/matricesrbind> 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 >> toeplitz(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 1cbind> x=1:10 > y=x^2 > rbind(x,y) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 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 etc PHILIPPE (U. Nantes) Anne Logiciel Rdiag La fonction diag retourne une matrice diagonale lorsque le paramtre dentre est un vecteur. Si le paramtre dentre est une matrice, alors elle retourne un vecteur constitu de la diagonale de la matriceAnne PHILIPPE(U. Nantes)Logiciel R14 septembre 201119 / 13114 septembre 201120 / 131Objets et OprationsVecteurs et matricesObjets et OprationsVecteurs et matricesExtraire des lments dun vecteur ou dune matrice> vect=c(1.5:9.5 ) > vect [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.5Oprations sur les Matrices/Vecteurs Les oprations + * - / entre 2 vecteurs ou matrices de mme dimension sont des oprations terme terme.> A [,1] [,2] > x=c(1:5) > y=c(rep(0,3),rep(1,2)) [1,] 2 1 [2,] 4 9 > x > B [1] 1 2 3 4 5 [,1] [,2] > y [1,] 0 2 [1] 0 0 0 1 1 [2,] 1 1 > A*B > x*y [,1] [,2] [1] 0 0 0 4 5 [1,] 0 2 [2,] 4 9 >Extraire un lment> vect[1] [1] 1.5 > mat[2,1] [1] 2.5Colonne/ligne dune matrice> mat[,1] [1] 1.5 2.5 3.5 > mat[3,] [1] 3.5 6.5 9.5Extraire un bloc ou plusieurs coordonnes> mat[2:3,1:2] [,1] [,2] [1,] 2.5 5.5 [2,] 3.5 6.5 > vect[c(1,3,7)] [1] 1.5 3.5 7.5Attention : vect[-j] retourne le vecteur vect sans la j me coordonne> vect[-c(1,3,7)]Anne PHILIPPEretourne 2.5 4.5 5.5 6.5 8.5 9.5Logiciel R Objets et Oprations Vecteurs et matrices 14 septembre 2011 21 / 131 Anne PHILIPPE (U. Nantes) Logiciel R Objets et Oprations Vecteurs et matrices 14 septembre 2011 22 / 131(U. Nantes)Attention Si les vecteurs ne sont pas de mme longueur, le plus court est complt automatiquement .> x =c(1:5) > x [1] 1 2 3 4 5 > y =c(1,2) > y [1] 1 2 > x + y [1] 2 4 4 6 6Quelques oprations particulires sur les matrices> a=matrix(1,ncol=2,nrow=2) > a [,1] [,2] [1,] 1 1 [2,] 1 1 > a+3 #matrice +scalaire [,1] [,2] [1,] 4 4 [2,] 4 4 > a+c(1:2) #matrice + vecteur [,1] [,2] [1,] 2 2 [2,] 3 3x : 1 2 3 4 5 y : 1 2 1 2 1 ----------------x+y : 2 4 4 6 6Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201123 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201124 / 131Objets et OprationsVecteurs et matricesObjets et OprationsVecteurs et matricesAction dune fonction sur un vecteur ou une matriceSoit FUN une fonction dnie sur les scalaires qui retourne un scalaire. Par exemplesqrt abs sin cos tan exp log log10 gamma lgamma square root absolute value trigonometric functions (radians) exponential and natural logarithm common logarithm gamma function and its natural logPour les fonctions de deux variablesf une fonction de deux variables f : (x, y ) f (x, y ) x et y deux vecteurs de mme dimension. La commande f(x,y) retourne le vecteur constitu des lments f (xi , yi ) . Si x et y ne sont pas de mme dimension, celui de plus petite dimension est rpt. Tableaux croiss La fonction outer retourne une matrice de la forme M(i, j) = fun(xi , yj )x=1:5 y=1:5 M=outer(x,y,fun)Lorsque le paramtre dentre est un vecteur (respectivement une matrice), la fonction FUN est applique sur chacune des composantes. Lobjet retourn est un vecteur (respectivement une matrice). Exemple Si A = (ai,j ) est une matrice, alors exp(A) retourne une matrice constitue des lments e ai ,j .Anne PHILIPPE (U. Nantes) Logiciel R Objets et Oprations Vecteurs et matrices 14 septembre 2011 25 / 131fun peut aussi tre une opration lmentaire +/-*Anne PHILIPPE (U. Nantes) Logiciel R Objets et Oprations Vecteurs et matrices 14 septembre 2011 26 / 131Quelques fonctions sur les matricesLe produit matriciel est obtenu avec % % Calcul des valeurs/vecteurs propres :eigen Calcul du dterminant : det t(A) retourne la transpose de la matrice A dcomposition de Choleski :chol (X) retourne R telle que X = R R o R est une matrice triangulaire suprieure et R est la transpose de R. dcomposition svd : svd(X) retourne (U,D,V) telles que X = UDV o U et V sont orthogonales et D est diagonale. solve solve(A) retourne linverse de la matrice A solve(A,b) retourne x tel que Ax = bAnne PHILIPPE (U. Nantes) Logiciel R 14 septembre 2011 27 / 131Objets boolens et instructions logiquesLes oprations logiques : < , > , = , != [diffrent], == [gal] retournent TRUE ou FALSE. La comparaison entre deux vecteurs est une comparaison terme terme. Si les vecteurs ne sont pas de mme longueur, le plus court est complt automatiquement.> a= 1:5 > a8 vect[vect>8] : vect>8 est un vecteur de TRUE et FALSE, on extrait les composantes aectes TRUE. extraire les composantes >8 ou 8) | (vect8 et 8) & (vect x=(1:10)^2 > x [1] 1 4 9 16 25 > which(x== 25) [1] 5 > which(x > 21) [1] 5 6 7 8 9 1036496481 100Exemple Les commandes x[x>1] et x[which(x>1)] retournent le mme vecteur. Cas particulier which.max(x) retourne which(x==max(x))Anne PHILIPPE(U. Nantes)Logiciel R Objets et Oprations Vecteurs et matrices14 septembre 201129 / 131Anne PHILIPPE(U. Nantes)Logiciel R Objets et Oprations Dataframes14 septembre 201130 / 131Ces fonctions retournent un scalaire : sum() (somme n 1 i=1 xi ) n 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 cumules (x1 , x1 + x2 , . . . , (produits cumuls), sort (tri), order, unique remarque : sort(x) = x[order(x)] fft() (transform de Fourier)n i=1 xi ), ixi ), prod() (produitixi ), mean() (moyenne1Objets et Oprations Vecteurs et matrices Dataframes Listescumprod()Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201131 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201132 / 131Objets et OprationsDataframesObjets et OprationsDataframesDnition des data.framesCest une matrice dont toutes les colonnes ne sont pas ncessairement du mme type : scalaire, boolen, caractre. Par exemple> data1= x1 x2 1 1 1 2 1 2 3 1 3 4 1 4 5 1 5 6 1 6 7 1 7 8 1 8 9 1 9 10 1 10 data.frame(x1=1,x2=1:10,a=letters[1:10]) a a b c d e f g h i jOprations sur les dataframesLes oprations entre des dataframes sont oprations terme terme comme pour les matrices.> A = data.frame(x=1:3,y=2:4) > C= data.frame(x=1:3,y=rep("a",3)) > B = data.frame(xx=1,yy=1:3)> A x 1 1 2 2 3 3y 2 3 4> B xx yy 1 1 1 2 1 2 3 1 3> A+B x y 1 2 3 2 3 5 3 4 7> C x 1 1 2 2 3 3y a a aPar dfaut les lignes sont numrotes 1,2 etc. On peut ajouter des noms aux lignes avec loption row.namesAnne PHILIPPE (U. Nantes) Logiciel R Objets et Oprations Dataframes 14 septembre 2011 33 / 131> A+C x y 1 2 NA 2 4 NA 3 6 NAAnne PHILIPPE (U. Nantes)Warning message: In Ops.factor(left, right) : + ceci nest pas pertinent pour des variables facteursLogiciel R Objets et Oprations Listes14 septembre 201134 / 131Oprations sur les dataframesPour extraire un lment ou un bloc, la syntaxe est la mme que pour les matrices. Pour extraire une colonne les deux syntaxes suivantes peuvent tre utilises> A$x [1] 1 2 3 > A[,1] [1] 1 2 31Objets et Oprations Vecteurs et matrices Dataframes ListesPour concatner des dataframes ayant le mme nombre de lignesdata.frame(A,B) x y xx yy 1 1 2 1 1 2 2 3 1 2 3 3 4 1 3Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201135 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201136 / 131Objets et OprationsListesObjets et OprationsListesDnition dune listeCest une structure qui regroupe des objets (pas ncessairement de mme type). On cre les listes avec la fonction list Exemple On construit une liste appele rnd qui contient 3 objets : un vecteur dans serie un scalaire dans taille une chane de caractres dans type La syntaxe est la suivante>rdn=list(serie=c(1:100),taille=100,type="arithm")Oprations sur les listesPour visualiser la liste des composantes dune liste>names(rdn) [1] "serie" "taille" "type" > summary(rdn) Length Class Mode serie 100 -none- numeric taille 1 -none- numeric type 1 -none- characterPour atteindre les composantes dune liste>rdn$taille [1] 100 OU >rnd[[2]] [1] 100attention Une liste peut tre cre sans donner des noms aux variables cest a dire rdn=list(c(1:100),100,"arithm") .Anne PHILIPPE (U. Nantes) Logiciel R Objets et Oprations Listes 14 septembre 2011 37 / 131attention Si la liste a t cre sans spcier de noms aux variables, il ny a pas de nom par dfaut et la seule la premire syntaxe est utilisable.Anne PHILIPPE (U. Nantes) Logiciel R Objets et Oprations Listes 14 septembre 2011 38 / 131Importer/exporter des donnesPour extraire les objets dune liste>attach(rdn) "serie" "taille" "type"1Importer une suite : x=scan("data.dat") : pour crer un vecteur partir de donnes stockes dans un chier, ici data.dat. Importer un tableau : x=read.table("data.dat") x=read.table("data.dat", header=TRUE) Linstruction header=TRUE permet de prciser que la premire ligne du chier contient le nom des colonnes du tableau. Exporter : write, write.table2supprimer les objets crs la ligne prcdente :>detach(rdn)3Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201139 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201140 / 131Les fonctionsLes fonctionsStructure gnrale pour crer des fonctionsLa structure gnrale dune fonction est2Les fonctions>FUN=function(liste_des_paramtres) { commandes return(objets_retourns) }Les accolades { et } dnissent le dbut et la n de la fonction. La dernire instruction return contient le ou les objets retourns par la fonction. Excuter la fonction : FUN(...)Anne PHILIPPE(U. Nantes)Logiciel R Les fonctions14 septembre 201141 / 131Anne PHILIPPE(U. Nantes)Logiciel R Les fonctions14 septembre 201142 / 131ExempleLa fonction suivante retourne le rsultat de n lancers dune pice.>PF = function(n ,proba.pile) { u=runif(n) #nb alatoire suivant Unif(0,1) pf=(u x = PF(10,1/2) > x [1] 0 1 1 1 0 0 0 0 0 0Excution de la fonction :> PF(4,1/2) $echantillon [1] 0 0 1 0 $frequence [1] 0.25 > l= PF(4,1/2) > l$echantillon [1] 0 0 1 1 > l$f [1] 0.5(U. Nantes) Logiciel R 14 septembre 2011 44 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201143 / 131Anne PHILIPPELes fonctionsLes fonctionsParamtres par dfautOn peut aecter des valeurs par dfaut aux paramtres dentre dune fonction. Modication de la fonction PF par dfaut on suppose que la pice est quilibre.>PF = function(n ,proba.pile=1/2) { u=runif(n) #nb alatoire suivant Unif(0,1) pf=(uPF(10) OU PF(10,1/2)retournent le mme rsultatAnne PHILIPPE (U. Nantes) Logiciel R Les fonctions 14 septembre 2011 45 / 131 Anne PHILIPPE (U. Nantes) Logiciel R Les graphiques 14 septembre 2011 46 / 131Remarque sur les valeurs par dfautModication de la fonction PF : on inverse lordre des paramtres dentre :>PF = function(proba.pile=1/2, n) { ... } > PF(10) Erreur dans .Internal(runif(n, min, max)) : n est manquant > PF(n=10) [1] 0 0 1 0 1 0 1 0 1 0 >3Les graphiquesIL est donc prfrable de placer les paramtres sans valeur par dfaut en premier dans la dclaration des variables dentre.Anne PHILIPPE (U. Nantes) Logiciel R 14 septembre 2011 47 / 131 Anne PHILIPPE (U. Nantes) Logiciel R 14 septembre 2011 48 / 131Les graphiquesLes graphiquesLes fonctions usuelles plot(), lines(), points()plot est la fonction centrale Le fonctions points ou lines sont utilises pour superposer des courbes ou des nuages de points. Premier exemple : reprsenter des vecteurs plot(y) / plot(x,y)> x= seq(-4,4,.1) > y=log(x^2+1/x^2)plot(y)Quelques arguments de la fonction plottype=p4 xpour xer les limites des axesylim=c(ay,by) et xlim=c(ax,bx) par dfaut les bornes sont optimises sur la premire courbe trace402051015 Index202530type=lx02051015 Index2025301 2 3 4type="p" (points) ou "l" (ligne) : pour tracer une ligne ou un nuage de points.60 80type=s4 x 0 2y02040 Indexpch : type de points lty : type de lignes.0 2051015 Index202530plot(x,y,pch=3)type=h4 x1 2 3 4col : couleur-4 -2 0 x 2 4y051015 Index202530Anne PHILIPPE(U. Nantes)Logiciel R Les graphiques14 septembre 201149 / 131Anne PHILIPPE(U. Nantes)Logiciel R Les graphiques14 septembre 201150 / 131Superposition de courbessuperposer des courbescommentaire5lgende legendlegend(-1, 1.9, c("x^2-1","sin","cos"), col = c(3,4,6), lty = c(2, -1, 1), pch = c(-1, 3, 4))-10 x12bottomleft-1.0-0.5-0.5> x=rnorm(20) > y=rexp(20) #nuage de points > plot(x,y) #ajouter un nuage de points > points(x+.1,y+.1, pch=2) #ajouter une ligne > lines(sort(x),y, lty=2) #ajouter une ligne horizontale > abline(h=3) #texte + frametitle > text(1,5,"commentaire") >title("superposer des courbes")431.0y1.5x^2-1 sin cosles emplacements prdnis :1.0top topleft, inset = .05 (x,y) (x,y)topright, inset = .02 (x,y)20.5x^2 - 110.50.00.0left (x,y)center (x,y)right (x,y)0ybottom (x,y) 0.2 0.4 x 0.6 0.8bottomright (x,y) 1.0(x,y) 0.0Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201151 / 131-3 -1 Anne PHILIPPE -2 (U. Nantes)-1.0012 Logiciel R314 septembre 201152 / 131Les graphiquesLes graphiquesAutour de la fonction plotLe graphique produit par la fonction plot(x) dpend de la classe de lobjet x.> methods(plot) [1] "plot.data.frame" [3] "plot.density" [5] "plot.formula" [7] "plot.histogram" [9] "plot.mlm" [11] "plot.new" [13] "plot.POSIXlt" [15] "plot.ts" [17] "plot.xy" "plot.default" "plot.factor" "plot.function" "plot.lm" "plot.mts" "plot.POSIXct" "plot.table" "plot.window"Illustrationssur une fonction (par ex sin)1.0> plot(sin,xlim=c(-pi,pi))sur un tableausin (x)0.5> x=rpois(1000,1) > y=table(x) > y x 0 1 2 3 4 374 372 162 71 20 > plot(y)0.0-1.0-0.5-3-2-10 x1230100200y300012 x3456 120Histogram of r0.4density.default(x = r)FrequencyDensity>r=rnorm(100,1) > z=hist(r,plot=F) > plot(z) >w=density(r) >plot(w)Logiciel R Les graphiques 14 septembre 2011 53 / 131 Anne PHILIPPE (U. Nantes)10-101 r230.000.150.2sur un histogramme ou une densit150.3-2-101234N = 100 Bandwidth = 0.3564Anne PHILIPPE(U. Nantes)Logiciel R Les graphiques14 septembre 201154 / 131Reprsentation graphique dune matricecontour(x, y, matrice.... ) image( ) persp( )Maunga Whau VolcanoReprsentation dune fonction de R2x sales John Jack Peter 45 44 46 Reprsentation graphique pie(sales) barplot(sales)3020= table(N) 3 4 4 3Peter 05 6 7 8 9 10 11 12 13 14 15 16 17 7 16 15 25 18 23 18 25 9 6 9 4 2100510Jack15joursJohnJackPeterModication de laxe des ordonns pour amliorer la lisibilit du graphique :47Reprsentation de la distribution et comparaison avec la densit de la loi de Poisson de paramtre la moyenne empirique de lchantillon (points en rouge).J= 2:17 plot(table(N)/length(N),ylab="") points(J,dpois(J,mean(N)))0.12 0.00246table(N)/length(N)440.04barplot(sales,ylim=c(40,47),xpd=F)450.083456789 N1113151743JohnJackPeterAnne PHILIPPE(U. Nantes)Logiciel R14 septembre 201191 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201192 / 131Outils graphiques en statistiqueOutils graphiques en statistiqueRemarque sur la fonction barplot pour des variables quantitatives0.00 0.02 0.04 0.06 0.08 0.10 0.12Comparaison de deux variables quantitatives indpendantesOn compare le nombre dappels par mois de deux standardscomparaison des quantiles5 10 15 20 25>barplot(t/length(N))N22 5 8 12 1710246810121416Attention : Les labels des barres ne coincident pas avec la coordonne sur laxe des abscisses. Illustration : on veut ajouter sur graphique prcdent la densit de la loi de Poisson de paramtre gal la moyenne empirique de lchantillon (points en rouge), on obtientJ= 2:170.00 0.02 0.04 0.06 0.08 0.10 0.12GRAPHIQUE FAUX GRAPHIQUE CORRIG5nd d appels par jour12046810 12 14 16frquence15510 N15boxplot(N,N2,col=c("green","orange")) t=table(N2) xt = as.integer(names(t))+.3 plot(table(N ),col="green" ,lwd=2,xlab="",ylab="") lines(xt, t,col="orange" ,type="h",lwd=2) qqplot(N,N2) abline(0,1)frquence# GRAPHIQUE CORRIG br = barplot(table(N)/length(N)) points(br,dpois(J,mean(N))) Anne PHILIPPEfrquence# GRAPHIQUE FAUX barplot(table(N)/length(N)) points(J,dpois(J,mean(N)))0.00 0.02 0.04 0.06 0.08 0.10 0.12246810121416246810121416nd d appels par journd d appels par jourPour les variables alatoires continues, on compare les estimations de la densit : histogrammes, estimateur noyau.Anne PHILIPPE (U. Nantes) Logiciel R Outils graphiques en statistique 14 septembre 2011 94 / 131(U. Nantes) Logiciel R Outils graphiques en statistique14 septembre 201193 / 131Lien entre des variables qualitatives dpendantesDonnes : pour 122 tudiants, on dispose de la note obtenue cette anne (A+ ....F) et celle de lanne prcdenteprev grade B+ B+ AAB+ AF F F F A B A A C DAutres graphiques pour rsumer la table de contingence1 2 3 4 5 6 7 814A AB+ B BC+ C D F2014A AB+ B BC+ C D F1210158610425table(grades)A AB+ B B- C+ C D Fprev> table(grades) grade prev A AB+ A 15 3 1 A3 1 1 B+ 0 2 2 B 0 1 1 B0 1 0 C+ 1 1 0 C 1 0 0 D 0 0 0 F 1 0 0 > plot(table(grades))00B 4 0 1 4 2 0 1 1 1B0 0 2 3 0 0 1 0 1C+ 0 0 0 1 0 0 3 0 1C 3 0 0 3 1 1 5 4 3D 2 0 1 0 0 0 9 3 4F 0 0 1 2 0 0 7 1 11AB+BgradeCFAA-BBprevCF024681012AB+BprevCFgradeF D C C+ B B+ AB-A> barplot(tab,xlab="grade",legend.text=T , col=rainbow(10),beside=T) > barplot(t(tab),xlab="prev", col=rainbow(10)) > barplot(t(tab),xlab="prev",legend.text=T , col=rainbow(10),beside=T)Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201195 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 201196 / 131Outils graphiques en statistiqueOutils graphiques en statistiqueUtilisations des couleursDonnes : pour 150 enfants, on relve les informations suivantes : age / poids / taille /sexe> kid.weights age weight height gender 1 58 38 38 M 2 103 87 43 M 3 87 50 48 M 4 138 98 61 M 5 82 47 47 F20 60 100 140Utilisation des couleurs, de la taille et du type de marquesOn reprsente la taille en fonction du La couleur des points est dnie par la variable gender La taille des points est proportionnelle lage des individus.60heightheightPour visualiser le lien entre les variables : on utilise la fonction pairs sur les 3 premires colonnes. On peut ajouter en option la couleur des points dnies partir de la variable gender20 60 100 140poids. Le type de points est dnie par la variable gender Le dgrad de couleurs est dni partir de la variable age.60 5050150403080 12020404020ageage80 12030401060 100 14060 100 14020406080 weight100120140100 20 40 60 80 weight 100 120 1400weightweight205020height30 10height10 305000408012010305004080120103050plot(weight,height, cex =age/max(age)*2,col=as.integer(gender)) plot(weight,height, col = rainbow(150)[age],pch=as.integer(gender))Anne PHILIPPE (U. Nantes) Logiciel R 14 septembre 2011 Infrence statistique Estimation non paramtrique 98 / 131pairs(X[,1:3])Anne PHILIPPE (U. Nantes) Logiciel R Infrence statistiquepairs(X[,1:3],col=X[,4])14 septembre 2011 97 / 1317Infrence statistique Estimation non paramtrique Tests Rgression7Infrence statistique Estimation non paramtrique Tests RgressionAnne PHILIPPE(U. Nantes)Logiciel R14 septembre 201199 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 2011100 / 131Infrence statistiqueEstimation non paramtriqueInfrence statistiqueEstimation non paramtriquehistogramme : le choix du nombre de classes1000 Normal Random VariatesPrcision sur la fonction densitySoit X1 , , Xn n variables alatoires i.i.d. suivant la loi de densit f . La fonction density calcule lestimateur de f suivant0.40.4DensityDensity1On simule un chantillon suivant la loi gaussienne de taille 1000 On trace lhistogramme pour direntes valeurs du nombre de classes. On compare lhistogramme avec la densit thorique de loi gaussienne (courbe en rouge)1 fn (x) = n le choix du noyau kerngaussiann k=10.30.30.00.01 kern bwnx Xk bwn0.20.10.10.2-4-20 x24-4-20 x242epanechnikovrectangular1.01.00.80.80.40.4DensityDensity0.30.30.40.4Density1.0 0.0 0.5 1.030.60.6DensityDensity0.20.20.20.20.00.01.00.00.51.00.01.00.20.40.60.81.00.00.51.00.10.1triangularbiweightcosine1.01.00.00.00.80.8DensityDensity0.40.4Density1.0 0.0 0.5 1.0-4-20 x24-4-20 x240.60.60.20.20.00.01.00.00.51.00.01.00.20.40.60.81.00.00.51.0hist(x, nclass=*** ,proba=T) ou hist(x,proba = T) par dfaut le nombre de classes est optimis pour des chantillons gaussiensAnne PHILIPPE (U. Nantes) Logiciel R 14 septembre 2011 Infrence statistique Estimation non paramtrique 101 / 131la dimension de la fentre bw. Par dfaut le paramtre est optimis pour un chantillon gaussienAnne PHILIPPE (U. Nantes) Logiciel R 14 septembre 2011 Infrence statistique Estimation non paramtrique 102 / 131Illustration sur un mlange gaussienOn teste la fonction density sur des donnes simules 2 suivant un mlange de lois gaussiennes : f (x) = 1 1 1 (x5)2 3 1 1 (x+5)2 e 2 + e 2 4 2 4 2bandwidths = 0.1 bandwidths = 1Fonction de rpartition empirique (ecdf)La fonction de rpartition empirique est dnie par 1 Fn (t) = nn n p.s.1]t] (Xi ) F (t) i=1Cest un estimateur de la fonction de rpartition.1.010 5 N = 50 0 5 10 Bandwidth = 1same bandwidth, 6 different kernels0.40.10Density0.3Density0.20.080.10.050.100.15Density0.065 N = 5005Bandwidth = 0.10.000.04bandwidths = 2bandwidths = 3105 N = 500510105 N = 500510155 N = 50051015Bandwidth = 2.096Bandwidth = 2Bandwidth = 32. Simulation des donnes w=rbinom(50,1,1/4) sample = w*rnorm(50,5) +(1-w) * rnorm(50,-5)Anne PHILIPPE (U. Nantes) Logiciel R 14 septembre 2011 103 / 131 Anne PHILIPPE (U. Nantes)0.00.20.000.00> x= rnorm(100) >Fn=ecdf(x) >plot(Fn,col="green") > z=seq(min(x),max(x),0.01) > lines(z,pnorm(z), col=1,lwd=2)c(0:(n 1))/n0.080.060.08DensityDensity0.040.000.020.040.40.020.60.80.03210123Logiciel R14 septembre 2011104 / 131Infrence statistiqueEstimation non paramtriqueInfrence statistiqueTestsEstimation de la moyenne : comportement asymptotique.Soit X1 , . . . , Xn une suite de variables alatoires iid, si E |X1 | < alors Sn = 1 nnXi E (X1 )i=1evolution de Sn en fonction de n : cas gausien7n=5000 #loi gaussienne x=rnorm(n,0,1) y=cumsum(x)/(1:n) plot(y, type=l) # loi de Cauchy ou Student(1ddl) xc=rt(n,1) yc=cumsum(xc)/(1:n) plot(yc, type=l)Anne PHILIPPE (U. Nantes)y0.0 0.5 1.0 1.5Infrence statistique Estimation non paramtrique Tests Rgression010002000 Index300040005000evolution de Sn en fonction de n : cas cauchy0 1 2 3 4 -20yc10002000 Index300040005000Logiciel R Infrence statistique Tests14 septembre 2011105 / 131Anne PHILIPPE(U. Nantes)Logiciel R Infrence statistique Tests14 septembre 2011106 / 131Les fonctions pour les tests statistiques classiques :Exemple : Test de Student t.test()X1 , . . . , Xn iid N (1, 1) et Y1 , . . . , Ym iid E(1) Test H0 : E (X ) = E (Y ) vs H1 : E (X ) = E (Y )> x = rnorm(100,1,1) > y = rexp(200,1) > t.test(x,y) Welch Two Sample t-test data: x and y t = -0.2178, df = 178.446, p-value = 0.8278 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -0.2648092 0.2121608 sample estimates: mean of x : 0.9544127 mean of y : 0.9807369t.test(x,mu=5,alt="two.sided") t.test(x,y,alt="less", conf=.95)#studentvar.text(x,y) cor.test(x,y) chisq.test(x,y) Box.test(z, lag = 1)# comparaison variance # non correlation #indpendance #non correlationshapiro.test(x) ks.test(x,"pnorm") ks.test(x,y)#normalit #normalit K-S # mme distributionAnne PHILIPPE(U. Nantes)Logiciel R14 septembre 2011107 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 2011108 / 131Infrence statistiqueTestsInfrence statistiqueTestsTest dajustementOn construit un gnrateur de nombres alatoires suivant la loi normale en utilisant le Thorme Central Limite appliqu des variables alatoires iid suivant la loi uniforme sur (0, 1). Mthode de simulation non exacte .... U = 1, . . . , Un iid suivant la loi uniforme n 1 (Un ) X N(0, 1) 12 2 La gnrateur scritsimU lm(cars$dist~ cars$speed) Call: lm(formula = cars$dist ~ cars$speed)120 100Visualisation : plot.lmResiduals vs Leverage Residuals vs Fitted30.54023492349Standardized residuals2351Residuals -1 0 -239Cook's distance 0.00 0.02 0.04 0.06 0.08 0.10 0 20 40 Fitted values lm(cars$dist ~ cars$speed) 60 80Leverage lm(cars$dist ~ cars$speed)Normal Q-Q-20020Scale-Location23 4931.5234935235Standardized residualsStandardized residuals-2 -1 0 Theoretical Quantiles lm(cars$dist ~ cars$speed) 1 2> plot(cars$speed,cars$dist) > abline(reg, col=3,lwd = 2 )2040Coefficients: (Intercept) cars$speed -17.579 3.9328001cars$dist60-1-20.00.51.002040 Fitted values lm(cars$dist ~ cars$speed)608051015 cars$speed2025Remarque : Si les donnes sont disponibles sous la forme dune liste on peut utiliser la syntaxe> fit = lm(dist ~ speed, cars)Anne PHILIPPE(U. Nantes)Logiciel R Infrence statistique Rgression014 septembre 2011113 / 131Anne PHILIPPE(U. Nantes)Logiciel R Infrence statistique Rgression14 septembre 2011114 / 131ExtensionRgression non paramtrique>data(cars) >attach(cars) >plot(speed, dist) >lines(ksmooth(speed, dist, "normal", bandwidth=2), col=2) >lines(ksmooth(speed, dist, "normal", bandwidth=5), col=3) >lines(ksmooth(speed, dist, "normal", bandwidth=10), col=4)Rgression multiple lm(v v1 + v2 + v3) Rgression linaire gnralise glm etc Mthodes non paramtriques0 20 40 60 80 100 120dist51015 speed2025Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 2011115 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 2011116 / 131Infrence statistiqueRgressionSries ChronologiquesPolynmes Locaux1001208Sries Chronologiques>data(cars) >cars.lo = loess(dist ~ speed, cars) >p = predict(cars.lo) >plot(cars) >lines(seq(5, 30, 1),p$fit,col=3)5 10 15 speed 20 25dist020406080Anne PHILIPPE(U. Nantes)Logiciel R Sries Chronologiques14 septembre 2011117 / 131Anne PHILIPPE(U. Nantes)Logiciel R Sries Chronologiques14 septembre 2011118 / 131Exemple> > data(USAccDeaths) USAccDeathsJan 9007 7750 8162 7717 7792 7836 Feb 8106 6981 7306 7461 6957 6892 Mar 8928 8038 8124 7767 7726 7791 Apr May Jun Jul Aug 9137 10017 10826 11317 10744 8422 8714 9512 10120 9823 7870 9387 9556 10093 9620 7925 8623 8945 10078 9179 8106 8890 9299 10625 9302 8192 9115 9434 10484 9827 Sep 9713 8743 8285 8037 8314 9110 Oct 9938 9129 8466 8488 8850 9070 Nov 9161 8710 8160 7874 8265 8633 Dec 8927 8680 8034 8647 8796 9240Lobjet srie chronologique est une liste qui contient les valeurs observes, la frquence des observations, la date de la premire observation la date de la dernire, etc...1973 1974 1975 1976 1977 1978>plot(USAccDeaths)7000 8000 9000 10000 110001973USAccDeaths197419751976 Time197719781979Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 2011119 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 2011120 / 131Sries ChronologiquesSries ChronologiquesPour crer une srie chronologique, on utilise la fonction ts>bruit.blanc=ts(rnorm(100), frequency = 1, start = c(1), end=c(100)) >plot(bruit.blanc) >acf(bruit.blanc, type="correlation") #ou type="covariance" ou type="partial"Series Bruit.BlancFiltre Premier exemple de ltre : (I Lp )d , on utilise la fonction diff>diff(x,lag=p,differences=d) La fonction filter permet d appliquer des ltres linaires :y=filter(x,sides= 1, method = convolution ,filter=c(2,3)) # y[i] = 2*x[i] + 3*x[i-1] y=filter(x,sides= 2, method = convolution ,filter=c(2,3,4)) # y[i] = 2*x[i-1] + 3*x[i] +4]*x[i+1] y=filter(x,method =recurcive ,filter=c(2,3)) #y[i] = x[i] + 2*y[i-1] + 3*y[i-2]21Bruit.Blanc0ACF-20.00.2-10.40.60.81.00204060801000510 Lag1520Ces fonctions permettent en particulier de crer un gnrateur de processus ARMA.TimeAnne PHILIPPE(U. Nantes)Logiciel R Sries Chronologiques-0.214 septembre 2011121 / 131Anne PHILIPPE(U. Nantes)Logiciel R Sries Chronologiques14 septembre 2011122 / 131tude prliminaire de la srie USAccDeathsperiodogram = function(traj) { n = length(traj) freq = 1:(n %/% 2)/(n) periodogram = Mod(fft(traj))[2:(n %/% 2 + 1)]^ 2/(2 * pi * n) plot(freq, periodogram, type = "l") }Series USAccDeaths Series USAccDeathsmodlisation et prvision ARLa fonction ar permet destimer les paramtres dun modle AR Ap (L)X [t] = e[t] Si lordre p nest pas prcis, le meilleur modle AR pour le critre AIC est slectionn.>data(lh) >ar(lh) Call:ar(x = lh) Coefficients: 1 2 0.6534 -0.0636 Order selected 30.2 0.6 1.00.40.4 0.0 0.4Partial ACFACF>acf(USAccDeaths) >pacf(USAccDeaths) >periodogram(USAccDeaths)periodogram 15000000.00.5 Lag1.01.50.20.6 Lag1.01.43 -0.2269 sigma^2 estimated as0.195900.00.10.20.30.40.5Anne PHILIPPE(U. Nantes)Logiciel Rfreq14 septembre 2011123 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 2011124 / 131Sries ChronologiquesSries ChronologiquesAutour des modles ARMA>ar(lh, aic = FALSE, order.max = 4) # on fixe p=4 Call: ar(x = lh, aic = FALSE, order.max = 4) Coefficients: 1 2 3 4 0.6767 -0.0571 -0.2941 0.1028 Order selected 4 sigma^2 estimated as 0.1983ARMAacf pour le calcul des covariances thorique dun modle ARMA ARMAtoMA pour le dveloppement en MA innie dun modle ARMA arima.sim pour simuler des trajectoires dun modle ARMA ou ARIMAATTENTION x doit tre une srie chronologique (x=ts(x))Anne PHILIPPE(U. Nantes)Logiciel R Sries Chronologiques14 septembre 2011125 / 131Anne PHILIPPE(U. Nantes)Logiciel R Sries Chronologiques14 septembre 2011126 / 131Modle ARMA : Estimationmodlisation et prvision SARIMAPlus gnralement, la fonction arima permet destimer les paramtres dun modle SARIMA La fonction ar permet destimer les paramtres dun processus AR. Pour les modles ARMA dordre (p,q) X [t] = a[1]X [t 1]+...+a[p]X [t p]+e[t]+b[1]e[t 1]+...+b[q]e[t q] on utilise la fonction arima, la syntaxe est out=arima(x,order=c(p,0,q)) la sortie out est une liste contenant : out$coef : estimation des coecients, out$resid : estimation des rsidus e[t] ATTENTION x doit tre une srie chronologique (x=ts(x))Ap (L)P (Ls )Y [t] = Q (Ls )Bq (L)e[t] avec Y [t] = (I L)d (I Ls )D X [t] la syntaxe est la suivante :out=arima(x,order=c(p,d,q), seasonal=list(order=c(P,D,Q),period=s))la sortie est une liste contenant : out$coef : estimation des coecients, out$aic : critre AIC, out$resid : estimation des rsidus e[t] option : include.mean=F ou T Exemple :data(USAccDeaths) a = c(USAccDeaths) USAcc= ts(a[1:60],frequency=12,start=c(1973,1))Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 2011127 / 131fit =PHILIPPE (U. Nantes) Anne arima(USAcc, order=c(0,1,1), seasonal=list(order=c(0,1,1))) Logiciel R 14 septembre 2011128 / 131Sries ChronologiquesSries ChronologiquesPrvision pour des modles SARIMAPour prvoir lhorizon h, on utilise la fonction predict>out=arima0(...) > p=predict(out,h) p$pred #contient les prvisions p$se #erreurs de prvision ( cart type )Plus gnralement : la fonction predict7000p = predict(fit, n.ahead=12) plot(USAccDeaths, col="orange") lines(p$pred,col="red3") lines(p$pred+1.96*p$se, col="blue2") lines(p$pred-1.96*p$se, col="blue2")USAccDeaths800090001000011000Exemple :> methods(predict) [1] "predict.ar" [3] "predict.loess" [5] "predict.smooth.spline" [7] "predict.glm" [9] "predict.mlm""predict.arima" "predict.ppr" "predict.smooth.spline.fit" "predict.lm"1973197419751976 Time197719781979Anne PHILIPPE(U. Nantes)Logiciel R Sries Chronologiques14 septembre 2011129 / 131Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 2011130 / 131Lissage exponentielLa mthode de lissage de Holt & Winter est disponible sous R. Les fonctions sappelle HoltWinters et predict.HoltWinters. Exemple : sur la srie data(co2)data(co2) m = HoltWinters(co2) p = predict(m, 50, prediction.interval = TRUE) plot(m, p) #lissage # previsionHoltWinters filteringle lissage simple si lon impose les coecients.3201960330340des modles multiplicatifsObserved / Fitted350cette fonction peut aussi tre utilise pour36037019701980 Time19902000Anne PHILIPPE(U. Nantes)Logiciel R14 septembre 2011131 / 131