Академический Документы
Профессиональный Документы
Культура Документы
http://www.aliquote.org/cours/2012_biomed
.
.
Introduction
Qu’est-ce que R ?
▶ R est un logiciel pour le traitement et la modélisation de données
statistiques (Ihaka & Gentleman, 1996; Venables & Ripley, 2002).
▶ Dans cet environnement interactif, l’utilisateur envoie des
commandes, R les interprète et renvoit un résultat.
▶ Il existe des interfaces graphiques plus ou moins avancées (Deducer,
Rcmdr, etc.), mais on ne les utilisera pas.
.
.
Représentation des données
Contrairement à SPSS ou Statistica, on ne travaille pas à partir d’une vue de
type tableur des données, comme MS Excel®.
A B C D
score gender IQ SES score gender IQ SES 1
1 1 M 92 C 1 M 92 C 2
2 5 M 96 A 5 M 96 A 3
3 3 F 97 C 3 F 97 C 4
4 1 F 93 C
5 5 F 101 C
1 F 93 C 5
6 2 F 100 B
5 F 101 C 6
7 2 M 97 B 2 F 100 B 7
2 M 97 B 8
.
.
Exemple de commandes R
Voici un exemple de régression simple à partir de données artificielles :
n <- 100
x <- runif ( n )
y <- 0 .9 + 0 .65 * x + rnorm ( n )
# Fit a simple linear model
summary ( lm ( y ∼ x ))
Dans l’exemple ci-dessus, on voit que la syntaxe est proche de celle d’un lan-
gage de programmation : on travaille sur des variables à l’aide de fonctions.
.
.
Environnement de travail
Pour travailler avec R, il est nécessaire d’avoir les outils adaptés, en parti-
culier un environnement de développement “intelligent” qui ne gêne pas
l’approche interactive, p.ex. RStudio : http://rstudio.org/.
.
.
Obtenir de l’aide
Il est indispensable de savoir où chercher l’information et de bien se docu-
menter !
▶ sous R directement,
help(topic, package=) ou
help.search(pattern)
▶ la documentation R disponible sur CRAN (Manuals)
▶ la mailing-list R-help
▶ http://stackoverflow.com
▶ http://crossvalidated.com
The R Inferno (Burns, 2011) est une lecture conseillée pour les personnes
désirant approfondir leurs connaissances de R.
.
.
Ressources bibliographiques
En anglais :
▶ Introductory Statistics with R (Dalgaard, 2006)
En français :
▶ R pour les débutants (Paradis, 2005)
.
.
Les objets R
L’élément de base est le vecteur (un scalaire est alors un vecteur de longueur
1) que l’on peut créer avec la commande c et dont les éléments sont de l’un
des “types” (mode) suivants :
▶ numeric, des nombres (entiers ou flottants, integer/double)
▶ logical, des booléens à valeur dans {TRUE, FALSE}
▶ character, des caractères ASCII
Les expressions suivantes sont valides :
nombre <- 3 .141593
v <- c (1 ,2 ,3 ,4)
b <- c (T ,F ,T , F )
s <- c ( " h " ," e " ," l " ," l " ," o " )
a <- b <- rnorm (2)
u <- b
.
.
Adresser les éléments d’un vecteur
On utilise [ pour indexer les n éléments d’un vecteur, sachant que l’index du
premier élément vaut 1 (et non 0 comme dans certains langages) :
v [1]
v [ c (1 ,4)]
On peut adresser les élements d’un vecteur en utilisant les valeurs con-
tenues dans un autre vecteur (principe d’un dictionnaire), par exemple :
v[b ] # valeurs de v telles que b vaut TRUE
s [ v [3]] # v [3]=3 ème valeur de s
On peut encore adresser les éléments d’un vecteur par leur “nom”, le cas
échéant :
names ( v ) <- c ( " toto " ," titi " ," tata " ," tutu " )
v [ " tata " ]
.
.
Application
On peut également vouloir isoler des groupes de valeurs :
▶ Restriction d’un vecteur à certaines de ses valeurs (filtre),
Exemple :
n <- 100
age <- sample (25:45 , n , replace = TRUE )
sex <- sample ( c ( " M " ," F " ) , n , replace = TRUE )
length ( age [ sex == " F " ])
length ( sex [ age >= 30 & age <= 40])
Une expression telle que age > 30 retourne un vecteur booléen (“les élé-
ments du vecteur age sont-ils supérieurs (strictement) à 30”). Ce vecteur a
la même longueur que age. Les indices de age pour lesquels cette condition
est vérifiée peuvent être obtenus ainsi :
which ( age > 30)
.
.
Recap’
Voici deux façons d’adresser spécifiquement un sous-ensemble des valeurs
assignées à un vecteur x :
x <- c (1 ,4 ,10 ,3 ,1)
names ( x ) <- letters [1: length ( x )]
idx <- c (1 ,3 ,4)
g <- c (T ,F ,T ,T , F )
all ( x [ idx ] == x [ g ])
idx 1 3 4
avec les caractéristiques suivantes :
▶ length(idx) ≤ length(x)
a b c d e
▶ length(g) = length(x) x 1 4 10 3 1
g T F T T F
.
.
Propriétés des vecteurs
On peut connaître la taille d’un vecteur (length), son nombre d’éléments
uniques (unique), le type de ses éléments (class ou str).
2 7 1 5 3 1 3
.
.
Générer des vecteurs
En dehors de l’opérateur c, on peut utiliser les commandes pré-définies dans
R:
1:5
seq (1 , 5)
rep ( c (1 ,3) , 5)
rep ( c (1 ,3) , each =5) # rep ( c (1 ,3) , c (5 ,5))
.
.
Opérer sur des vecteurs
On peut également effectuer des opérations de tri sur un vecteur :
x <- 1:10 x 1 2 3 4 5 6 7 8 9 10
xs <- sample ( x )
sort ( xs , decreasing = TRUE ) xs 1 4 8 5 2 6 10 9 3 7
order ( xs ) sorting 10 9 8 7 6 5 4 3 2 1
retourne 1 3 4 5 2.
.
.
Valeurs manquantes
Les valeurs manquantes sont représentées par NA, quel que soit le type des
variables.
x <- 1:10
sum ( x )
D’autres non :
summary ( x )
.
.
Les matrices
Une matrice est une structure composée de vecteurs de même taille et de
même type.
x1 <- sample (1:100 , 10) x
x2 <- sample (1:100 , 10)
x <- cbind ( x1 , x2 )
x [ , " x1 " ] x1 x2
.
.
Opérations sur les matrices
L’adressage des éléments d’une matrice, ou l’assignation de valeurs, suit le
même principe que pour les vecteurs, sauf que l’on a deux indices (ligne et
colonne).
x <- matrix (1:10 , nrow =2 , byrow = TRUE )
x [1 ,2]
Lorsque l’on souhaite effectuer le même type d’opération sur les colonnes
(ou les lignes) d’une matrice, au lieu d’une boucle
for ( j in 1: ncol ( x ))
print ( mean ( x [ , j ]))
L’argument ... (special variable length argument) permet de passer des ar-
guments supplémentaires lors de l’appel à une fonction, p.ex. :
apply (x , 2 , mean , na.rm = TRUE )
.
.
Les facteurs
Un facteur permet d’effectuer une partition des unités statistiques : variable
catégorielle à valeurs discrètes (niveaux, modalités, strates).
La commande
factor (x , levels = , labels = , ordered =)
Comme dans le cas des matrices, il existe des fonctions spéciales qui per-
mettent d’opérer selon les niveaux d’un facteur :
y <- sample (1:100 , 20)
x <- factor ( rep ( c ( " a " ," b " ) , 10))
tapply (y , x , mean )
by (y , x , mean )
.
.
Accéder aux informations d’un facteur
Un facteur reste un vecteur :
x <- factor ( rep ( c ( " t1 " ," t2 " ," t3 " ) , each =10) ,
ordered = TRUE )
x [ c (1 ,3)]
.
.
Créer des facteurs
Au lieu de factor, on peut utiliser gl ou utiliser/créer un vecteur et le con-
vertir en factor.
x <- rep ( letters [1:3] , each =10)
x <- as.factor ( x )
# ou de manière équivalente
gl (3 , 10 , labels = letters [1:3])
.
.
Modifier un facteur
On peut vouloir
▶ changer l’ordre des niveaux (p.ex., catégorie de référence pour une
régression),
▶ supprimer un niveau ou regrouper des niveaux (p.ex., équilibrer les
effectifs entre niveaux).
Exemple :
x <- gl (4 , 5 , 100)
relevel (x , ref =4)
levels ( x ) <- 4:1
levels ( x )[1:2] <- " 3 .5 "
.
.
Les erreurs fréquentes
En interne, les facteurs sont stockés sous forme numérique mais on leur
associe des étiquettes (labels) :
as.numeric ( x )
Les “niveaux” d’un facteur sont classés par ordre lexicographique, et la con-
version d’un facteur en nombre peut être délicate parfois.
as.numeric ( f <- factor (1:2 , levels =2:1)[1])
as.numeric ( levels ( f ))[ f ]
Il est recommendé de toujours vérifier que R code bien les données telles
qu’on se les représente !
.
.
Structure de données avancée
Le data.frame est l’objet de base pour gérer des données de type variable
(numeric, factor, etc.). Un data.frame est une collection de vecteurs de
même taille, mais de type possiblement variable.
score <- c (1 ,5 ,3 ,1 ,5 ,2 ,2)
x1 <- c ( " M " ," M " ," F " ," F " ," F " ," F " ," M " )
x2 <- c (92 ,96 ,97 ,93 ,101 ,100 ,97) a
x3 <- c ( " C " ," A " ," C " ," C " ," C " ," B " ," B " )
a <- data.frame ( score , gender = x1 , score gender IQ SES
IQ = x2 , SES = x3 ) 1 M 92 C
dim ( a ) 5 M 96 A
summary ( a )
3 F 97 C
str ( a )
1 F 93 C
as.matrix ( a )
5 F 101 C
2 F 100 B
2 M 97 B
.
.
Adresser les éléments d’un data.frame
Même principe d’adressage que pour de simple vecteurs ou des matrices,
mais on peut accéder aux colonnes nommées avec l’opérateur $ :
a
a [ ,1:2]
a [1:3 , c (2 ,4)] score gender IQ SES
a $ score [1:3] 1 M 92 C
3 F 97 C
with (a , score [ gender == " M " ])
1 F 93 C
# ou de manière équivalente
5 F 101 C
subset (a , gender == " M " ) 2 F 100 B
a $ score [ a $ SES % in % c ( " A " ," C " )] 2 M 97 B
.
.
Propriétés d’un data.frame
Certaines commandes R traitent les data.frame de manière spéciale. Comme
pour les matrices, on peut utiliser :
summary ( a )
str ( a )
dim ( a )
colnames ( a )
mais
rbind (a , c (3 , " M " , 100 , " C " ))
.
.
Opérations sur un data.frame
À ce stade, gender n’est pas considéré comme un facteur :
is.factor ( gender )
Plus généralement,
within ( data , expr , ... )
permet d’opérer sur les variables d’un data.frame et de rendre ces modi-
fications permanentes, contrairement à with qui ne sert qu’à accéder aux
composantes du data.frame (principe d’accès en “lecture seule”).
.
.
Importer des données externes
blood.txt, cereal.csv
Les fonctions read.table et read.csv permettent d’importer des données
tabulées ou csv (séparateur de champs virgule ou point-virgule).
Exemple :
blood <- read.table ( " blood.txt " , header = TRUE )
cereal <- read.csv ( " cereal.csv " )
.
.
Ce qu’il faut retenir
.
.
Index
.
.
Bibliographie
Becker, R. A., & Chambers, J. M. (1981). S: A Language and System for Data Analysis.
Becker, R. A., & Chambers, J. M. (1984). S: An Interactive Environment for Data Analysis
and Graphics. Wadsworth.
Burns, P. (2011, April). The R Inferno. Retrieved from http://www.burns-stat.com
Dalgaard, P. D. (2006). Introductory Statistics with R. Springer.
Falissard, B. (2005). Comprendre et utiliser les statistiques dans les sciences de la vie.
Masson.
Ihaka, R., & Gentleman, R. (1996). R: A language for data analysis and graphics.
Journal of Computational and Graphical Statistics, 5, 299–314.
Logan, M. (2010). Biostatistical Design and Analysis using R. Wiley.
Paradis, E. (2005, Septembre). R pour les débutants. Retrieved from http://cran.r-
project.org
Venables, W. N., & Ripley, B. D. (2002). Modern Applied Statistics with S. Springer.