Initiation r

Post on 13-Feb-2017

520 views 1 download

Transcript of Initiation r

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

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

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

Introduction

1. Introduction

R Logiciel Statistique

Avantages de R

Inconvénients de R

Philosophie de R

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.

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.

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.

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.

Fonctionnement

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.

Session de travailPour 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

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

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)

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

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

Les vecteurs ILe 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

Les vecteurs II3. 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)

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 » :

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)

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

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]

Exercices 11) 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.

Exercices 2A. À 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

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

Les matrices, CréationLes 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)

Les matrices, SélectionL’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.

Calcul sur les matricesFonctions 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

Exercice 4A. 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.

Les matrices, Opérations sur les lignes

et colonnesIl 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)

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

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)

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.

Les listes, CréationLes 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.

Les listes, ExtractionPour 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$...

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)

Les data-framesLes 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

Exercice 51. 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 :

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.

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.

Exercices

I. Création et inversion d’une matrice

1. Créer la matrice suivante:

𝐴 =

1 5 5 00 5 6 13 0 3 14 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.

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

Deuxième partie

Manipulation des données

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 :

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.

Exercice 1Nous 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.

Exercice 21. 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

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

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 :

Importer des données

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?

Fonctions mathématiques de base

Fonctions mathématiques de base

Fonctions mathématiques de base

Statistiques descriptivesNous 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.

Graphiques1. 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:

Graphiques3. 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 :

Graphiques5. Diagramme empilé

Il s’obtient également à partir de la fonction barplot( ) en fournissant

un objet de type matrix comme premier paramètre effectif.

Exemple:

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

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

Graphiques10. Boîte à moustaches

Elle s’obtient à partir de la fonction boxplot( ).

11. Histogramme

Il s’obtient à partir de la fonction hist( ).

Programmation sous R

Structures de contrôleCommandes 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.

Structures de contrôleLes 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)

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}

Structures de contrôleConditions 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}

Structures de contrôleConditions 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

+…

+}

ExemplePrenons 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 :

ExempleDans R nous pouvons immédiatement travailler sur les

vecteurs et donc utiliser la syntaxe suivante:

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.