Anne Philippe Cours R Par4

Embed Size (px)

Citation preview

Plan

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

1

2 3 4

13 octobre 2010

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

13 octobre 2010

1 / 128

Anne PHILIPPE

(U. Nantes)

Logiciel R

13 octobre 2010

2 / 128

Installation

DocumentationsDocuments sur le logiciel R : www.math.sciences.univ-nantes.fr/ philippe/R.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 13 octobre 2010 3 / 128

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 Examples

Anne PHILIPPE

(U. Nantes)

Logiciel R

13 octobre 2010

4 / 128

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

13 octobre 2010

5 / 128

Anne PHILIPPE

(U. Nantes)

Logiciel R

13 octobre 2010

6 / 128

Utiliser laide

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

> help("plot") > ?plot > help.search("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 13 octobre 2010 7 / 128

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 13 octobre 2010 8 / 128

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

13 octobre 2010

9 / 128

Anne PHILIPPE

(U. Nantes)

Logiciel R Objets et Oprations

13 octobre 2010

10 / 128

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

13 octobre 2010

11 / 128

Anne PHILIPPE

(U. Nantes)

Logiciel R

13 octobre 2010

12 / 128

Objets et Oprations

Objets et Oprations

Vecteurs et matrices

Fonctions is/as

is.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

Objets et Oprations Vecteurs et matrices Dataframes Listes

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

Anne PHILIPPE

(U. Nantes)

Logiciel R Objets et Oprations Vecteurs et matrices

13 octobre 2010

13 / 128

Anne PHILIPPE

(U. Nantes)

Logiciel R Objets et Oprations Vecteurs et matrices

13 octobre 2010

14 / 128

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 R13 octobre 201015 / 128Anne PHILIPPE(U. Nantes)Logiciel R13 octobre 201016 / 128Objets 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 matrices13 octobre 201017 / 128Anne PHILIPPE(U. Nantes)Logiciel R Objets et Oprations Vecteurs et matrices13 octobre 201018 / 128Quelques 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 R13 octobre 201019 / 12813 octobre 201020 / 128Objets 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 13 octobre 2010 21 / 128 Anne PHILIPPE (U. Nantes) Logiciel R Objets et Oprations Vecteurs et matrices 13 octobre 2010 22 / 128(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 R13 octobre 201023 / 128Anne PHILIPPE(U. Nantes)Logiciel R13 octobre 201024 / 128Objets 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 13 octobre 2010 25 / 128fun peut aussi tre une opration lmentaire +/-*Anne PHILIPPE (U. Nantes) Logiciel R Objets et Oprations Vecteurs et matrices 13 octobre 2010 26 / 128Quelques 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 13 octobre 2010 27 / 128Objets 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 matrices13 octobre 201029 / 128Anne PHILIPPE(U. Nantes)Logiciel R Objets et Oprations Dataframes13 octobre 201030 / 128Ces 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 R13 octobre 201031 / 128Anne PHILIPPE(U. Nantes)Logiciel R13 octobre 201032 / 128Objets 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 13 octobre 2010 33 / 128> 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 Listes13 octobre 201034 / 128Oprations 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 R13 octobre 201035 / 128Anne PHILIPPE(U. Nantes)Logiciel R13 octobre 201036 / 128Objets 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 13 octobre 2010 37 / 128attention 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 13 octobre 2010 38 / 128Importer/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 R13 octobre 201039 / 128Anne PHILIPPE(U. Nantes)Logiciel R13 octobre 201040 / 128Les fonctionsLes fonctionsStructure gnrale pour crer des fonctionsLa structure gnrale dune fonction est2Les fonctions>FUN=function(liste_des_paramtres) { commandes objets_retourns }Les accolades { et } dnissent le dbut et la n de la fonction. La dernire instruction contient le ou les objets retourns par la fonction. Excuter la fonction : FUN(...)Anne PHILIPPE(U. Nantes)Logiciel R Les fonctions13 octobre 201041 / 128Anne PHILIPPE(U. Nantes)Logiciel R Les fonctions13 octobre 201042 / 128ExempleLa 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=(uPF = function(n ,proba.pile=1/2) { u=runif(n) #nb alatoire suivant Unif(0,1) pf=(ures = PF(5,1/2) >res $pile.face [1] TRUE TRUE TRUE $size [1] 5 $freq.pile [1] 0.6FALSE FALSELes commandes>PF(10) OU PF(10,1/2)Transformer la sortie en type factorpf= factor(pf,levels=c(T,F),labels = c(pile,face)) [1] pile pile pile face face Levels: pile faceAnne PHILIPPE (U. Nantes) Logiciel R 13 octobre 2010 43 / 128retournent le mme rsultatAnne PHILIPPE (U. Nantes) Logiciel R 13 octobre 2010 44 / 128Les fonctionsLes graphiquesParamtres dentreIl y a trois faons de spcier les paramtres dentre dune fonction par la position : les paramtres dentre sont aects aux premiers arguments de la fonction. PF(3,1/2) : les paramtres dentre sont n=3 et proba.pile=1/2 par le nom : il sagit du moyen le plus sr, les noms des arguments sont prciss de manire explicite. On peut alors crire PF(proba.pile=1/2 ,n=3), lordre nest plus prioritaire avec des valeurs par dfaut : ces valeurs par dfaut seront utilises si les paramtres dentre ne sont pas spcis. On peut alors crire PF(3) ou PF(n=3) : les paramtres dentre sont n=3 et la valeur par dfaut pour proba.pile cest dire 1/2.3Les graphiquesAnne PHILIPPE(U. Nantes)Logiciel R Les graphiques13 octobre 201045 / 128Anne PHILIPPE(U. Nantes)Logiciel R Les graphiques13 octobre 201046 / 128Les 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 R13 octobre 201047 / 128Anne PHILIPPE(U. Nantes)Logiciel R13 octobre 201048 / 128Les graphiquesLes graphiquesSuperposition 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 R Les graphiques13 octobre 201049 / 128-3 -1 Anne PHILIPPE -2 (U. Nantes)-1.00 x1 2 Logiciel R Les graphiques313 octobre 201050 / 128Autour 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 13 octobre 2010 51 / 128 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 R13 octobre 201052 / 128Les graphiquesLes graphiquesReprsentation graphique dune matricecontour(x, y, matrice.... ) image( ) persp( )Maunga Whau VolcanoReprsentation dune fonction de R2x 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))B 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 11Pour les variables alatoires continues, on compare les estimations de la densit : histogrammes, estimateur noyau.Anne PHILIPPE (U. Nantes) Logiciel R 13 octobre 2010 91 / 128 Anne PHILIPPE (U. Nantes) Logiciel R 13 octobre 2010 92 / 128gradeAOutils graphiques en statistiqueOutils graphiques en statistiqueAutres graphiques pour rsumer la table de contingenceUtilisations des couleursDonnes : pour 150 enfants, on relve les informations suivantes : age / poids / taille /sexe14A AB+ B BC+ C D F2014A AB+ B BC+ C D FAB+BgradeCFAA-BBprevCFAB+BprevCF> 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 140Pour 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 14012101586104250002468101280 120ageage40060 100 14050height30 10height100 40 80 120 10 30 5004080120103050pairs(X[,1:3])Anne PHILIPPE (U. Nantes) Logiciel R Outils graphiques en statistique 13 octobre 2010 93 / 128 Anne PHILIPPE (U. Nantes) Logiciel R Infrence statistiquepairs(X[,1:3],col=X[,4])13 octobre 2010 94 / 128Utilisation 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.60poids. Le type de points est dnie par la variable gender Le dgrad de couleurs est dni partir de la variable age.607Infrence statistique Estimation non paramtrique Tests Rgression5050150heightheight4030202030401020406080 weight100120140100 20 40 60 80 weight 100 120 140plot(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 13 octobre 2010 95 / 128 Anne PHILIPPE (U. Nantes) Logiciel R 13 octobre 2010 96 / 1283050> 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)weight60 100 140weight202004080 120Infrence statistiqueEstimation non paramtriqueInfrence statistiqueEstimation non paramtriquehistogramme : le choix du nombre de classes1000 Normal Random Variates0.4DensityDensity7Infrence statistique Estimation non paramtrique Tests Rgression0.30.30.41On 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)0.20.10.00.00.10.2-4-20 x24-4-20 x2420.40.40.3DensityDensity0.20.10.0-4-20 x240.00.10.20.33-4-20 x24hist(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 13 octobre 2010 Infrence statistique Estimation non paramtrique 97 / 128 Anne PHILIPPE (U. Nantes) Logiciel R 13 octobre 2010 Infrence statistique Estimation non paramtrique 98 / 128Prcision 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 suivant 1 fn (x) = n le choix du noyau kerngaussian epanechnikov rectangularIllustration 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 = 1n k=11 kern bwnx Xk bwnsame bandwidth, 6 different kernels0.40.10Density0.3Density5 N = 50 0 51.01.01.00.80.80.80.20.080.60.6DensityDensityDensity0.60.10.20.20.20.00100.00.40.40.40.050.100.15Density0.065 N = 5005100.00.00.0Bandwidth = 0.1Bandwidth = 11.00.00.51.01.00.00.51.01.00.00.51.00.04triangularbiweightcosinebandwidths = 2bandwidths = 31.01.01.00.80.80.8DensityDensityDensity0.020.40.40.4Density0.08Density10 5 N = 50 0 5 100.20.20.20.00.00.00.041.00.00.51.01.00.00.51.01.00.00.51.00.000.00105 N = 5005100.00150.020.040.060.60.60.60.08la dimension de la fentre bw. Par dfaut le paramtre est optimis pour un chantillon gaussienAnne PHILIPPE (U. Nantes) Logiciel R 13 octobre 2010 99 / 1285 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 13 octobre 2010 100 / 128Infrence statistiqueEstimation non paramtriqueInfrence statistiqueEstimation non paramtriqueFonction de rpartition empirique (ecdf)La fonction de rpartition empirique est dnie par 1 Fn (t) = nn n p.s.Estimation de la moyenne : comportement asymptotique.Soit X1 , . . . , Xn une suite de variables alatoires iid, si E |X1 | < alors Sn = 1 nn1]t] (Xi ) F (t) i=1Xi E (X1 )i=1evolution de Sn en fonction de n : cas gausienCest un estimateur de la fonction de rpartition.1.0n=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)3 2 1 0 sort(x) 1 2 3y0.80.0 0.5 1.0 1.5010002000 Index3000400050000.20.0-20 1 2 3 4> 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.6evolution de Sn en fonction de n : cas cauchy0.4yc010002000 Index300040005000Anne PHILIPPE(U. Nantes)Logiciel R Infrence statistique Tests13 octobre 2010101 / 128Anne PHILIPPE(U. Nantes)Logiciel R Infrence statistique Tests13 octobre 2010102 / 128Les fonctions pour les tests statistiques classiques :7Infrence statistique Estimation non paramtrique Tests Rgressiont.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 R13 octobre 2010103 / 128Anne PHILIPPE(U. Nantes)Logiciel R13 octobre 2010104 / 128Infrence statistiqueTestsInfrence statistiqueTestsExemple : 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.9807369Test 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) Coefficients: (Intercept) cars$speed -17.579 3.932 > plot(cars$speed,cars$dist) > abline(reg, col=3,lwd = 2 )80 cars$dist 0 20 40 60 100 12051015 cars$speed2025Anne PHILIPPE(U. Nantes)Logiciel R Infrence statistique Rgression13 octobre 2010109 / 128Anne PHILIPPE(U. Nantes)Logiciel R Infrence statistique Rgression13 octobre 2010110 / 128Visualisation : plot.lmResiduals vs Leverage Residuals vs FittedExtension49 0.5340232349Standardized residuals2351Residuals -1 0-20020-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 80Rgression multiple lm(v v1 + v2 + v3) Rgression linaire gnralise glm etc Mthodes non paramtriquesLeverage lm(cars$dist ~ cars$speed)Normal Q-QScale-Location23 4931.5234935235Standardized residualsStandardized residuals-2 -1 0 Theoretical Quantiles lm(cars$dist ~ cars$speed) 1 201-1-20.00.51.002040 Fitted values lm(cars$dist ~ cars$speed)6080Remarque : 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 13 octobre 2010 111 / 128 Anne PHILIPPE (U. Nantes) Logiciel R 13 octobre 2010 112 / 128Infrence statistiqueRgressionInfrence statistiqueRgressionRgression 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)Polynmes Locaux1001200 20 40 60 80 100 120>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 25distdist51015 speed2025Anne PHILIPPE(U. Nantes)Logiciel R Sries Chronologiques13 octobre 2010113 / 128Anne PHILIPPE020406080(U. Nantes)Logiciel R Sries Chronologiques13 octobre 2010114 / 1288Sries ChronologiquesLobjet 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...Anne PHILIPPE(U. Nantes)Logiciel R13 octobre 2010115 / 128Anne PHILIPPE(U. Nantes)Logiciel R13 octobre 2010116 / 128Sries ChronologiquesSries ChronologiquesExemple> >1973 1974 1975 1976 1977 1978Pour 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"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 9240Series Bruit.Blancdata(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 982721Bruit.Blanc>plot(USAccDeaths)0ACF0 20 40 60 80 1007000 8000 9000 10000 11000USAccDeaths-2-0.200.00.2-10.40.60.81.0510 Lag1520Time1973197419751976 Time197719781979Anne PHILIPPE(U. Nantes)Logiciel R Sries Chronologiques13 octobre 2010117 / 128Anne PHILIPPE(U. Nantes)Logiciel R Sries Chronologiques13 octobre 2010118 / 128Filtre Premier exemple de ltre : (I Lp )d , on utilise la fonction diff>diff(x,lag=p,differences=d)tude 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 USAccDeaths 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]0.2 0.6 1.0Ces fonctions permettent en particulier de crer un gnrateur de processus ARMA.>acf(USAccDeaths) >pacf(USAccDeaths) >periodogram(USAccDeaths)periodogram 15000000.40.00.5 Lag1.01.50.4 0.0 0.40.2Partial ACFACF0.6 Lag1.01.400.00.10.20.30.40.5Anne PHILIPPE(U. Nantes)Logiciel R13 octobre 2010119 / 128Anne PHILIPPE(U. Nantes)Logiciel Rfreq13 octobre 2010120 / 128Sries ChronologiquesSries Chronologiquesmodlisation 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 3>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.1983ATTENTION x doit tre une srie chronologique (x=ts(x))3 -0.2269 sigma^2 estimated as 0.1959Anne PHILIPPE(U. Nantes)Logiciel R Sries Chronologiques13 octobre 2010121 / 128Anne PHILIPPE(U. Nantes)Logiciel R Sries Chronologiques13 octobre 2010122 / 128Autour des modles ARMAModle ARMA : Estimation La fonction ar permet destimer les paramtres dun processus AR. Pour les modles ARMA dordre (p,q) ARMAacf 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 ARIMA 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))Anne PHILIPPE(U. Nantes)Logiciel R13 octobre 2010123 / 128Anne PHILIPPE(U. Nantes)Logiciel R13 octobre 2010124 / 128Sries ChronologiquesSries Chronologiquesmodlisation et prvision SARIMAPlus gnralement, la fonction arima permet destimer les paramtres dun modle SARIMA 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))Prvision 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 )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)) fit =PHILIPPE (U. Nantes) Anne arima(USAcc, order=c(0,1,1), seasonal=list(order=c(0,1,1))) Logiciel R 13 octobre 2010 Sries Chronologiques Call: arima(x = USAcc, order = c(0, 1, 1), Plus gnralement : la fonction predict = c(0,1, 1))) seasonal = list(order Coefficients: ma1 sma1 -0.4343 -0.4419 Approx standard errors: ma1 sma1 0.1368 0.0122 sigma^2 estimated 114276: log likelihood = -341.73, aic = 687.46 > methods(predict) [1] "predict.ar" "predict.arima" [3] "predict.loess" "predict.ppr" [5] "predict.smooth.spline" "predict.smooth.spline.fit" [7] "predict.glm" "predict.lm" [9] "predict.mlm"125 / 12870001973p = 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 :197419751976 Time197719781979Anne PHILIPPE(U. Nantes)Logiciel R Sries Chronologiques13 octobre 2010126 / 128Lissage 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 R13 octobre 2010127 / 128Anne PHILIPPE(U. Nantes)Logiciel R13 octobre 2010128 / 128