Publicité
Publicité

Contenu connexe

Publicité

Dernier(20)

Publicité

Initiation r

  1. INITIATION AU LOGICIEL R Eric TCHAWALASSOU Ingénieur Statisticien Economiste Université de Lomé - Faculté des Sciences - Département de Mathématiques Références du cours: 1. Le Logiciel R, Maitrisez le langage, Effectuez des analyses statistiques; Pierre Lafaye de Micheaux et all
  2. Plan du cours : Première partie 1. Introduction 1. Présentation de R 2. Philosophie de R 2. Fonctionnement 1. Installation de R 2. La session de travail 3. Les différentes aides 4. Les objets R 5. Les fonctions
  3. Plan du cours : deuxième partie 3. Manipulation des données 1. Importation des données 2. Exportation des résultats 3. Manipulation des variables 4. Manipulation des individus 5. Concaténer des tableaux de données 4. Programmation dans R 1. Structure de contrôle 2. Les fonctions prédéfinies 3. Construire une fonction
  4. Introduction
  5. 1. Introduction  R Logiciel Statistique  Avantages de R  Inconvénients de R  Philosophie de R
  6. R Logiciel Statistique  R est un logiciel de statistique créé par Ross Ihaka & Robert Gentleman dans les années 90.  Il est à la fois un langage informatique et un environnement de travail : les commandes sont exécutées grâce a des instructions codées dans un langage relativement simple, les résultats sont affichés sous forme de texte et les graphiques sont visualises directement dans une fenêtre qui leur est propre.  Outil bien adapté pour la manipulation des données, les calculs matriciels, l’analyse de données.  Il est un clone du logiciel S-plus qui est fondé sur le langage orienté objet S.
  7. Avantages de R  Un logiciel multiplateforme  Windows  Linux  Mac OS X  Logiciel libre et gratuit  Il est parfaitement possible d’utiliser R sans spécialement maîtriser cette langue  Logiciel très puissant à code source ouvert  Logiciel dont le développement est très actif  Logiciel avec d’excellentes capacités graphiques  Il possède, un système de documentation intégré très bien conçu.
  8. Inconvénients de R  La documentation de référence et les principales ressources sont en anglais.  R nécessite des machines relativement puissantes pour travailler sur de grosses données de plusieurs milliers d’individus.  Il nécessite un apprentissage continu pour maîtriser les syntaxes et les commandes.
  9. Philosophie de R  En général, on ne voit pas les données sur lesquelles on travaille ;  On ne dispose pas en permanence d’une vue des données sous forme de tableau .  Dans R, par défaut, l’affichage est réduit au minimum, et c’est l’utilisateur qui demande à voir des résultats supplémentaires ou plus détaillés.
  10. Fonctionnement
  11. Installation de R  R distribué par le CRAN (Compréhensive R Archive Network)  Adresse : http://cran.rproject.org/  L’installation varie selon les systèmes d’exploitation  Les fonctionnalités sont exactement les mêmes d’un système à l’autre  La plupart des programmes sont portables d’un système à l’autre  L’installation de R est très facile, il suffit de suivre les instructions.
  12. Session de travail Pour ouvrir une session R :  Sous Linux  Taper la commande R dans une fenêtre de commandes.  Indiquer le chemin du répertoire de travail.  Sous Windows  On clique sur l’icône R du bureau  Taper R dans l’onglet Office (Rechercher les programmes et fichier)  Sous Mac  On clique sur l’icône R dans Applications , ou  On se positionne dans le répertoire courant et on tape la comme R
  13. Les différentes aides  L’aide en ligne. Pour l’afficher directement dans l’interface, on tape:  help()  ? Pour l’afficher dans un navigateur au format HTML, on tape:  help.start()  L’aide sur le CRAN.  RsiteSearch(“nom de la commande”)
  14. Création d’objet  La création d’un objet se fait par l’un des trois opérateurs suivants:  <-  ->  = (Pas du tout conseillé de l’utiliser) Exemple: 1. B <- 41.3 # Attention, le séparateur décimal doit être un point 2. X <- B 3. Y<- -5*(3.2)
  15. Affichage et Suppression d’objets  On affiche la valeur d’un objet via la commande:  Print("nom de l’objet")  Ou vous tapez simplement le nom de l’objet  Pour connaître les objets de la session:  objects()  ls()  Pour supprimer un ou plusieurs objets:  rm()
  16. Le type d’un objet  Objet vide que nous notons nul :  null  Objet booléen que nous notons logique :  logical  Nombre réel que nous notons numérique :  numeric  Nombre complexe que nous notons complexe :  complex  Chaîne de caractères que nous notons caractère :  character
  17. Les vecteurs I Le vecteur est un objet atomique, composé d’un ensemble de valeurs. Différentes méthodes sont disponibles pour construire un vecteur.  Vecteurs numériques : 1. Construction par la fonction collecteur « c » :  Exemple : x <- c(5.6, -2, 78, 42.3) #vecteur de numériques y <- c(x, 3, c(12, 8)) z <- y + 2 #Que remarquez vous? 2. Construction par l’opérateur séquence « : » :  Exemple : a <- 2:9
  18. Les vecteurs II 3. Construction par la fonction séquence « seq » :  Exemple : b <- seq(1, 7, by = 0.5) c <- seq(1, 6, length = 5) 4. Construction par la fonction « rep » :  Exemple : d <- rep(1, 4) e <- rep(c(1, 2), each = 4) 5. Construction par la fonction « scan » :  Exemple : f <- scan(n = 4)
  19. Les vecteurs  Vecteurs de caractères : Il est possible de créer des vecteurs de caractères de la même façon, en utilisant les fonctions « c » ou « rep ».  Exemple : x <- c(‘A’, ‘BB’, ‘C1’) y <- rep("A",5) Il est aussi possible de créer des vecteurs de caractères grâce à la commande « letters » qui contient les lettres de l’alphabet. La commande « format » permet la mise en forme de données numériques en chaîne de caractères de même longueur. Pour la concaténation, on utilise la commande « paste » :
  20. Les objets (Les vecteurs)  Exemple : 1. letters[1:3] 2. paste(c(‘X’, ‘Y’), 1:5, ‘txt’, sep = ‘.’) 3. paste(c(‘X’, ‘Y’), 1:5, sep = ‘.’, collapse =‘+’) 4. substr(‘freerider’,5,9) 5. format(1:10, trim = TRUE) 6. format(c(6.0, 13.1), digits = 2, nsmall = 1)
  21. Les vecteurs  Vecteurs logiques : Les vecteurs de booléens sont en général générés grâce à des opérateurs logiques. Ils peuvent aussi être générés par les fonctions seq, rep, c.  Exemple : x <- c(-1,0,2) test <- x > 1 (1+x^2)*(x > 1) Les commandes « all » ou « any » peuvent être également utilisé.
  22. Les vecteurs  Sélection d’une partie d’un vecteur : Elle s’opère avec l’opérateur « [ ] » et un vecteur de sélection.  Exemple : v <- 1:100 v[6] v[2:10] v[c(6,6,1:2)] v[10:1]
  23. Exercices 1 1) Créez un vecteur V contenant les 200 premiers nombres entiers 2) Faites un tirage de 20 éléments dans ce vecteur que vous nommez Y 3) Créez Z égale à V sans ses 5 premiers éléments 4) Créez W égale à V sans son premier et son dixième élément 5) Faites ressortir A égale aux éléments de Z qui sont supérieurs à 10 et inférieur à 25. 6) Faites ressortir B égale aux éléments de Y qui sont supérieurs à 10 ou inférieur à 25. 7) Faites ressortir C égale aux éléments de Y qui sont supérieurs à 10 et inférieur à 5. 8) Recherchez la coordonnée du plus petit du vecteur de x.
  24. Exercices 2 A. À l’aide des fonctions rep, seq et c seulement, générer les séquences suivantes : 1) 0 6 0 6 0 6 2) 1 4 7 10 3) 1 1 1 2 2 3 4) 1 5.5 10 5) 1 1 1 1 2 2 2 2 3 3 3 3 B. Générer les suites de nombres suivantes à l’aide des fonctions c et rep seulement : 1) 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 2) 1 3 5 7 9 11 13 15 17 19 3) -2 -2 -1 -1 0 0 1 1 2 2 4) 10 20 30 40 50 60 70 80 90 100
  25. Correction 1 1) V = 0:199 2) Y = sample(V, 20) 3) Z = V[-(1:5)] 4) W = V[-c(1,10)] 5) A = Z[(Z>10) & (Z<25)] 6) B = Z[(Y>10) | (Y<25)] 7) C = Z[(Y>10) & (Y<5)] 8) X = which(Y==min(Y)) ; which.min(Y) ; (1:length(Y))[Y==min(Y)]
  26. Les matrices, Création Les matrices sont des objets atomiques, c’est-à-dire de même mode ou type pour toutes les valeurs. La fonction la plus utilisée pour créer une matrice est matrix qui prend en arguments le vecteur d’éléments et le nombre de lignes ou de colonnes de la matrice.  Exemple : M <- matrix(c(1,17,12,3,6,0), ncol=2) A <- matrix(1:10, nrow=2) B <- matrix(1:10, nrow=2, byrow=TRUE) C <- matrix(1:4, nrow=3, ncol=3) d <- seq(1, 10, by=2) D <- as.matrix(d)
  27. Les matrices, Sélection L’emplacement d’un élément dans une matrice est en général donné par le numéro de sa ligne et de sa colonne. Ainsi, pour sélectionner l’élément (i,j) de la matrice m, il faut écrire: m[i,j] Exercice 3 Soit A la matrice carrée définie par les 16 premiers nombres impairs 1) Créer A 2) Sélectionner la deuxième colonne de A, que vous nommez B 3) Sélectionner la troisième ligne de A, que vous nommez C 4) Créer la matrice D égale à A sans sa première ligne 5) Sélectionner les colonnes de A pour lesquelles la valeur sur la première ligne de A est strictement supérieur à 2.
  28. Calcul sur les matrices Fonctions utiles Fonction Description %*% Produit matriciel t(…) Transposition d’une matrice diag(…) Matrice identité d’ordre … diag(vec) Matrice diagonale avec les valeurs du vecteur vec dans la diagonale crossprod( , ) Produit croisé det() Déterminant d’une matrice solve() Inversion de matrice svd() Décomposition en valeurs singulières eigen() Diagonalisation d’une matrice solve( , ) Résolution de système linéaire chol() Décomposition de cholesky qr() Décomposition QR
  29. Exercice 4 A. Soient M et N deux matrices carrées à deux colonnes 1) Créer M et N 2) Créer L la matrice égale au produit croisé de N et M 3) Créer A égale au produit matriciel de M et de la transposée de N 4) Que remarquez-vous de L et A 5) Diagonaliser A 6) Résoudre l’équation Az = V, avec V = (1,2) B. Soit la matrice : X <- matrix(1:120,ncol=12) 1) Affichez toutes les lignes de la matrice commençant par un nombre pair 2) Affichez toutes les lignes de la matrice dont la moyenne est inférieure à 60. 3) 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 4) Sélectionnez la même sous-matrice, sauf la troisième ligne.
  30. Les matrices, Opérations sur les lignes et colonnes Il est possible de concaténer plusieurs vecteurs en ligne ou en colonne avec les fonctions rbind et cbind pour en faire une matrice.  Exemple : M <- cbind(c(1,17,12,3,6,0), c(1,0,0,5,-2,1)) A <- cbind(c(1,1,1), c(0,1,1), c(0,0,1)) B <- rbind(c(1,1,1), c(0,1,1), c(0,0,1)) La fonction apply permet d’appliquer une fonction f aux lignes ou aux colonnes de la matrice.  Exemple : apply(A, MARGIN=2, sum)
  31. Les facteurs Les facteurs sont des vecteurs permettant la manipulation de données qualitatives. La longueur est donnée par la fonction length, le mode par mode et les modalités du facteur par levels. Ils forment une classe d’objets et bénéficient de traitements particuliers pour certaines fonctions, telle la fonction plot pour les graphiques. Trois fonctions permettent de créer les facteurs : 1. La fonction factor : Sexe<-factor(c(‘M’,’M’,’F’,’M’,’F’,’M’,’M’,’M’)) 2. La fonction ordered : Niveau <- ordered(c(‘débutant’, ‘moyen’, ‘champion’), levels=c(‘débutant’, ‘moyen’, ‘champion’))
  32. Les facteurs 3. La fonction as.factor : salto <- c(1:5, 5:1) ; salto.f <- as.factor(salto) Exemple: 1. X <- factor(c("bleu", "vert", "bleu", "rouge","bleu" , "vert" , "vert")) 2. levels(X) 3. class(X)
  33. Les listes La liste est un objet hétérogène. C’est un ensemble ordonnée d’objets qui n’ont pas toujours le même mode ou la même longueur. Les objets sont appelés « composantes de la liste ». Les listes ont les deux attributs des vecteurs (length et mode) et l’attribut supplémentaire names. Les listes sont des objets importants car toutes les fonctions qui retournent plusieurs objets le font sous la forme d’une liste.
  34. Les listes, Création Les listes se créent avec la fonction list. Mais, il faudrait au par avant définir les arguments qui interviendront dans la liste.  Exemple : V <- seq(2,10, by=3) A <- matrix(1:8, ncol=2) B <- factor(c(‘M’,’M’,’F’,’M’,’F’,’M’,’M’)) O <- ordered(c(‘débutant‘,'moyen’,‘champion’)) maliste <- list(V,A,B,O) Pour nommer la liste, on utilise la fonction names.
  35. Les listes, Extraction Pour extraire une composante de la liste, on peut toujours le faire en indiquant la position de l’élément que l’on souhaite extraire. Les [[…]] permettent de retourner l’élément de la liste :  Exemple : maliste[[2]] maliste[[1]] On peut aussi utiliser le nom de l’élément s’il existe, ce que l’on peut écrire de deux façons : maliste[[‘…’]] maliste$...
  36. Les listes, Extraction (Suite) Il est possible d’extraire plusieurs éléments d’une même liste, ce qui crée une sous-liste. Noter qu’ici, on utilise […] et non [[…]]. Exemple : maliste[c(1,3)] La liste dimnames. C’est un attribut optionnel d’une matrice qui contient dans une liste à deux composantes les noms des lignes et des colonnes.  Exemple : x <- matrix(1:12, nrow=3, ncol=4) nomlign <- c(‘ligne1’,’ligne2’,’ligne3’) nomcol <- c(‘colonne1’,’colonne2’,’colonne3’, ‘colonne4’) dimnames(x) <- list(nomlign, nomcol)
  37. Les data-frames Les data-frames sont des listes particulières dont les composantes sont de même longueur, mais les modes peuvent être différents. Les tableaux de données usuellement utilisés en statistique sont souvent considérés comme des data-frames. Les principales manières de créer un data-frame consistent à utiliser les fonctions suivantes : 1. data.frame qui permet de concaténer des vecteurs de même taille et éventuellement de modes différents 2. read.table qui permet de lire un tableau de données 3. as.data.frame qui permet de transformer une matrice, une liste, … en data-frame
  38. Exercice 5 1. IMC <- data. frame (Sexe=c ("H", "F", "H", "F", "H", "F") , + Taille=c(1.83,1.76,1.82,1.60,1.90,1.66), + Poids=c(67,58,66,48,75,55), + row.names=c ("Remy", "Franck", "Pierre", "Domi", "Ben", "Cecile")) 2. Créer le tableau suivant :
  39. Les fonctions Une fonction est un objet R. Un grand nombre de fonctions sont prédéfinies dans R, cependant, il est possible de créer ses propres fonctions. Une fonction admet des arguments en entrée et retourne un résultat en sortie. Les arguments d’une fonction sont soient obligatoires soient optionnels. Dans ce dernier cas, ils possèdent une valeur par défaut.  Exemple : la fonction rnorm() Cette fonction admet trois arguments; n le nombre de valeurs à générer, mean la moyenne et sd l’écart type. Ces deux derniers sont fixés à 0 et 1 par défaut.
  40. Les fonctions La plupart des fonctions retournent plusieurs résultats et l’ensemble de ces résultats est contenu dans une liste. Pour visualiser l’ensemble des sorties, il est nécessaire de connaître l’ensemble des éléments de la liste en utilisant la fonction names.
  41. Exercices I. Création et inversion d’une matrice 1. Créer la matrice suivante: 𝐴 = 1 5 5 0 0 5 6 1 3 0 3 1 4 4 4 2 2. Nommer les lignes et les colonnes de cette matrice. La ième ligne sera nommée Li et la jème colonne Cj. 3. Calculer le déterminant puis inverser la matrice en utilisant les fonctions appropriées.
  42. Exercices I. Création et inversion d’une matrice II. Sélection dans un data-frames 1. A partir du jeu de données iris disponible sous R, créer un sous-jeu de données comportant uniquement les données de la modalité versicolor de la variable species. Appeler ce nouveau jeu de données iris2. 2. Trier par ordre décroissant les données de iris2 en fonction de la variable Sepal.Length (utiliser la fonction order).
  43. Deuxième partie
  44. Manipulation des données
  45. Importer des données Il existe trois fonctions principales pour importer un fichier texte dans R. Ces fonctions sont récapitulées dans le tableau suivant: 1. L’instruction read.table() Cette instruction permet de lire des données présente dans un fichier (à sélectionner à partir d’une fenêtre de dialogue) et les rapatrier dans R sous la forme d’un data.frame. Elle contient plusieurs paramètres qui sont décrits dans le tableau suivant :
  46. Importer des données read.table(file=file.choose(), header=T, sep="t", dec=".", row.names=1) Lors de l’utilisation de la fonction read.table, il est nécessaire de spécifier la valeur du paramètre file qui doit contenir dans une chaine de caractère, le nom du fichier ainsi que son chemin d’accès complet.
  47. Exercice 1 Nous sommes en présence de la variable qualitative suivante: Xqual=factor(c(rep(‘A’,60),rep(‘B’,20),rep(‘C’,17),rep(‘D’,3))) 1. Calculer les fréquences de chaque modalité 2. Afficher à l’écran l’intitulé des modalités dont l’effectif est inférieur à 5% de l’effectif total 3. Calculer les fréquences de chaque modalité sans la modalité de la question précédente. Le résultat sera mis dans un vecteur proba 4. Sélectionner les individus prenant la modalité de la question 2. Leur donner une valeur parmi les modalités restantes, selon un tirage dont les probabilités sont calculées en question 3.
  48. Exercice 2 1. Créez un dossier nommé DossierData_N°Groupe sur votre bureau à partir de la commande setwd( ). 2. Téléchargez le fichier se trouvant à l’adresse suivante : http://www.biostaticticien.eu/springR/Intima_Media.txt et sauvez le dans votre dossier. 3. Utilisez la fonction readlines( ) pour visualiser le début de ce fichier. 4. Importez le fichier 5. Calculez l’âge moyen et la variance des tailles
  49. Importer des données 2. L’instruction read.ftable( ) Il arrive parfois que l’on ne dispose pas de toutes les données individuelles, mais uniquement d’un résumé présenté sous la forme d’un tableau de contingence. Dans ce cas, il faut utiliser la fonction d’importation read.ftable( ). Supposons que le fichier Intima se présente comme suit : On utilisera l’instruction suivante: Intima.table<- read.ftable(« Intima_ftable.txt,row.var.names=c("SEXEE","tabac"),col.vars=list("alcool"=c ("ne boit pas","boit obligatoirement", "boit régulièrement")))
  50. Importer des données 3. L’instruction scan( ) La fonction scan( ) possède de très nombreux paramètres et elle est à privilégier lorsque les données ne sont pas organisées sous la forme d’un tableau rectangulaire. Prière consulter la documentation à son sujet. Supposons que le fichier Intima se présente comme suit : Les commandes conseillées pour lire ce fichier sont :
  51. Importer des données
  52. Exporter des données Pour exporter des données, on utilise la commande write.table( ). On peut exporter des fichiers sous format txt ou csv et également dans Excel.  Exemple : write.table(tablo,"nomfichier.txt",sep=";") write.table(tablo,"nomfichier.csv",sep="t") Tapez les commandes suivantes: Ouvrez Excel ou OpenOffice Calc et faites ctrl+v. Que remarquez-vous?
  53. Fonctions mathématiques de base
  54. Fonctions mathématiques de base
  55. Fonctions mathématiques de base
  56. Statistiques descriptives Nous allons fonder tous nos exemples sur le fichier de données nutriage.xls que vous pouvez télécharger à l’emplacement suivant : http://www.biostatisticien.eu/springR /nutriage.xls 1. Importez le fichier dans votre dossier.(utilisez le package gdata pour pouvoir utiliser read.xls) 2. Observer les 5 premières lignes du fichier. 3. Recodez les modalités de la variable sexe en utilisant la fonction levels ( ). 4. Effectuez un tri à plat en effectif sur la variable matgras. 5. Effectuez un tri à plat en fréquence sur la variable matgras.
  57. Graphiques 1. Diagramme en croix Le diagramme en croix affiche pour chaque observation une petite barre horizontale dans la colonne de la modalité correspondante. Il n’est pas intégré au logiciel R, mais nous pouvons le programmer au moyen de la fonction plot( ) et de son paramètre pch. La fonction obtenue sera appelée diagcroix( ).  A développer dans la partie Programmation. 2. Diagramme en points Le diagramme en points s’obtient par l’utilisation de la fonction dotchart( ) couplé à la fonction table( ). Prenez l’exemple suivant:
  58. Graphiques 3. Diagramme en tuyaux d’orgue Il s’obtient à partir de la fonction barplot( ). Vous pouvez également prendre l’exemple suivant: 4. Diagramme de Pareto Son obtention se fait également à partir de la fonction barplot( ). Prenez l’exemple suivant :
  59. Graphiques 5. Diagramme empilé Il s’obtient également à partir de la fonction barplot( ) en fournissant un objet de type matrix comme premier paramètre effectif. Exemple:
  60. Graphiques 6. Diagramme circulaire Il s’obtient à partir de la fonction pie( ). Exemple: Require("RColorBrewer") col<- brewer.pal(8,« Paste12") pie(table(matgras),col=col) 7. Diagramme tuyaux d’orgue avec fréquence cumulée Il s’obtient en couplant les fonctions barplot( ) et points( ).
  61. Graphiques 8. Diagramme en bâton Il s’obtient à partir de la fonction plot( ) appliquée à un tableau de contingence. 9. Graphe de la fonction de répartition empirique Il s’obtient en couplant les fonctions plot( ) et ecdf( ).
  62. Graphiques 10. Boîte à moustaches Elle s’obtient à partir de la fonction boxplot( ). 11. Histogramme Il s’obtient à partir de la fonction hist( ).
  63. Programmation sous R
  64. Structures de contrôle Commandes groupées Un groupe de commande est comme une parenthèse en mathématique: les commandes groupées sont effectuées ensemble. Sous R, le groupe de commande est délimité par des accolades: { +expr1 +expr2 +… +} Deux commandes successives sont séparées par un retour à la ligne. Cependant, il est possible de séparer deux commandes en les conservant sur une même ligne.
  65. Structures de contrôle Les boucles for ou while Les boucles classiques sont disponibles sous R.  Boucle for De manière générale, la boucle for s’écrit : for (i in vecteur) { +expr1 + … +}  Exemple : for(i in 1:99) print(i) for(i in seq(1,99,by=2)) print(i)
  66. Structures de contrôle  Boucle while De manière générale, la boucle while s’écrit : while (condition) { +expr1 + … +}  Exemple : i=1 while(i<3) { print(i) i=i+1}
  67. Structures de contrôle Conditions if Il s’agit d’exécuter un ordre sous condition : l’ordre est exécuté si et seulement si la condition est vraie. Il s’écrit plus généralement : if (condition) { +expr1 + … +}  Exemple : i=1 repeat{ print(i) i=i+1 if(i>3) break}
  68. Structures de contrôle Conditions if, else Il s’agit d’exécuter un ordre sous condition : l’ordre est exécuté si et seulement si la condition est vraie. Il s’écrit plus généralement : if (condition) { +expr1 + … +} else{ + exprn +… +}
  69. Exemple Prenons la définition de la variance d'un échantillon de taille n d'une variable continue X. Dans un langage de programmation classique, nous écririons quelque chose du type :
  70. Exemple Dans R nous pouvons immédiatement travailler sur les vecteurs et donc utiliser la syntaxe suivante:
  71. Exercices 1. Écrire le programme permettant de retourner la valeur absolue d’un nombre. (Fonction valeur absolue) 2. Ecrire le programme permettant de retourner l’inverse d’une valeur. 3. Ecrire le programme permettant de faire la composée des deux fonctions précédentes.
Publicité