R L`essentiel - Pearson France

publicité
14
Analyse des données
Ce chapitre décrit un certain nombre de techniques pour analyser les données avec
R. La plupart des fonctions décrites ici permettent de préparer les données pour
d’autres analyses ou sont les briques de base pour d’autres analyses.
Statistiques descriptives
R propose plusieurs fonctions pour calculer les statistiques descriptives.
La fonction mean permet d’obtenir la moyenne d’un vecteur, tandis que les fonctions min et max renvoient, respectivement, la valeur minimale et maximale. À titre
d’exemple, nous utiliserons le jeu de données dow30 que nous avions créé dans la
section "Exemple plus complexe" du Chapitre 12. Ces données sont également
­disponibles dans le package nutshell :
> library(nutshell)
> data(dow30)
> mean(dow30$Open)
[1] 36.24574
> min(dow30$Open)
[1] 0.99
> max(dow30$Open)
[1] 122.45
Dans chacune de ces fonctions, le paramètre na.rm précise le traitement réservé aux
valeurs NA ; par défaut, si un seul élément du vecteur vaut NA, ces fonctions renvoient NA.
Avec na.rm=TRUE, les valeurs NA sont ignorées :
> mean(c(1,2,3,4,5,NA))
[1] NA
> mean(c(1,2,3,4,5,NA),na.rm=TRUE)
[1] 3
Vous pouvez également supprimer les valeurs extrêmes lorsque vous utilisez la
fonction mean. Pour ce faire, servez-vous du paramètre trim pour préciser la fraction
des observations à ôter à chaque extrémité du vecteur.
© 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 291
06/10/11 18:20
292
Partie IV
Statistiques avec R
> mean(c(-1,0:100,2000))
[1] 68.4369
323
> mean(c(-1,0:100,2000),trim=0.1)
[1] 50
Pour calculer le minimum et le maximum en une seule opération, utilisez la fonction
range, qui renvoie un vecteur contenant ces deux valeurs :
> range(dow30$Open)
[1]
0.99 122.45
La fonction quantile permet, quant à elle, de renvoyer les valeurs à différents
percentiles (indiqués par le paramètre probs) :
> quantile(dow30$Open, probs=c(0,0.25,0.5,0.75,1.0))
0%
25%
50%
75%
100%
0.990 19.655 30.155 51.680 122.450
Ce résultat spécifique (minimum, 25e percentile, médiane, 75e percentile et maximum)
peut être obtenu plus simplement, grâce à la fonction fivenum :
> fivenum(dow30$Open)
[1]
0.990 19.650 30.155
51.680 122.450
Pour obtenir l’écart interquartile (la différence entre les valeurs du 25e et du 75e
percentile), utilisez la fonction IQR :
> IQR(dow30$Open)
[1] 32.025
Chacune de ces fonctions a sa propre utilité mais peut également être utilisée avec
apply, tapply ou une autre fonction d’agrégation pour calculer les statistiques d’un
data frame ou des sous-ensembles d’un data frame.
La fonction la plus commode pour obtenir un récapitulatif s’appelle summary. C’est
une fonction générique qui peut s’appliquer à des data frames, des matrices, des
tables, des facteurs et d’autres objets. Voici, par exemple, ce qu’elle produit lorsqu’on
l’applique au jeu de données dow30 :
> summary(dow30)
symbol
Date
MMM
: 252
2008-09-22: 30
AA
: 252
2008-09-23: 30
AXP
: 252
2008-09-24: 30
T
: 252
2008-09-25: 30
BAC
: 252
2008-09-26: 30
BA
: 252
2008-09-29: 30
(Other):5970
(Other)
:7302
Low
Close
Min.
: 0.27
Min.
: 0.75
Open
Min.
: 0.99
1st Qu.: 19.66
Median : 30.16
Mean
: 36.25
3rd Qu.: 51.68
Max.
:122.45
High
Min.
: 1.01
1st Qu.: 20.19
Median : 30.75
Mean
: 36.93
3rd Qu.: 52.45
Max.
:122.88
Volume
:1.336e+06
Min.
Adj.Close
Min.
: 0.75
© 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 292
06/10/11 18:20
Chapitre 14
Analyse des données
1st Qu.: 19.15
Median : 29.55
Mean
: 35.53
3rd Qu.: 50.84
Max.
:121.62
1st Qu.: 19.65
Median : 30.10
Mean
: 36.24
3rd Qu.: 51.58
Max.
:122.11
1st Qu.:1.111e+07
Median :1.822e+07
Mean
:5.226e+07
3rd Qu.:4.255e+07
Max.
:2.672e+09
293
1st Qu.: 19.38
Median : 29.41
Mean
: 35.64
3rd Qu.: 50.97
Max.
:122.11
Comme vous pouvez le constater, summary donne des informations sur chaque
variable du data frame. Pour les valeurs numériques, elle montre les valeurs minimale, du 1er quartile, de la médiane, de la moyenne, du 3e quartile et maximale.
Pour les facteurs, elle affiche le nombre des valeurs les plus fréquentes (les moins
fréquentes sont regroupées dans la catégorie "Other"). Elle ne produit rien d’utile
pour les valeurs caractères.
La fonction stem est un outil commode pour examiner en mode texte la distribution
d’un vecteur numérique :
stem(x, scale = 1, width = 80, atom = 1e-08)
Le paramètre x est le vecteur concerné, scale contrôle la longueur du tracé, width,
sa largeur et atom est un facteur de tolérance.
Examinons par exemple les tentatives de transformation pendant la saison 2005 de
la NFL. Plus précisément, nous voulons étudier les distances des tentatives pour les
transformations ratées. Nous utiliserons donc la fonction subset pour ne sélectionner que les transformations ratées, puis nous afficherons les distances (en yards) des
tentatives qui leur correspondent :
> stem(subset(field.goals, play.type=="FG no")$yards)
The decimal point is at the |
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
60
62
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0
00
0000000
0000000
00000000
000
0000
00000000000000
0000000000
0000000000000000
000000000000
000000000000000000
000000000000000000
000000000000
0000000000000000000
0000
000
00
00
0
© 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 293
06/10/11 18:20
294
Partie IV
Statistiques avec R
Corrélation et covariance
Lorsque l’on analyse des données, il est très fréquent de vouloir savoir si deux
variables sont corrélées. Informellement, la corrélation répond à la question "si
j’augmente (ou diminue) x, est-ce que y augmentera (ou diminuera), et de combien ?". Formellement, elle mesure la dépendance linéaire de deux variables
quelconques. Ses valeurs varient de –1 à 1 ; 1 signifie que l’une des variables
est une fonction linéaire positive de l’autre, 0, que les deux variables ne sont pas
corrélées du tout et -1, que l’une des variables est une fonction linéaire négative
de l’autre (les deux progressent dans des directions totalement opposées ; voir
Figure 14.1).
Figure 14.1
Corrélation.
La mesure de corrélation la plus utilisée est le coefficient de corrélation de Pearson
(c’est la formule qui se cache derrière la fonction CORREL d’Excel) :
r=
 in=1 ( xi – x )( yi – y )
 in=1 ( xi – x )2  in=1 ( yi – y )2
_
_
où x est la moyenne de x et y la moyenne de y. La corrélation de Pearson fonctionne
mieux avec des données qui suivent une distribution normale. Une autre fonction de
corrélation est le coefficient de corrélation de Spearman, qui est non paramétrique
car il ne fait aucune supposition sur la distribution sous-jacente :
r=
n ( Â xi – yi )–( Â xi )( Â yi )
n ( Â x 2i )–( Â xi )2 n ( Â y 2i )–( Â yi )2
Le tau de Kendall, quant à lui, permet d’exprimer la relation entre deux variables
quelconques. Sa formule fonctionne en comparant les rangs des valeurs dans les
deux variables, pas en comparant ces variables elles-mêmes :
t = 1/ 2ncn–( nn–d 1)
© 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 294
06/10/11 18:20
Chapitre 14
Analyse des données
295
Dans cette formule, n est la longueur des deux variables, nc, le nombre de paires
concordantes et nd, le nombre de paires discordantes. Pour calculer les corrélations
avec R, vous disposez de la fonction cor, qui permet d’effectuer chacune de ces
mesures de corrélation que nous venons d’évoquer :
cor(x, y = NULL, use = "everything",
method = c("pearson", "kendall", "spearman"))
Vous pouvez calculer les corrélations entre deux vecteurs (désignés par x et y),
sur un data frame ou sur une matrice ; dans ces deux cas, y=NULL et cor calculeront la corrélation entre chaque paire de variables pour renvoyer une matrice des
résultats.
Le paramètre method précise la formule utilisée pour calculer la corrélation et use
indique comment traiter les valeurs NA : si vous voulez que la fonction déclenche
une erreur en présence de valeurs NA, utilisez use="all.obs" ; si vous voulez qu’elle
renvoie NA si l’un des éléments est NA, choisissez use="everything" ; pour ne pas
tenir compte des valeurs NA, choisissez use="complete.obs" ; pour ne pas tenir
compte des valeurs NA mais renvoyer NA si tous les éléments valent NA, utilisez
use="na.or.complete" ; enfin, pour ne pas tenir compte des paires dont au moins
une des valeurs est NA, choisissez use="pairwise.complete.obs".
Examinons les données sur les naissances de 2006 que nous avions déjà utilisées
auparavant. Plus précisément, nous voulons savoir si la prise de poids de la mère
a un lien avec le poids du bébé. Commençons par ne sélectionner que les poids de
naissance et les prises de poids corrects. Nous exclurons également les naissances
prématurées (j’ai exclu les termes de moins de 35 semaines bien que, techniquement, ce ne soient pas nécessairement des prématurés). Enfin, nous ne gardons que
les naissances d’enfants uniques :
> births2006.cln <- births2006.smpl[
+
!is.na(births2006.smpl$WTGAIN) &
+
!is.na(births2006.smpl$DBWT) &
+
births2006.smpl$DPLURAL=="1 Single" &
+
births2006.smpl$ESTGEST>35,]
Examinons d’abord la relation entre ces deux variables. Comme il y a 3 232 884
observations, un nuage de points normal serait trop difficile à lire. C’est la raison
pour laquelle nous préférons utiliser smoothScatter :
> smoothScatter(births2006.cln$WTGAIN,births2006.cln$DBWT)
Le diagramme obtenu est celui de la Figure 14.2. En l’étudiant, nous pouvons nous
attendre à constater une légère corrélation (nous n’en attendons pas une très forte à
cause de la forte concentration au centre, mais celle-ci est peu inclinée). Calculons
la corrélation de Pearson :
> cor(births2006.cln$WTGAIN,births2006.cln$DBWT)
[1] 0.1750655 © 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 295
06/10/11 18:20
296
Partie IV
Statistiques avec R
Puis la corrélation de Spearman :
> cor(births2006.cln$WTGAIN,births2006.cln$DBWT,method="spearman")
[1] 0.1783328
Comme vous pouvez le voir, ces deux mesures indiquent que ces deux variables
sont faiblement corrélées.
La covariance est un concept intimement lié. Elle est définie par la formule suivante :
cov ( x , y) = E [ ( x – E [ x ])( y – E [ x ])]
qui est le numérateur de la formule de la corrélation de Pearson. En R, vous pouvez
calculer la covariance à l’aide de la fonction cov, qui attend les mêmes paramètres
que cor :
cov(x, y = NULL, use = "everything",
method = c("pearson", "kendall", "spearman"))
Si vous disposez d’une matrice de covariance, vous pouvez utiliser la fonction
cov2cor pour en déduire la matrice de corrélation.
Vous pouvez également calculer les mesures de covariance pondérée à l’aide de la
fonction cov.wt :
6000
4000
2000
births2006.cln$DBWT
8000
cov.wt(x, wt = rep(1/nrow(x), nrow(x)), cor = FALSE,
center = TRUE, method = c("unbiased", "ML"))
0
20
40
60
80
100
births2006.cln$WTGAIN
Figure 14.2
Graphe des poids de naissance en fonction de la prise de poids de la mère.
© 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 296
06/10/11 18:20
Chapitre 14
Analyse des données
297
Analyse en composantes principales
L’analyse en composantes principales est une autre technique d’étude des données.
Elle consiste à transformer un ensemble de variables éventuellement corrélées en un
ensemble de variables non corrélées.
En R, l’analyse en composantes principales est disponible via la fonction prcomp du
package stats :
## Méthode S3 pour la classe ‘formula’:
prcomp(formula, data = NULL, subset, na.action, ...)
## Méthode S3 par défaut :
prcomp(x, retx = TRUE, center = TRUE, scale. = FALSE,
tol = NULL, ...)
Voici une description de ses paramètres.
Paramètre
Description
Valeur par défaut
formula
Formule sans variable de réponse, utilisant
les colonnes d’un data frame utilisé dans
l’analyse.
data
Data frame facultatif contenant les données
indiquées dans la formule.
subset
Vecteur facultatif indiquant les observations
à inclure dans l’analyse.
na.action
Fonction indiquant comment traiter les
valeurs NA.
x
Matrice numérique ou complexe fournissant
les données de l’analyse.
retx
Valeur logique précisant s’il faut renvoyer les
variables après rotation.
TRUE
center
Valeur logique indiquant si les valeurs
doivent être centrées(moyenne=0).
TRUE
scale
Valeur logique précisant si les valeurs doivent
être réduites (variance=1).
TRUE
tol
Tolérance en dessous de laquelle les
composantes seront ignorées.
NULL
...
Paramètres supplémentaires passés aux
autres méthodes.
Essayons l’analyse en composantes principales sur une matrice de données pour
les équipes de base-ball. Nous commencerons par charger les données de chaque
© 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 297
06/10/11 18:20
298
Partie IV
Statistiques avec R
équipe pour la période comprise entre 2000 et 2008. Pour cela, nous utiliserons la
base de données SQLite du Chapitre 11 et nous extrairons les champs dont nous
avons besoin à l’aide d’une requête SQL :
>
>
>
+
+
+
+
+
+
+
+
+
+
+
+
+
library(RSQLite)
drv <- dbDriver("SQLite")
con <- dbConnect(drv,
dbname=paste(.Library, "/nutshell/data/bb.db", sep=""))
team.batting.00to08 <- dbGetQuery(con,
paste(
‘SELECT teamID, yearID, R as runs, ‘,
‘
H-"2B"-"3B"-HR as singles, ‘,
‘
"2B" as doubles, "3B" as triples, HR as homeruns, ‘,
‘
BB as walks, SB as stolenbases, CS as caughtstealing, ‘,
‘
HBP as hitbypitch, SF as sacrificeflies, ‘,
‘
AB as atbats ‘,
‘
FROM Teams ‘,
‘
WHERE yearID between 2000 and 2008’
)
)
Vous trouverez également ces informations déjà chargées dans le jeu de données
team.batting.00to08 du package nutshell. Nous analyserons bientôt les runs de
ces équipes mais, pour le moment, nous allons appliquer l’analyse en composantes
principales aux autres variables de la matrice :
> batting.pca <- princomp(~singles+doubles+triples+homeruns+
+
walks+hitbypitch+sacrificeflies+
+
stolenbases+caughtstealing,
+
data=team.batting.00to08)
> batting.pca
Call:
princomp(formula = ~singles + doubles + triples + homeruns +
walks + hitbypitch + sacrificeflies + stolenbases + caughtstealing,
data = team.batting.00to08)
Standard deviations:
Comp.1
Comp.2
Comp.3
Comp.4
Comp.5
Comp.6
Comp.8
74.900981 61.871086 31.811398 27.988190 23.788859 12.884291
8.283972
Comp.9
7.060503
9
variables and
Comp.7
9.150840
270 observations.
© 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 298
06/10/11 18:20
Chapitre 14
Analyse des données
299
La fonction princomp renvoie un objet princomp. Vous pouvez obtenir des informations sur l’importance de chacun des composantes en appelant la fonction
summary :
> summary(batting.pca)
Importance of components:
Comp.1
Comp.2
Comp.3
Comp.4
Comp.5
Standard deviation
74.9009809 61.8710858 31.8113983 27.98819003 23.78885885
Proportion of Variance 0.4610727 0.3146081 0.0831687 0.06437897 0.04650949
Cumulative Proportion
0.4610727 0.7756807 0.8588494 0.92322841 0.96973790
Comp.6
Comp.7
Comp.8
Comp.9
Standard deviation
12.88429066 9.150840397 8.283972499 7.060503344
Proportion of Variance 0.01364317 0.006882026 0.005639904 0.004096998
Cumulative Proportion
0.98338107 0.990263099 0.995903002 1.000000000
Pour visualiser la contribution de chaque variable aux composantes, utilisez la
fonction loadings : > loadings(batting.pca)
Loadings:
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Comp.9
singles
-0.313 0.929 -0.136
0.136
doubles
-0.437 0.121 -0.877
-0.100
triples
0.424 0.775 -0.449
homeruns
0.235
-0.383 0.825 0.324
walks
0.914 0.328 0.150 -0.182
hitbypitch
-0.989
sacrificeflies
0.321 0.330 0.882
stolenbases
0.131 0.758 0.502 -0.307
-0.232
caughtstealing
0.208 0.104
0.813 -0.521 -0.105
SS loadings
Proportion Var
Cumulative Var
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5 Comp.6 Comp.7 Comp.8 Comp.9
1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
0.111 0.111 0.111 0.111 0.111 0.111 0.111 0.111 0.111
0.111 0.222 0.333 0.444 0.556 0.667 0.778 0.889 1.000
Il existe une fonction plot pour les objets princomp qui affiche un histogramme de
la variance par rapport à chaque composante principale :
> plot(batting.pca)
Le résultat est montré à la Figure 14.3. Une autre fonction utile pour visualiser les
composantes principales consiste à utiliser un biplot (représenté à la Figure 14.4) :
> biplot(batting.pca,cex=0.5,col=c("gray50","black"))
© 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 299
06/10/11 18:20
300
Partie IV
Statistiques avec R
1000 2000 3000 4000 5000
0
Variances
batting.pca
Comp.1
Comp.3
Comp.5
Comp.7
Comp.9
Figure 14.3
Histogramme de batting.pca.
−0.1
7
0.0
0.1
500 1000
219
0
0.1
0.0
−0.1
4119
500 1000
singles
188
248
221
269 122
217 121
229
71
232
131
189
13
61
212 159256
101
4
234
181
202
239
49
152
215
257
242
148
93
9
175
211
11
264
253
123
16 118
6 8 98187 157
125
walks
35106226
69
170
218
183
249
262
149
10 29
21
99
1 120
75130
79
97 92251
182235
18
247
191
214
3
194
184
80
263179
30 146
245
117
227186
177
104
stolenbases
190 136
169
162246
91 102
27
193
150
222
doubles
90
25
20
220205
158
254
sacrificeflies
268 37
142
259
160
207
126
88
129
12
triples
caughtstealing
38
252 45
164206
199
39 140
43
31
228
hitbypitch
5811617
209
238
homeruns
139
28
185
155
19585127
110
231
81 76
14
128
105
119
51
241
15
216197
270
141
60
56
89
134
44
70210
84
4668
156
67
176
73
42 82
22 40
240
151
64
266
196
59
109 201
111
153
48
86
33
113114
236
178
154
223
32
161
244
36
103
261
147
165
132
198
267
2678
24
72167
166
174
230
47204
55
74
50
34
83
124
137
107
172
250
200
243
171
163
95
168
143
224
135
23
108
144
133
94
52
237173
138
265100
180
208
115 96
203
145 54 192
213
77 258
87
112
65
233
57
260
66
255263225 53
62
5
Comp.2
0
−1000 −500
0.2
−1000 −500
0.2
Comp.1
Figure 14.4
Biplot de batting.pca.
Un biplot représente graphiquement les contributions de chaque variable à une
paire de composantes principales et montre également sur le même graphique les
observations individuelles. Ici, nous voyons la contribution de chaque variable aux
composantes 1 et 2 ; les observations individuelles apparaissent en gris pour que l’on
voie mieux l’ensemble des projections. Comme vous pouvez le constater, singles et
walk sont les principaux contributeurs des deux premières composantes.
© 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 300
06/10/11 18:20
Chapitre 14
Analyse des données
301
Nous reviendrons plus en détail sur cet exemple dans la section "Exemple : un
modèle linéaire simple" du Chapitre 17.
Notez qu’il existe une fonction princomp qui produit le même résultat mais en procédant différemment puisqu’elle calcule les composants principaux en appliquant
la fonction eigen sur la matrice de corrélation ou de covariance produite par la
fonction cor. Cette fonction a été incluse pour assurer la compatibilité avec S-PLUS
(elle produit le même résultat que la fonction équivalente en S-PLUS). Pour plus
d’informations sur princomp, consultez son fichier d’aide.
Analyse factorielle
Dans la plupart des problèmes d’analyse de données, il y a certaines quantités
que nous pouvons observer et d’autres que nous ne pouvons pas. Les exemples
classiques viennent des sciences sociales : on ne peut pas mesurer directement
un concept abstrait comme l’intelligence, mais on peut l’évaluer à l’aide de différents tests. L’analyse factorielle permet d’analyser un ensemble de scores de
tests (les valeurs observées) pour essayer de déterminer l’intelligence (la valeur
cachée).
Elle est disponible en R via la fonction factanal du package stats :
factanal(x, factors, data = NULL, covmat = NULL, n.obs = NA,
subset, na.action, start = NULL,
scores = c("none", "regression", "Bartlett"),
rotation = "varimax", control = NULL, ...)
Voici une description de ses paramètres.
Paramètre
Description
Valeur par défaut
x
Formule ou matrice numérique utilisée pour
l’analyse.
factors
Nombre de facteurs à retenir.
data
Data frame dans lequel évaluer x (si x est une
formule).
NULL
covmat
Matrice de covariance (ou liste renvoyée par
cov.wt).
NULL
n.obs
Nombre d’observations (si le paramètre covmat
a été fourni).
NA
subset
Observations à inclure dans l’analyse.
© 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 301
06/10/11 18:20
302
Partie IV
Statistiques avec R
Paramètre
Description
na.action
Fonction précisant comment traiter les valeurs
NA (si x est une formule).
start
Matrice de valeurs de départ pour l’algorithme.
scores
Chaîne de caractères indiquant le type de
scores à produire. Vous pouvez utiliser
scores="none" pour aucun score,
scores="regression" pour des scores de
Thompson ou "scores="Bartlett" pour des
scores de moindres carrés pondérés au sens de
Bartlett.
rotation
Chaîne de caractères nommant la fonction
permettant de faire tourner les facteurs.
control
Liste de valeurs de contrôle pour la
détermination des facteurs.
Valeur par défaut
NULL
"varimax"
Rééchantillonnage par bootstrap
Lorsqu’ils étudient des statistiques, les analystes se demandent souvent si elles
sont sensibles à quelques valeurs extrêmes. Obtiendrait-on un résultat similaire
si l’on supprimait quelques points ? Quel est l’écart des valeurs pour ces statistiques ? On peut résoudre ce problème en utilisant une technique appelée
rééchantillonnage.
Formellement, le rééchantillonnage par bootstrap est une technique permettant
d’évaluer le biais d’un estimateur. Un estimateur est une statistique calculée à partir
d’un échantillon et qui fournit une estimation de la vraie valeur sous-jacente ; c’est
souvent une moyenne, un écart-type ou un paramètre caché.
Le bootstrap fonctionne en sélectionnant répétitivement des observations quelconques dans un échantillon (avec remplacement) et en recalculant la statistique. En
R, vous pouvez utiliser le rééchantillonnage par bootstrap grâce à la fonction boot
du package boot :
library(boot)
boot(data, statistic, R, sim="ordinary", stype="i",
strata=rep(1,n), L=NULL, m=0, weights=NULL,
ran.gen=function(d, p) d, mle=NULL, simple=FALSE, ...)
© 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 302
06/10/11 18:20
Chapitre 14
Analyse des données
303
Les paramètres de boot sont les suivants.
Paramètre
Description
Valeur par défaut
data
Vecteur, matrice ou data frame contenant les
données étudiées.
statistic
Fonction appliquée à data et qui renvoie
un vecteur contenant les statistiques
intéressantes. Cette fonction a deux
paramètres : les données sources et un vecteur
précisant les valeurs à sélectionner à chaque
itération du bootstrap. Ce second paramètre
est défini par stype.
R
Nombre d’itérations du bootstrap.
sim
Chaîne de caractères précisant le type de
la simulation : "ordinary", "parametric",
"balanced", "permutation" ou "antithetic".
"ordinary"
stype
Chaîne de caractères indiquant ce que
représente le second paramètre de la fonction
statistic. Ses valeurs possibles sont "i"
(indices), "f" (fréquences) et "w" (poids).
"i"
strata
Vecteur d’entiers ou facteur précisant les
strates pour les problèmes multi-échantillons.
rep(1, n)
l
Vecteur des coefficients d’influence
évalués pour les observations (quand
sim="antithetic").
NULL
m
Nombre de prédictions à chaque itération du
bootstrap.
0
weights
Vecteur numérique contenant les poids des
données.
NULL
ran.gen
Fonction décrivant comment produire les
valeurs aléatoires (quand sim="parametric").
mle
Second paramètre passé à ran.gen ;
généralement, c’est un estimateur du
maximum de vraisemblance.
NULL
simple
Méthode pour produire les valeurs aléatoires.
simple=TRUE choisit les valeurs à chaque
itération, ce qui permet d’économiser de la
mémoire, mais est plus lent.
FALSE
...
Paramètres supplémentaires passés à
statistic.
function(d, p) d
© 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 303
06/10/11 18:20
304
Statistiques avec R
Partie IV
Comme exemple d’utilisation, étudions des prix de vente de maisons. Généralement, les médias évoquent les prix de vente médians dans une région ; nous allons
nous servir d’un bootstrap pour étudier la qualité de la médiane comme estimateur :
> b <- boot(data=home.sale.prices.june2008,
+
statistic = function(d,i) {median(d[i])},
+
R=1000)
> b
ORDINARY NONPARAMETRIC BOOTSTRAP
Call:
boot(data = home.sale.prices.june2008, statistic = function(d,
i) {
median(d[i])
}, R = 1000)
Bootstrap Statistics :
original bias
std. error
t1*
845000 -3334
23287.27
La fonction boot nous montre donc que la médiane est un estimateur très légè­
rement biaisé. © 2011 Pearson Education France – R, L'essentiel – Joseph Adler
Livre R-Essentiel.indb 304
06/10/11 18:20
Téléchargement