Cours 2
Transcription
Cours 2
Dataframe Statistiques descriptives Lois de probabilité et simulation INTRODUCTION AU LOGICIEL R 2. Statistiques descriptives, lois de probabilité. Anne Dubois, Julie Bertrand, Emmanuelle Comets [email protected] INSERM UMR738 E. Comets (UMR738) Introduction à R - Novembre 2009 1 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Plan Dataframe Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Statistiques descriptives Moyenne et variance Corrélation et covariance Quantiles Exercice Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques E. Comets (UMR738) Introduction à R - Novembre 2009 2 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Remise en jambe (1) 1 2 À l’aide des fonctions rep, seq et c seulement, générer les séquences suivantes : a) 0 6 0 6 0 6 b) 1 4 7 10 c) 1 2 3 1 2 3 1 2 3 1 2 3 d) 1 2 2 3 3 3 e) 1 1 1 2 2 3 f) 1 5.5 10 g) 1 1 1 1 2 2 2 2 3 3 3 3 Générer les suites de nombres suivantes à l’aide des fonctions : et rep seulement, donc sans utiliser la fonction seq : a) 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 b) 1 3 5 7 9 11 13 15 17 19 c) -2 -1 0 1 2 -2 -1 0 1 2 d) -2 -2 -1 -1 0 0 1 1 2 2 e) 10 20 30 40 50 60 70 80 90 100 E. Comets (UMR738) Introduction à R - Novembre 2009 3 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Remise en jambe (2) 3 Reprendre la séquence (d) précédente remplacer toutes les valeurs négatives par NA compter le nombre de valeurs NA remplacer les valeurs négatives par -10 E. Comets (UMR738) Introduction à R - Novembre 2009 4 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Remise en jambe (3) 4 Soit la matrice : x<-matrix(1:120,ncol=12) Affichez toutes les lignes de la matrice commençant par un nombre pair Affichez toutes les lignes de la matrice dont la moyenne est inférieure à 60 Affichez toutes les colonnes de la matrice dont la somme est inférieure à 500 Sélectionnez la sous-matrice formée des lignes de la matrice dont la moyenne est inférieure à 60 et des colonnes dont la somme est inférieure à 500 Sélectionnez la même sous-matrice, sauf la troisième ligne Bien sûr, une seule ligne est nécessaire à chaque fois pour effectuer ces opérations... E. Comets (UMR738) Introduction à R - Novembre 2009 5 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Plan Dataframe Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Statistiques descriptives Moyenne et variance Corrélation et covariance Quantiles Exercice Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques E. Comets (UMR738) Introduction à R - Novembre 2009 6 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Les dataframes format de jeu de données structuré un jeu de données réelles a naturellement le format d’un dataframe nombreux jeux de données structurés disponibles sous R Exemple : jeu de données pressure sur la relation entre la température en degrés et la pression en millimètres de mercure : > pressure temperature pressure 1 0 0.0002 2 20 0.0012 ... 19 360 806.0000 E. Comets (UMR738) Introduction à R - Novembre 2009 7 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Manipulation d’un dataframe Pour récupérer une variable on utilise le caractère $ : > pressure$temperature [1] 0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 On peut aussi référencer la colonne comme pour une matrice: > pressure[,1] Ou encore les appeler par le nom de la colonne : > pressure[,"temperature"] Les 2 premiers éléments de temperature s’écriront indifféremment : > pressure$temperature[1:2] > pressure[1:2,1] > pressure[1:2,"temperature"] E. Comets (UMR738) Introduction à R - Novembre 2009 8 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Attacher un jeu de données On peut aussi "attacher" le jeu de données pour avoir un accès direct aux variables : > attach(pressure) > temperature [1] 0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 Attention : on peut modifier le vecteur temperature mais ça ne change rien au dataframe test. C’est comme si on avait une copie des variables. Par contre si on travaille sur test$temperature on modifie bien test. Pour "détacher" le dataframe, on utilise : detach(test) E. Comets (UMR738) Introduction à R - Novembre 2009 9 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Ecriture de fichiers pressure est disponible sous R dans la librairie datasets. Pour sauver le jeu de données dans un fichier essai.dat : > write.table(pressure,"essai.dat",row.names=F) L’option row.names=F est nécessaire pour éviter d’écrire un numéro au début de chaque ligne. La fonction sink permet de rediriger la sortie (normalement à l’écran) vers un fichier : > sink("essai.dat") > print(pressure) > sink() Elle donne ici un résultat similaire à : > write.table(pressure,"essai.dat") E. Comets (UMR738) Introduction à R - Novembre 2009 10 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Lecture de fichiers (1) Pour lire le dataframe test à partir du fichier essai.dat : > test <- read.table("essai.dat",header=T) La table contient un en-tête (header) avec le nom des variables (les colonnes). Ces fonctions lisent des formats bien tabulés sans trous. Des options existent pour spécifier le séparateur de champs, le nombre de lignes lues, le nombre de lignes à sauter avant de commencer la lecture, ... E. Comets (UMR738) Introduction à R - Novembre 2009 11 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Lecture de fichiers (2) Fonction la plus générale pour la lecture de fichiers : scan > > > > namcol<-scan("essai.dat",nlines=1,what="char") test <- scan("essai.dat",skip=1) test<-matrix(test,ncol=4,byrow=T,dimnames=list(c(),namcol)) test temperature pressure 1 0 0.0002 ... 19 360 806.0000 Nécessite de spécifier le type (si différent de "numeric"). Permet de lire certaines lignes seulement d’un fichier. Permet de gérer des fichiers de structure particulière (ex : "parser" un fichier texte). E. Comets (UMR738) Introduction à R - Novembre 2009 12 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Lecture au clavier scan peut aussi être utilisé pour la lecture au clavier (input). Au lieu d’un nom de fichier, on utilise "" : > x<-scan("",nlines=2) 1: 2 2: 3.2 Read 2 items > x [1] 2 3.2 Par défaut, la fonction attend un nombre, mais le type de données attendu peut être modifié : > noms<-scan("",nlines=2,what=character()) 1: Paul 2: Pierre Read 2 items > noms [1] "Paul" "Pierre" E. Comets (UMR738) Introduction à R - Novembre 2009 13 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Extraction d’une sous-base On utilise la base airquality, disponible dans R. Si l’on veut extraire la sous-base pour laquelle la température est > 92 ◦F : > air1 <- subset(airquality, Temp > 92) > air1 Ozone Solar.R Wind Temp Month Day 42 NA 259 10.9 93 6 11 120 76 203 9.7 97 8 28 .. 127 91 189 4.6 93 9 4 On peut également utiliser : > air1<-airquality[airquality$Temp>92,] E. Comets (UMR738) Introduction à R - Novembre 2009 14 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Transformation de données (1) Pour ajouter dans air1 la variable logTemp, log de la température, on a également plusieurs choix : >air1<-transform(air1,logTemp=log(Temp)) > air1 Ozone Solar.R Wind Temp Month Day logTemp 42 NA 259 10.9 93 6 11 4.532599 ... 126 73 183 2.8 93 9 3 4.532599 127 91 189 4.6 93 9 4 4.532599 ou : >air1$logTemp<-log(air1$Temp) ou encore: >air1<-cbind(air1,logTemp=log(air1$Temp)) E. Comets (UMR738) Introduction à R - Novembre 2009 15 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Transformation de données (2) On peut créer une variable indicatrice à l’aide de la fonction ifelse. On souhaite par exemple créer la variable ftemp qui vaut 1 si Temp > 94 ◦ F, 0 sinon : > air1<-transform(air1,ftemp=ifelse(Temp>94,1,0)) > air1 Ozone Solar.R Wind Temp Month Day ftemp 42 NA 259 10.9 93 6 11 0 120 76 203 9.7 97 8 28 1 ... 127 91 189 4.6 93 9 4 0 ou encore : > air1$ftemp<-ifelse(air1$Temp>94,1,0) E. Comets (UMR738) Introduction à R - Novembre 2009 16 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Extraction de données : exercice Créer à partir de air1 le dataframe air2, où : 1) la variable Ozone n’est pas manquante 2) la température est ≤ 94◦ F Créer à partir de airquality le dataframe air3, où la variable Ozone n’est pas manquante. Ajouter une colonne à air3 représentant une variable valant 1 si : 1) on est dans les 6 premiers mois de l’année 2) la température est supérieure à 80◦ F et 0 sinon. E. Comets (UMR738) Introduction à R - Novembre 2009 17 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Ordonner selon une variable Pour effectuer l’équivalent de la Proc sort de SAS, on utilise la fonction order. Pour ordonner air1 selon la valeur de Temp : > air1[order(air1$Temp),] Ozone Solar.R Wind Temp Month Day ftemp 42 NA 259 10.9 93 6 11 0 126 73 183 2.8 93 9 3 0 ... 120 76 203 9.7 97 8 28 1 On peut trier sur plusieurs variables : > air1[order(air1$Month,air1$Day),] Ozone Solar.R Wind Temp Month Day 42 NA 259 10.9 93 6 11 120 76 203 9.7 97 8 28 ... 127 91 189 4.6 93 9 4 E. Comets (UMR738) Introduction à R - Novembre 2009 18 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri La fonction match match teste si un élément est présent dans un vecteur. > month.name [1] "January" "February" "March" "April" > match(c("Mai","May"),month.name,nomatch=0) [1] 0 5 "May" ... Application : rajouter une colonne avec le nom du mois à air1 > NamMon<-month.name[match(air1$Month,1:12)] > transform(air1,NamMon=NamMon) Ozone Solar.R Wind Temp Month Day NamMon 42 NA 259 10.9 93 6 11 June 120 76 203 9.7 97 8 28 August ... 127 91 189 4.6 93 9 4 September Outil très puissant pour manipuler plusieurs bases de données avec un identifiant commun (ex : le numéro d’identification du patient). E. Comets (UMR738) Introduction à R - Novembre 2009 19 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Exercice On vous donne un relevé des profondeurs de glace relevées dans une station météo avec les dates correspondantes : dates<-c("1971-01-20","1971-01-28","1971-02-03", "1971-02-11","1971-02-18","1973-01-17","1973-01-25", "1973-01-31","1973-02-17","1974-01-07","1974-01-10", "1974-01-15","1974-01-22","1974-01-29","1974-02-05", "1974-02-12","1974-02-19") mesure<-c(64,69,71,71,71,32,42,28,32,18,25,29,34,36,42, 50,61) Extraire de ce vecteur la première incidence de chaque profondeur mesurée, en utilisant la fonction match. Trier les mesures de glace dans l’ordre croissant et créer une matrice avec comme première colonne les mesures triées et comme deuxième colonne les dates correspondantes (nécessite un tri simultané!) E. Comets (UMR738) Introduction à R - Novembre 2009 20 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Plan Dataframe Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Statistiques descriptives Moyenne et variance Corrélation et covariance Quantiles Exercice Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques E. Comets (UMR738) Introduction à R - Novembre 2009 21 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Moyenne et médiane Moyenne : fonction mean Médiane : fonction median > x<-c(4,6,2,9,0,1,2) > x [1] 4 6 2 9 0 1 2 > mean(x) [1] 3.428571 > median(x) [1] 2 E. Comets (UMR738) Introduction à R - Novembre 2009 22 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Moyenne et médiane en présence de valeurs manquantes Option na.rm=T pour ignorer les valeurs manquantes > x[3]<-NA > x [1] 4 6 NA 9 0 1 > mean(x) [1] NA > mean(x,na.rm=T) [1] 3.666667 > median(x) [1] NA > median(x,na.rm=T) [1] 3 E. Comets (UMR738) 2 Introduction à R - Novembre 2009 23 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Moyenne en enlevant les valeurs extrêmes Autre option utile trim=f : où f∈ [0, 0.5] enlève un pourcentage d’observations égal à f de part et d’autre avant de calculer la moyenne peut être utilisé pour calculer une moyenne robuste > x<-c(4,6,2,9,0,1,2) > mean(x,trim=0.2) [1] 3 E. Comets (UMR738) Introduction à R - Novembre 2009 24 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Variance et écart-type Variance : fonction var Ecart-type : fonction sd On a la même option pour ignorer les valeurs manquantes : > x<-c(4,6,2,9,0,1,2) > var(x) [1] 9.95238 > sd(x) [1] 3.154739 > sqrt(var(x)) [1] 3.154739 > x[3]<-NA > var(x) Erreur dans var(x) : observations manquantes dans cov / cor > var(x,na.rm=T) [1] 11.46667 E. Comets (UMR738) Introduction à R - Novembre 2009 25 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Corrélation (1) Fonction cor(x,y) : coefficient de corrélation entre x et y Par défaut, calcul du coefficient de corrélation de Pearson : r=r ΣXY − ΣX 2 − ΣX ΣY (ΣX )2 N N ΣY 2 − (ΣY )2 (1) N > x<-c(4,6,2,9,0,1,2) > y<-c(9,2,5,1,6,0,3) > cor(x,y) [1] -0.270984 E. Comets (UMR738) Introduction à R - Novembre 2009 26 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Corrélation (2) Options method : deux autres coefficients de corrélation (association basée sur les rangs) method="kendall" : τ de Kendall (coefficient de corrélation des rangs de Kendall) method="spearman" : ρ de Spearman use="c" : pour ignorer les valeurs manquantes Calcul des coefficients de corrélation non-paramétriques > x<-c(4,6,2,9,0,1,2) > y<-c(9,2,5,1,6,0,3) > cor(x,y,method="spearman") [1] -0.1982062 > cor(x,y,method="k") [1] -0.19518 Note : on peut juste écrire la première lettre de la méthode E. Comets (UMR738) Introduction à R - Novembre 2009 27 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Covariance Fonction cov(x,y) : covariance entre x et y. > x<-c(4,6,2,9,0,1,2) > y<-c(9,2,5,1,6,0,3) > cov(x,y) [1] -2.690476 Notes : mêmes options que pour cor method, na.rm=T x et y peuvent être des matrices cov renvoie alors la matrice de variance-covariance entre les colonnes de x et de y E. Comets (UMR738) Introduction à R - Novembre 2009 28 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Quantiles On peut obtenir les quantiles empiriques d’un vecteur > quantile(x) 0% 25% 50% 75% 100% 2.525075 4.413246 4.897222 5.528062 7.327059 Par défaut, on a le min, le max, et les 3 quartiles (0.25, 0.5 et 0.75 quantiles). Pour obtenir les autres quantiles, par exemple les déciles: > dec<-seq(0,1,0.1) > dec [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 > quantile(x,dec) 0% 10% 20% 30% 40% 50% 2.525075 3.538811 4.211671 4.468975 4.648577 4.897222 60% 70% 80% 90% 100% 5.190315 5.459779 5.785553 6.198171 7.327059 E. Comets (UMR738) Introduction à R - Novembre 2009 29 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Attention aux fonctions appliquées à un tableau Comme la plupart des fonctions, quantile ne calcule pas les statistiques d’un tableau ou d’un data.frame colonne par colonne mais le considère comme un grand vecteur : > x=matrix(seq(1:100),ncol=4) > quantile(x) 0% 25% 50% 75% 100% 1.00 25.75 50.50 75.25 100.00 La fonction summary est utilisée pour préserver cette structure. > summary(x) X1 Min. : 1 1st Qu.: 7 Median :13 Mean :13 3rd Qu.:19 Max. :25 E. Comets (UMR738) X2 Min. :26 1st Qu.:32 Median :38 Mean :38 3rd Qu.:44 Max. :50 X3 Min. :51 1st Qu.:57 Median :63 Mean :63 3rd Qu.:69 Max. :75 Introduction à R - Novembre 2009 X4 Min. : 76 1st Qu.: 82 Median : 88 Mean : 88 3rd Qu.: 94 Max. :100 30 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Plus généralement La fonction apply sert à appliquer une autre fonction de façon répétée sur les lignes ou les colonnes d’un tableau. Par exemple : > apply(x,2,quantile) [,1] [,2] [,3] [,4] 0% 1 26 51 76 25% 7 32 57 82 50% 13 38 63 88 75% 19 44 69 94 100% 25 50 75 100 calcule les quantiles par défaut pour les 4 colonnes de la matrice x (avec 1 à la place de 2, ce serait pour les lignes). Il est possible de spécifier des options pour la fonction appelée par apply : > apply(x,2,quantile,c(0.05,0.95)) [,1] [,2] [,3] [,4] 5% 2.2 27.2 52.2 77.2 95% 23.8 48.8 73.8 98.8 E. Comets (UMR738) Introduction à R - Novembre 2009 31 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Vue d’ensemble d’un jeu de données La fonction summary donne un résumé quantitatif. Une vue d’ensemble de la structure d’un jeu de données est fournie par str : > str(airquality) ’data.frame’: 153 obs. of 6 variables: $ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ... $ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ... $ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ... $ Temp : int 67 72 74 62 56 66 65 59 61 69 ... $ Month : int 5 5 5 5 5 5 5 5 5 5 ... $ Day : int 1 2 3 4 5 6 7 8 9 10 ... E. Comets (UMR738) Introduction à R - Novembre 2009 32 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Exercice Créez une matrice x portant les chiffres de 1 à 100, en 4 colonnes Calculer les quantiles 0.1 et 0.9 de chaque colonne Calculer les quantiles 0.1 et 0.9 de chaque ligne E. Comets (UMR738) Introduction à R - Novembre 2009 33 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Statistiques descriptives comme en SAS (1) Il existe une version de summary produisant des tableaux de statistiques descriptives ressemblant à ceux de SAS. Elle est définie dans la librairie Hmisc : > library(Hmisc) > options(digits=3) > sex <- factor(sample(c("m","f"), 500, rep=TRUE)) > age <- rnorm(500, 50, 5) > treatment <- factor(sample(c("Drug","Placebo"), 500, rep=TRUE)) > db<-data.frame(npat=factor(1:500),sex,age,treatment) > summary(age~factor(sex)) age N=500 +-----------+-+---+----+ | | |N |age | +-----------+-+---+----+ |factor(sex)|f|273|50.1| | |m|227|49.9| +-----------+-+---+----+ |Overall | |500|50.0| +-----------+-+---+----+ E. Comets (UMR738) Introduction à R - Novembre 2009 34 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Statistiques descriptives comme en SAS (2) On peut demander des statistiques plus élaborées en définissant des fonctions adaptées : > > > > g<-function(x){ c(smean.sd(x),median(x),quantile(x,prob=c(0.25,0.75))) } f<-summary(age~factor(sex),fun=g) > f age N=500 +-----------+-+---+----+----+----+----+----+ | | |N |Mean|SD | |25% |75% | +-----------+-+---+----+----+----+----+----+ |factor(sex)|f|273|50.1|4.91|50.0|46.5|53.4| | |m|227|49.9|5.02|49.8|47.1|53.3| +-----------+-+---+----+----+----+----+----+ |Overall | |500|50.0|4.95|50.0|46.6|53.3| +-----------+-+---+----+----+----+----+----+ E. Comets (UMR738) Introduction à R - Novembre 2009 35 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Moyenne et variance Corrélation et covariance Quantiles Exercice Exercice Créez une matrice x portant les chiffres de 1 à 100, en 4 colonnes Calculez la moyenne et la variance de x des colonnes de x des 3 premières lignes de x Prendre le jeu de données interne à R appelé ToothGrowth le visualiser pour se faire une idée de son contenu (utilisez l’aide) la première colonne représente la longueur des dents de cochons d’inde soumis à différents régimes ranger la première colonne par colonnes dans une matrice à 6 colonnes mat calculer la matrice de corrélations entre les colonnes de mat E. Comets (UMR738) Introduction à R - Novembre 2009 36 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques Plan Dataframe Format d’un dataframe Ecriture et lecture de fichiers Manipulation d’un dataframe Tri Statistiques descriptives Moyenne et variance Corrélation et covariance Quantiles Exercice Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques E. Comets (UMR738) Introduction à R - Novembre 2009 37 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques Loi normale Pour chaque distribution qu’il connait, R va en général définir 4 fonctions associées. Pour la loi normale, le suffixe général est ’norm’ et il va être précédé de 4 lettres, d, p, q ou r pour définir 4 fonctions : dnorm(x,µ,σ) : densité 1 f (x ) = √ 2πσ (x − µ)2 2σ2 e − pnorm(x,µ,σ) : probabilité F (x ) = Z x f (u ) du −∞ qnorm(αq ,µ,σ) : quantile correspondant de la distribution, c’est-à-dire pour αq donné la valeur de x pour laquelle F (x ) = P (X ≤ x ) = αq rnorm(n,µ,σ) : échantillon aléatoire de taille n E. Comets (UMR738) Introduction à R - Novembre 2009 38 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques Quantiles d’une loi normale On utilise la fonction qnorm() pour connaître les valeurs seuils pour la distribution considérée. Par exemple, pour la loi normale, les bornes de l’intervalle de confiance à 95% sont données par les valeurs correspondant aux quantiles à 2.5 et 97.5% : > qnorm(0.025) [1] -1.959964 > qnorm(0.975) [1] 1.959964 soit si on arrondit [-1.96; 1.96]. E. Comets (UMR738) Introduction à R - Novembre 2009 39 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques Exemple Probabilité d’observer une réalisation de la variable inférieure à une valeur donnée si X est tirée dans une loi normale ℵ(0, 1) : pnorm() > 1-pnorm(1) [1] 0.1586553 > 1-pnorm(1.96) [1] 0.02499790 Probabilité d’observer les mêmes valeurs si X est tirée dans une loi du χ2 à 1 degré de liberté : pchisq() > 1-pchisq(1,1) [1] 0.3173105 > 1-pchisq(1.96,1) [1] 0.1615133 E. Comets (UMR738) Introduction à R - Novembre 2009 40 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques Tirage dans une loi normale Utilisation de la fonction rnorm() : > rnorm(10,5,1) [1] 6.581486 4.769339 6.659839 5.297872 4.358885 ... 4.337121 5.536682 5.298256 [9] 5.706258 4.536735 Par défaut, tirage dans une loi normale ℵ(0, 1) > rnorm(10) [1] -1.29191160 0.40569752 1.14063657 -0.25974412 ... -0.14843534 0.03722864 [7] 1.77506059 -0.24868475 -1.04460649 -0.59818091 E. Comets (UMR738) Introduction à R - Novembre 2009 41 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques Tirage d’échantillons avec ou sans remise La fonction sample() est utilisée. Sa syntaxe est la suivante : sample(x, size, replace = FALSE, prob = NULL) Par exemple : > x<-1:10 > sample(x,3) [1] 8 2 3 Par défaut, il est effectué un tirage sans remise. Pour demander un tirage avec remise, utiliser replace=T : > sample(x,7,replace=T) [1] 2 9 10 8 2 2 9 Cette fonction sera très utile pour faire du rééchantillonnage (bootstrap). E. Comets (UMR738) Introduction à R - Novembre 2009 42 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques Exercice Créer un vecteur de 10 valeurs en tirant : les 6 premières dans ℵ(2, 5) les 4 suivantes dans ℵ(−1, 4) Tirer un vecteur v1 de 10 valeurs dans une mixture de 2 lois normales : ℵ(2, 5) ℵ(−1, 4) avec une probabilité 50-50 Calculez la moyenne de v1 répétez l’opération 10 fois en conservant les moyennes des 10 échantillons v1 successifs dans un vecteur Recommencez la même opération en tirant un échantillon v2 dans une mixture avec une probabilité 10-90 comparez les moyennes obtenues pour v1 et v2 E. Comets (UMR738) Introduction à R - Novembre 2009 43 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques Exercice Dans un essai clinique, on suppose que la clairance à la créatinine des patients recrutés suit une loi normale de moyenne 120 mL/min, avec un écart-type de 40 mL/min. Si on prend 10 patients au hasard, quelle est la probabilité p1 que la clairance moyenne soit inférieure à 130? Quelle est la probabilité qu’elle soit comprise entre 120 et 130? Combien de sujets faudrait-il prendre pour que la probabilité p1 soit d’au moins 95%? E. Comets (UMR738) Introduction à R - Novembre 2009 44 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques Principales distributions statistiques (1) Nom dnorm() dlnorm() dunif() dpois() dexp() dbinom() dnbinom() dchisq() df() E. Comets (UMR738) Distribution normale log-normale uniforme Poisson exponentielle binômiale binômiale négative chi-deux F Paramètres par défaut N (µ = 0, σ = 1) LN (µ = 0, σ = 1) U (a = 0, b = 1) P (λ) E (λ = 1) B (n, p) BN (n, p) χ2 (n) (†) F (n1 , n2 ) Introduction à R - Novembre 2009 45 / 46 Dataframe Statistiques descriptives Lois de probabilité et simulation Lois de probabilité Tirage d’échantillons aléatoires Principales distributions statistiques Principales distributions statistiques (2) Nom Distribution Paramètres par défaut dt() Student T (df , δ∗ ) dlogis() logistique L (α = 0, β = 1) dgeom() géométrique G(p) dweibull() Weibull W (γ, β = 1) dhyper() hypergéométrique H (m, n, k ) dbeta() Beta β(α, β) dgamma() Gamma Γ(γ, β = 1) dcauchy() Cauchy C (α = 0, β = 1) ∗ δ : paramètre de non-centralité, optionnel E. Comets (UMR738) Introduction à R - Novembre 2009 46 / 46