Le logiciel R
Pierre Lafaye de Micheaux
Rémy Drouilhet
Benoît Liquet
Springer
Avant-proposIX
Liste des figuresXXIX
Liste des tableauxXXXIII
Notations mathématiquesXXXV
A Présentation du logiciel R1
A.1 Présentation du logiciel1
A.1.1 Origines1
A.1.2 Pourquoi utiliser R ?1
A.2 R et les statistiques3
A.3 R et les graphiques4
A.4 L'interface graphique de R (GUI)5
A.5 Mes premiers pas en R6
A.5.1 Utilisation de RCommander6
A.5.1.1 Lancement de RCommander6
A.5.1.2 Manipulation de données avec RCommander8
A.5.1.3 Quelques manipulations statistiques avec RCommander13
A.5.1.4 Rajouter des fonctionnalités à l'interface de RCommander19
A.5.2 Utiliser R via la console20
A.5.2.1 La force de R illustrée sur un exemple21
A.5.2.2 Un survol de la syntaxe de R via des commandes à taper25
B Quelques jeux de données et problématiques31
B.1 Indice de masse corporelle (IMC) chez des enfants31
B.2 Poids de naissance32
B.3 Épaisseur de l'intima-média33
B.4 Alimentation chez des personnes âgées34
B.5 Étude cas témoins sur l'infarctus du myocarde35
B.6 Tableau résumant l'utilisation des jeux de données36
I Les bases du logiciel R37
1 Les concepts de base, l'organisation des données39
1.1 Votre première session39
1.1.1 R est une calculatrice40
1.1.2 Affichage des résultats et redirection dans des variables41
1.1.3 Stratégie de travail43
1.1.4 Utilisation de fonctions47
1.2 Les données dans R50
1.2.1 Nature (ou type, ou mode) des données50
1.2.1.1 type numérique (numeric)50
1.2.1.2 (...) Type complexe (complex)51
1.2.1.3 Type booléen ou logique (logical)52
1.2.1.4 Données manquantes (NA)52
1.2.1.5 Type chaînes de caractères (character)53
1.2.1.6 (...) Données brutes (raw)54
Récapitulatif54
1.2.2 Structures de données55
1.2.2.1 Les vecteurs (vector)55
1.2.2.2 Les matrices (matrix), les tableaux (arrays)56
1.2.2.3 Les listes (list)58
1.2.2.4 Le tableau individus X variables (data.frame)59
1.2.2.5 Les facteurs (factor) et les variables ordinales (ordered)60
1.2.2.6 Les dates62
1.2.2.7 Les séries temporelles62
Récapitulatif63
Termes à retenir64
Exercices64
Fiche de TP65
2 Importation-exportation et production de données67
2.1 Importer des données67
2.1.1 Importer des données depuis un fichier texte ASCII67
2.1.1.1 Lecture de données avec read.table()68
2.1.1.2 Lecture de données avec read.ftable ()71
2.1.1.3 Lecture de données avec la fonction scan ()72
2.1.2 Importer des données depuis excel ou le tableur d'OpenOffice73
2.1.2.1 Utiliser le copier-coller73
2.1.2.1 Passer par un fichier ASCII intermédiaire74
2.1.2.3 Utiliser des packages spécialisés74
2.1.3 Importer des données depuis SPSS, Minitab, SAS ou Matlab75
2.1.4 Les gros fichiers de données75
2.2 Exporter des données77
2.2.1 Exporter des données vers un fichier texte ASCII77
2.2.2 Exporter des données vers Excel ou OpenOffice Calc77
2.3 Création de données77
2.3.1 Entrer des données jouets77
2.3.2 Générer des données pseudo-aléatoires79
2.3.3 Entrer des données issues d'un support papier79
2.4 (...) Lecture / écriture dans les bases de données81
2.4.1 Créer une base de données et une table81
2.4.2 Créer une source de données compatible avec MySQL82
2.4.3 Écrire dans une table83
2.4.4 Lire dans une table84
Termes à retenir85
Exercices85
Fiche de TP86
3 Manipulation de données, fonctions91
3.1 Opérations sur les vecteurs, matrices et listes91
3.1.1 Arithmétique vectorielle91
3.1.2 Le recyclage92
3.1.3 Fonctions basiques93
3.1.4 Opérations sur les matrices ou les data.frames94
3.1.4.1 Informations sur l'architecture94
3.1.4.2 Fusion de tables95
3.1.4.3 La fonction apply ()99
3.1.4.4 La fonction sweep ()100
3.1.4.5 La fonction stack ()100
3.1.4.6 La fonction aggregate ()101
3.1.4.7 La fonction transform ()102
3.1.5 Opérations sur les listes102
3.2 Opérations logiques et relationnelles103
3.3 Opérations ensemblistes105
3.4 Extraction et insertion d'éléments106
3.4.1 Extraction/Insertion dans les vecteurs106
3.4.2 Extraction/Insertion dans les matrices108
3.4.3 Extraction/Insertion dans les arrays112
3.4.4 Extraction/Insertion dans les listes113
3.5 Manipulation de chaînes de caractères116
3.6 Manipulation de dates de d'unités de temps119
3.6.1 Affichage de la date courante119
3.6.2 Extraction de dates119
3.6.3 Opérations sur des dates121
3.7 Structures de contrôle123
3.7.1 Instructions de condition124
3.7.2 Instructions de boucles127
3.8 Création de fonctions129
3.9 (...) Représentation des nombres à virgule fixe, flottante136
3.9.1 Représentation d'un nombre à l'aide d'une base137
3.9.2 Représentation à virgule flottante138
3.9.2.1 Définitions138
3.9.2.2 Limite de cette représentation due à la mantisse139
3.9.2.3 Éviter certaines chausse-trappes numériques140
3.9.2.4 Limite de cette représentation due à l'exposant142
Termes à retenir145
Exercices145
Fiche de TP147
4 R et sa documentation153
4.1 Aide intégrée au logiciel R153
4.1.1 La commande help ()153
4.1.2 Quelques commandes complémentaires155
4.2 (...) Aide accessible sur l'Internet157
4.2.1 Moteurs de recherche158
4.2.2 Forums de discussion158
4.2.3 Listes de diffusion (mailing lists)158
4.2.4 Discussion relayée par l'Internet (IRC)159
4.2.5 Wiki159
4.3 (...) Littérature sur R159
4.3.1 Sur le web159
4.3.2 En format papier160
Termes à retenir161
Exercices161
Fiche de TP161
5 Techniques pour tracer des courbes et des graphiques163
5.1 Les fenêtres graphiques163
5.1.1 Fenêtre graphique de base, manipulation, sauvegarde163
5.1.2 Découpage de la fenêtre graphique : layout ()165
5.2 Les fonctions de tracé de bas niveau168
5.2.1 Les fonctions plot () et points ()168
5.2.2 Les fonctions segments (), lignes () et abline ()170
5.2.3 La fonction arrows ()172
5.2.4 La fonction polygon ()173
5.2.5 La fonction curve ()173
5.2.6 La fonction box ()174
5.3 La gestion des couleurs175
5.3.1 La fonction colors ()175
5.3.2 Le codage hexadécimal des couleurs176
5.3.3 La fonction image ()179
5.4 L'ajout de texte181
5.4.1 La fonction text ()181
5.4.2 La fonction mtext ()182
5.5 Titres, axes et légendes183
5.5.1 La fonction title ()183
5.5.2 La fonction axis ()185
5.5.3 La fonction legend ()186
5.6 L'interaction avec le graphique187
5.6.1 La fonction locator ()187
5.6.2 La fonction identify ()188
5.7 (...) La gestion fine des paramètres graphiques : par ()188
5.8 (...) Graphiques avancés : rgl, lattice et ggplot2200
Termes à retenir202
Exercices202
Fiches de TP204
6 Programmation en R209
6.1 Préambule209
6.2 Développer des fonctions210
6.2.1 Mise en route rapide : déclaration, création et appel de fonctions210
6.2.2 Concepts de base sur les fonctions211
6.2.2.1 Corps de fonction211
6.2.2.2 Liste de paramètres formels et effectifs211
6.2.2.3 Objet retourné par une fonction215
6.2.2.4 Portée des variables dans le corps de la fonction217
6.2.3 Application à la problématique219
6.2.4 Opérateurs220
6.2.5 Le R vu comme un langage fonctionnel222
6.3 (...) programmation orientée objets223
6.3.1 Comment fonctionne le mécanisme orienté objet du R223
6.3.1.1 Classe d'un objet et déclaration d'un objet223
6.3.1.1 Déclaration et utilisation d'une méthode d'un objet224
6.3.1.2 Déclaration et utilisation d'une méthode d'un objet224
6.3.2 Retour à la problématique228
6.3.3 Information sur les méthodes230
6.3.4 Héritage de classe232
6.4 (...) Aller plus loin en programmation R236
6.4.1 Attributs R236
6.4.1.1 Attribut class237
6.4.1.2 Attribut dim238
6.4.1.3 Attributs names et dimnames241
6.4.2 Autres objets R244
6.4.2.1 Expression R244
6.4.2.2 Formule R247
6.4.2.3 Environnement R249
6.5 (...) Interfacer R et C/C++ ou Fortran251
6.5.1 Création et exécution d'une fonction C/C++ ou Fortran253
6.5.2 Appel du code C/C++ (ou Fortran) depuis R260
6.5.3 Appel de librairies C/C++ ou Fortran externes265
6.5.3.1 L'API R266
6.5.3.2 La librairie newmat269
6.5.3.3 Les librairies Blas et Lapack271
6.5.3.4 Mélanger des librairies C/C++ et Fortran274
6.5.4 Appel d'un code R depuis un programme C/C++ appelé par R276
6.5.5 Appel d'un code R depuis un programme Fortran278
6.5.6 Quelques fonctions utiles278
6.6 (...)Dégogage de fonctions279
6.6.1 Débogage de fonctions en R pur279
6.6.2 Erreur dans le code R281
6.6.3 Erreur dans le code C/C++ ou Fortran282
6.6.4 Débogage avec GDB283
6.6.4.1 Débogage avec Emacs286
6.6.4.2 Débogage avec DDD289
6.6.4.3 Débogage avec Insight290
6.6.4.4 Détection de fuites de mémoire294
6.7 Calcul parallèle et calculs sur cartes graphiques297
6.7.1 Calcul parallèle297
6.7.2 Calcul sur cartes graphiques299
Termes à retenir301
Exercices301
Fiche de TP303
7 Maintenance des sessions309
7.1 Les commandes R, les objets et leur stockage309
7.2 Environnement de travail : les fichiers d'extension .RData311
7.3 Historique des commandes : les fichiers d'extension .Rhistory314
7.4 Sauvegarder des graphiques315
7.5 La gestion des packages316
7.6 La gestion des chemins d'accès aux objets R317
7.7 (...) Autres commandes utiles319
7.8 (...) La gestion de la mémoire320
7.8.1 Organisation de la mémoire vive321
7.8.2 Accéder à la mémoire321
7.8.2.1 Problèmes causés par la gestion mémoire des entiers322
7.8.2.2 Allocation consécutive de la mémoire324
7.8.3 Taille des objets dans R326
7.8.4 Quantité totale de mémoire utilisée par R327
7.8.5 Quelques recommandations329
7.9 (...) Utiliser R en mode Batch331
7.10 (...) Création d'un package R simplifié332
Termes à retenir335
Exercices335
Fiche de TP336
II Mathématiques et statistiques élémentaires339
8 Mathématiques de base : calcul matriciel, intégration, optimisation341
8.1 Les fonctions mathématiques de base342
8.2 Calcul matriciel343
8.2.1 Opérations de base344
8.2.2 Produit extérieur346
8.2.3 Produit de Kronecker347
8.2.4 Matrices triangulaires347
8.2.5 Opérateurs vec et demi-vec348
8.2.6 Déterminant, trace, nombre de conditionnement348
8.2.7 Données centrées, données réduites349
8.2.8 Calcul des valeurs propres et vecteurs propres350
8.2.9 Racine carrée d'une matrice hermitienne définie positive350
8.2.10 Décomposition en valeurs singulières351
8.2.11 Décomposition de Cholesky352
8.2.12 Décomposition QR353
8.3 Intégration numérique353
8.4 Dérivation354
8.4.1 Dérivation symbolique354
8.4.2 Dérivation numérique355
8.5 Optimisation356
8.5.1 Fonctions d'optimisation356
8.5.2 Racines d'une fonction360
Termes à retenir361
Exercices361
Fiche de TP362
9 Statistique descriptive367
9.1 Introduction367
9.2 Structuration des variables suivant leur type368
9.2.1 Structurer les variables qualitatives369
9.2.2 Structurer les variables ordinales371
9.2.3 Structurer les variables quantitatives discrètes371
9.2.4 Structurer les variables quantitatives continues371
9.3 Tableaux de données372
9.3.1 Tableaux des données individuelles372
9.3.2 Tableaux des effectifs ou des fréquences d'une variable372
9.3.3 Tableaux de données regroupées en classes373
9.3.4 Tableaux croisant deux variables373
9.3.4.1 Tableaux de contingence373
9.3.4.2 Distribution conjointe374
9.3.4.3 Distributions marginales375
9.3.4.4 Distributions conditionnelles375
9.4 Résumés numériques376
9.4.1 Résumés de position d'une distribution377
9.4.1.1 Le (ou les) mode(s)377
9.4.1.2 La médiane377
9.4.1.3 La moyenne379
9.4.1.4 Les fractiles379
9.4.2 Résumés de dispersion d'une distribution380
9.4.3 Résumés de forme d'une distribution381
9.5 Mesures d'association381
9.5.1 Mesures de liaison entre deux variables qualitatives381
9.5.1.1 La statistiques du X2 de Pearson381
9.5.1.2 Phi2, V de Cramér et coefficient de contingence de Pearson382
9.5.2 Mesures de liaison entre des variables ordinales (ou des rangs)383
9.5.2.1 Le tau et le tau(...) de Kendall383
9.5.2.2 Coefficient (...) de corrélation des rangs de Spearman384
9.5.3 Mesures de liaison entre deux variables quantitatives385
9.5.3.1 Covariance et coefficient de corrélation de Pearson385
9.5.4 Mesures de liaison entre une variable quantitative et une variable qualitative385
9.5.4.1 Le rapport de corrélation (...)385
9.6 Représentations graphiques386
9.6.1 Graphiques pour les variables qualitatives387
9.6.1.1 Diagramme en croix387
9.6.1.2 Diagramme en tuyaux d'orgue388
9.6.1.3 Diagramme de Pareto389
9.6.1.4 Diagramme empilé390
9.6.1.5 Diagramme circulaire391
9.6.2 Graphiques pour les variables ordinales392
9.6.2.1 Diagramme en tuyaux d'orgue avec courbe des fréquences cumulées392
9.6.3 Graphiques pour les variables quantitatives discrètes392
9.6.3.1 Diagramme en croix392
9.6.3.2 Diagramme en bâtons393
9.6.3.3 Graphe de la fonction de répartition empirique393
9.6.3.4 Diagramme en tiges et feuilles394
9.6.3.5 Boîte à moustaches (boxplot)394
9.6.4 Graphiques pour les variables quantitatives continues396
9.6.4.1 Graphe de la fonction de répartition empirique396
9.6.4.2 Diagramme en tiges et feuilles397
9.6.4.3 Boîte à moustaches398
9.6.4.4 Histogramme en densité à amplitudes de classes égales ou inégales398
9.6.4.5 Polygone des fréquences400
9.6.4.6 Polygone des fréquences cumulées400
9.6.5 Représentations graphiques dans un cadre bivarié401
9.6.5.1 Croisement de deux variables qualitatives401
9.6.5.2 Croisement de deux variables quantitatives404
9.6.5.3 Croisement d'une variable qualitative et d'une variable quantitative405
Termes à retenir406
Exercices406
Fiche de TP407
10 Variables aléatoires, lois et simulations : une meilleure compréhension grâce aux spécificités de R411
10.1 Notions sur la génération de nombres au hasard411
10.2 La notion de variable aléatoire413
10.2.1 Réalisations d'une variable aléatoire et loi de fonctionnement413
10.2.2 Variable aléatoires i.i.d.415
10.2.3 Caractériser la loi d'une variable aléatoire416
10.2.3.1 Densité, fonction de répartition, fonction quantile417
10.2.4 Paramètres de la loi d'une variable aléatoire420
10.3 Loi des grands nombres et théorème de la limite centrale423
10.3.1 Loi des grands nombres423
10.3.2 Théorème de la limite centrale424
10.4 La statistique inférentielle425
10.4.1 Estimation (ponctuelle) de paramètres425
10.4.2 La fonction de répartition empirique427
10.4.3 Estimation par la méthode du maximum de vraisemblance428
10.4.4 Fluctuation d'échantillonnage et qualités d'un estimateur430
10.5 Quelques techniques de simulation (d'une loi)432
10.5.1 Simuler à partir d'une autre loi433
10.5.2 Méthode de la transformation inverse433
10.5.3 Méthode du rejet434
10.5.4 Simulation de variables aléatoires discrètes435
10.6 La méthode du bootstrap435
10.7 Lois usuelles et moins usuelles436
10.7.1 Lois usuelles436
10.7.2 (...) Lois moins usuelles439
10.8 Modélisation d'un phénomène440
Termes à retenir444
Exercices444
Fiche de TP444
11 Intervalles de confiance et tests d'hypothèses449
11.1 Notations449
11.2 Intervalles de confiance450
11.2.1 Intervalles de confiance pour une moyenne451
11.2.2 Intervalles de confiance pour une proportion452
11.2.3 Intervalles de confiance pour une variance453
11.2.4 Intervalles de confiance pour une médiane455
11.2.5 Intervalle de confiance pour un coefficient de corrélation456
11.2.6 Tableau récapitulatif des intervalles de confiance456
11.3 Tests d'hypothèses usuels457
11.3.1 Tests paramétriques459
11.3.1.1 Tests de moyenne459
11.3.1.2 Tests de variance462
11.3.1.3 Tests de proportion464
11.3.1.4 Tests de coefficient de corrélation467
11.3.2 Tests d'indépendance468
11.3.2.1 Text du X2 d'indépendance468
11.3.2.2 Test du X2 de Yates470
11.3.2.3 Test de Fisher exact471
11.3.3 Tests non paramétriques472
11.3.3.1 Tests d'adéquation472
11.3.3.2 Tests de position476
11.3.4 Tableau récapitulatif des tests usuels481
11.4 Autres tests d'hypothèses481
Termes à retenir483
Exercices483
Fiche de TP484
12 Régression linéaire simple et multiple489
12.1 Introduction489
12.2 La régression linéaire simple491
12.2.1 Objectif et modèle491
12.2.2 Ajustement sur des données491
12.2.3 Intervalle de confiance et de prédiction pour une nouvelle valeur496
12.2.4 Analyse des résidus499
12.2.5 Tests de Student pour des moyennes et modèle linéaire502
12.2.6 Récapitulatif503
12.3 La régression linéaire multiple504
12.3.1 Objectif et modèle504
12.3.2 Ajustement sur des données504
12.3.3 Intervalle de confiance et de prédiction pour une nouvelle valeur509
12.3.4 Test d'une sous-hypothèse linéaire : test de Fisher partiel509
12.3.5 Cas des variables qualitatives à plus de deux modalités510
12.3.6 Interaction entre les variables514
12.3.7 Problème de la colinéarité518
12.3.8 Sélection de variables519
12.3.9 Analyse des résidus528
12.3.10 Cas de la régression polynomiale535
12.3.11. Récapitulatif535
Termes à retenir536
Exercices536
Fiche de TP537
13 Analyse de variance élémentaire541
13.1 Analyse de la variance à un facteur541
13.1.1 Les objectifs, les données et le modèle541
13.1.2 Exemple et inspection graphique542
13.1.3 Table d'ANOVA et estimations des paramètres544
13.1.4 Validation des hypothèses547
13.1.5 Comparaisons multiples et contrastes548
13.1.6 Récapitulatif551
13.2 Analyse de la variance à deux facteurs552
13.2.1 Objectifs, données et modèle552
13.2.2 Exemple et inspection graphique553
13.2.3 Table d'ANOVA, tests et estimation des paramètres555
13.2.4 Validation des hypothèses558
13.2.5 Contrastes559
13.2.6 Récapitulatif560
13.3 Analyse de variance à mesures répétées561
13.3.1 Modèle à un facteur à mesures répétées562
13.3.2 Modèle à deux facteurs à mesures répétées sur les deux facteurs563
13.3.3 Modèle à deux facteurs à mesures répétées sur un seul facteur565
Termes à retenir567
Exercices567
Fiche de TP567
Annexes : installation du logiciel R et des packages R573
C.1 Installation de R sous Microsoft Windows573
C.2 Installation de packages supplémentaires574
C.2.1 Installation à partir d'un fichier situé sur le disque574
C.2.2 Installation directement depuis l'Internet575
C.2.3 Installation depuis la ligne de commande576
C.2.4 Installation de package sous Linux577
C.3 Changement des packages installés578
Références581
Index général585
Index des commandes et des symboles R595
Index des auteurs609
Liste des packages R mentionnés dans le livre611
Solutions des exercices613
Solutions des TPs625