Vous êtes sur la page 1sur 456

Comment utiliser ce livre ?

Les rubriques

S
B Les points clé à retenir sont regroupés
U
en fin de chapitre

Des remarques pour aller plus loin

Les pièges et difficultés sont signalés

Des conseils méthodologiques sont donnés


tout au long de l’apprentissage

Retrouvez sur le site dunod.com,


à partir de la page d’accueil du
livre, le code R entier ainsi que
certaines figures en couleur.
.LL."+ ).(.&$ ĥ 3."&- &'-3Ö).(.&$

$"("&("$ Z
& 6(&("6("/') &1)+ 
Cours, exemples, exercices
et problèmes corrigés

­) ˜ŧ
ġ
Des mêmes auteurs :

PACES UE4 Tout en fiches 3e ed, Dunod, 2018


Mathématiques Licence 2 – Exercices et méthodes, Dunod, 2018
Mathématiques Licence 1 – Exercices et méthodes, Dunod, 2016
Mathématiques pour les sciences de l’ingénieur, Tout le cours en fiches, Dunod, 2013
Mathématiques : concours des catégories A et B, Dunod, 2012
Probabilités, Statistiques et Économétrie : concours des catégories A et B, Dunod, 2011
Mathématiques L1/L2 : Algèbre/Géométrie en 30 fiches, Dunod, 2009
Mathématiques L1/L2 : Statistique et Probabilités en 30 fiches, Dunod, 2009

Illustration de couverture : © exentia-Fotolia.com

© Dunod, 2010, 2014, 2018


11 rue Paul Bert, Malakoff
www.dunod.com
ISBN 978-2-10-078632-9
Table des matières

COMMENT UTILISER CE LIVRE ? viii

AVANT-PROPOS ix

CONVENTIONS TYPOGRAPHIQUES x

CHAPITRE 1 • INITIATION AU LANGAGE R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1


1.1 Présentation du langage R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Maintenant c’est à vous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Vos premières lignes de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 Quelques remarques sur la fenêtre R Console . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5 Pour en savoir plus sur le langage R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.6 R sans les mains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
EN RÉSUMÉ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
© Dunod – La photocopie non autorisée est un délit.

EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
SOLUTION DES EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

CHAPITRE 2 • OBJETS, FONCTIONS ET DONNÉES AVEC LE LANGAGE R . . . . . . . . . . . . . . . . 21


2.1 Le fichier de données iris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Quelques définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3 Quelques manipulations élémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4 Les objets sous R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5 Les fonctions de R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.6 Les données sous R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
iv Table des matières

EN RÉSUMÉ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
PROBLÈME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
SOLUTION DES EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
SOLUTION DU PROBLÈME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

CHAPITRE 3 • STATISTIQUES DESCRIPTIVES UNIVARIÉES . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91


3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.2 Vocabulaire de la statistique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
3.3 Les fichiers de données : Mesures et Mesures5 . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.4 Description d’une série statistique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.5 Représentations graphiques d’une série statistique . . . . . . . . . . . . . . . . . . . . . 107
3.6 Représentations numériques d’une série statistique . . . . . . . . . . . . . . . . . . . . 141
EN RÉSUMÉ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
PROBLÈME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
SOLUTION DES EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
SOLUTION DU PROBLÈME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

CHAPITRE 4 • LOIS DE PROBABILITÉS USUELLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188


4.1 Variable aléatoire - Variable aléatoire discrète - Variable aléatoire continue 189
4.2 Variables aléatoires discrètes : cas fini. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
4.3 Variables aléatoires discrètes : cas infini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
4.4 Variables aléatoires continues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
4.5 Approximations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
EN RÉSUMÉ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
SOLUTION DES EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Table des matières v

CHAPITRE 5 • STATISTIQUES DESCRIPTIVES BIVARIÉES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222


5.1 Présentation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
5.2 Distributions conjointe, marginale et conditionnelle . . . . . . . . . . . . . . . . . . . . 223
5.3 Représentations graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
5.4 Indépendance statistique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
5.5 Liaison entre deux variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
5.6 Et si vous avez plus que deux variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
EN RÉSUMÉ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
SOLUTION DES EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

CHAPITRE 6 • ÉCHANTILLONNAGE. ESTIMATION D’UN PARAMÈTRE. ESTIMATION PAR


INTERVALLE DE CONFIANCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
6.1 Échantillonnage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
6.2 Estimation d’un paramètre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
6.3 Estimation par intervalle de confiance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
EN RÉSUMÉ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
PROBLÈME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
© Dunod – La photocopie non autorisée est un délit.

SOLUTION DES EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283


SOLUTION DU PROBLÈME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

CHAPITRE 7 • TESTS PARAMÉTRIQUES ET NON PARAMÉTRIQUES . . . . . . . . . . . . . . . . . . . . . 292


7.1 Introduction à la notion de tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
7.2 Tests de comparaison avec une norme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
7.3 Test de comparaison entre deux populations indépendantes . . . . . . . . . . . . 310
7.4 Test de comparaison entre deux populations non indépendantes . . . . . . . 320
EN RÉSUMÉ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
vi Table des matières

PROBLÈMES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
SOLUTION DES EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
SOLUTION DES PROBLÈMES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

CHAPITRE 8 • TESTS DU KHI-DEUX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341


8.1 Test du x2 d’indépendance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
8.2 Test du x2 d’adéquation d’une loi à une loi donnée . . . . . . . . . . . . . . . . . . . . 344
8.3 Test exact de Fisher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
8.4 Test de Mac-Nemar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
EN RÉSUMÉ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
SOLUTION DES EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

CHAPITRE 9 • RÉGRESSION LINÉAIRE SIMPLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364


9.1 Ajustement linéaire en statistique descriptive . . . . . . . . . . . . . . . . . . . . . . . . . . 364
9.2 Estimation ponctuelle des paramètres de la droite de régression . . . . . . . . 368
9.3 Intervalle de confiance pour les paramètres b1 et b0 . . . . . . . . . . . . . . . . . . . 370
9.4 Intervalle de confiance de la valeur moyenne . . . . . . . . . . . . . . . . . . . . . . . . . . 371
9.5 Intervalle de prévision d’une valeur individuelle . . . . . . . . . . . . . . . . . . . . . . . . 372
9.6 Comparaison des paramètres de la droite à des valeurs de référence . . . . 372
EN RÉSUMÉ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
SOLUTION DES EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

CHAPITRE 10 • ANALYSE DE LA VARIANCE À UN FACTEUR . . . . . . . . . . . . . . . . . . . . . . . . . . 399


10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
10.2 Modélisation statistique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
10.3 Test de comparaison de plusieurs espérances . . . . . . . . . . . . . . . . . . . . . . . . . . 404
10.4 Vérification des trois conditions fondamentales et conclusion . . . . . . . . . . . 409
Table des matières vii

10.5 Comparaisons multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416


10.6 Puissance des tests de l’analyse de la variance à un facteur . . . . . . . . . . . . . 419
EN RÉSUMÉ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
SOLUTION DES EXERCICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425

INDEX 440
Pour vous, Anaëlle et David, nos deux modèles !

Avant-propos

Chers lecteurs,
Vous tenez entre vos mains le fruit de nos expériences.
Au cours de nos activités d’enseignement, de recherche ou de consultance, nous avons acquis
une connaissance et une maîtrise avancées du langage R. Suite à des demandes de plus en plus
fréquentes et nombreuses, nous avons partagé celles-ci depuis plusieurs années avec des publics
variés : étudiants en Licence ou en Master de biologie, de mathématique ou de statistique,
élèves dans chacune des trois années d’écoles d’ingénieurs, utilisateurs de la statistique lors
de stages donnés dans le cadre d’écoles doctorales et de la formation continue de chercheurs,
enseignants-chercheurs ou de statisticiens.
Ce livre est articulé autour des notions de base des programmes de Licence et Master. Il
possède l’avantage d’offrir simultanément une formation progressive à la statistique et au
langage R en réduisant au strict nécessaire les notions théoriques abordées. Ce n’est pas un
livre-audio mais presque !
Certains d’entre vous se font peut-être une montagne de la statistique mais il suffit d’être bien
chaussé, chaudement vêtu et bien guidé pour atteindre le sommet et pouvoir profiter de la vue.
Les chapitres 1 et 2 vous permettent de vous chausser : installation et prise en main du langage
R. Puis vous vous équipez dans les chapitres 3, 4 et 5 en étudiant les statistiques descriptives
pour une ou deux variables et les lois de probabilité usuelles. L’escalade commence à partir
du chapitre 6 où vous êtes initiés à la théorie de l’échantillonnage et à une notion trop mal
connue : les intervalles de confiance. Le chapitre 7 introduit la théorie des tests d’hypothèse qui
est complétée au chapitre 8 par les tests du Khi-deux. Le sommet est atteint avec l’exposé de la
© Dunod – La photocopie non autorisée est un délit.

régression linéaire simple au chapitre 9 et celui du modèle d’analyse de la variance à un facteur


au chapitre 10.
Les données utilisées pour la plupart des exercices ont été recueillies par les auteurs avec
l’aide du jardinier. Ce sont donc des données réelles sur lesquelles vous découvrirez la statistique
et vous exercerez.
Toutes vos remarques, vos commentaires, vos critiques, et mêmes vos encouragements seront
accueillis avec plaisir aux adresses électroniques suivantes :
fbertran@math.unistra.fr et mmaumy@math.unistra.fr
Bonne lecture (ascension) à tous !
Frédéric Bertrand
Myriam Maumy-Bertrand
Conventions typographiques

Cet ouvrage suit un certain nombre de conventions typographiques qui ont pour objectif de
faciliter la lecture.
Les noms de fichiers sont imprimés avec une police de type machine à écrire.
Exemple : R, SAS, Linux, ade4, etc.

Les noms de fichiers sont également imprimés avec la même police que celle ci-dessus.
Exemple : test.R, donnees.txt, etc.

Il en va de même pour les fonctions de R qui apparaissent dans le corps du texte.


Exemple : summary, mean, <-, etc.

Nous présentons des commandes saisies sous R et leurs résultats de la manière suivante.
La commande saisie est indiquée, dans un encadré, avec une police à chasse fixe précédée de
l’invite de commande >.
Exemple :
> summary(donnees)

Lorsque la commande R doit être répartie sur plusieurs lignes, les lignes suivantes sont
précédées du symbole + :
Exemple :
> filled.contour(volcano, color.palette = terrain.colors, asp = 1,
+ main = "jeu de données volcano : courbes de niveaux")

Le résultat de la commande tel qui est affiché par R est indiqué avec une police à chasse fixe
dans un cadre avec une trame en gris clair.
Exemple :

Min. 1st Qu. Median Mean 3rd Qu. Max.

Version utilisée : nous avons utilisé dans ce livre le langage R version 3.4.3
(2017-11-30).
Chapitre 1

Initiation au langage R

« Comme dans toute initiation, c’est dans le fait même de sourire qu’est le triomphe. »
De Paul Auster, La chambre dérobée, 1994

Objectifs de ce chapitre
➤ présenter R
➤ installer R
➤ prise en main des premières lignes de commande incontournables

Les informations sur R sont disponibles sur le site internet1 dédié au projet :
https://www.r-project.org/

1.1 PRÉSENTATION DU LANGAGE R


1.1.1 Qu’est-ce-que le langage R ?
• Le langage R est un langage de programmation et un environnement mathématique utilisés
pour le traitement de données. Il permet de faire des analyses statistiques aussi bien simples
que complexes comme des modèles linéaires ou non-linéaires, des tests d’hypothèse, de
la modélisation de séries chronologiques, de la classification, etc. Il dispose également de
nombreuses fonctions graphiques très utiles et de qualité professionnelle.

1. En juillet 2018, il s’agit de l’adresse officielle qui peut depuis avoir été éventuellement modifiée.
2 1 • Initiation au langage R

• R un langage de programmation complet. Cette caractéristique rend par conséquent le


langage R différent des autres logiciels de statistique.
• R est disponible pour Microsoft Windows, Macintosh et de nombreux systèmes de type
Unix.
• Actuellement, quatre à cinq nouvelles versions de R apparaissent par an.
• R est distribué gratuitement sous les termes de la  GNU , General Public Licence Ver-
sion 2, Juin 1991.
• R est écrit en C, C++, FORTRAN et Java. De plus, R est plus orienté programmation objet
que la plupart des autres logiciels ou langage de programmation statistique.
• R est un clone gratuit du langage S-Plus, actuellement commercialisé par Tibco Software
Inc., créé autour du langage S qui a été développé par John Chambers des laboratoires Bell.
• R a été créé en 1993 par Ross Ihaka et Robert Gentleman à l’Université d’Auckland,
Nouvelle Zélande, et est maintenant développé par la R Development Core Team. L’origine
du nom du langage provient, d’une part, des initiales des prénoms des deux auteurs (Ross
Ihaka et Robert Gentleman) et, d’autre part, d’un jeu de mots sur le nom du langage S
auquel il est apparenté.

1.1.2 Comment se procurer le langage R ?


• L’adresse https://www.r-project.org/ est le premier résultat pour la recherche de la lettre R
avec le moteur de recherche Google™ et la meilleure source d’informations sur le langage
R. Vous y trouverez les différentes distributions du langage, de nombreuses bibliothèques
de fonctions et des documents d’aide.
• Le langage R est gratuit et se télécharge directement depuis l’internet. Il évolue très rapide-
ment et à peu près tous les six mois une nouvelle version du langage est proposée au public.
Elle est accessible via la page officielle consacrée au projet https://www.r-project.org/.
• Pour faire face au très grand nombre de téléchargements du langage, un système de miroirs,
le Comprehensive R Archive Network https://cran.r-project.org/, a été mis en place. Les
mêmes fichiers sont ainsi disponibles simultanément sur différents serveurs situés à plu-
sieurs endroits dans le monde2 . Cette organisation présente au moins deux avantages
majeurs pour vous : pouvoir choisir un miroir proche de chez vous où que vous soyez dans
le monde ou un miroir de secours lorsque le miroir que vous avez l’habitude d’utiliser est
indisponible.

2. La liste des serveurs est disponible à l’adresse https://cran.r-project.org/mirrors.html et leur état à l’adresse
https://cran.r-project.org/mirmon_report.html.
1.1 Présentation du langage R 3

EN CART 1.1

En janvier 2018, il existait six miroirs en France dont les adresses sont les suivantes :
1. Laboratoire de Biométrie et Biologie Évolutive, CNRS et Université Lyon I
https://pbil.univ-lyon1.fr/CRAN/
2. Institut de Biologie et Chimie des Protéines, CNRS et Université Lyon I
https://mirror.ibcp.fr/pub/CRAN/
http://mirror.ibcp.fr/pub/CRAN/
3. Institut de biologie du Développement de Marseille, CNRS et Université Aix-Marseille
https://cran.biotools.fr/
http://cran.biotools.fr/
4. Institut de Génétique Humaine, Montpellier
https://ftp.igh.cnrs.fr/pub/CRAN/
http://ftp.igh.cnrs.fr/pub/CRAN/
5. Institut de Radioprotection et de Sûreté Nuclaire, Paris
http://cran.irsn.fr/
6. SAAM, Université Paris 1 Panthéon Sorbonne
https://cran.univ-paris1.fr/
http://cran.univ-paris1.fr/

Certains miroirs proposent un accès sécurisé en https. Il est recommandé de le privilégier.

1.1.3 Remarques sur le langage R avant l’installation


• R fonctionne avec une grande variété de systèmes d’exploitation et en particulier avec
Microsoft Windows, Mac OS X et de nombreux systèmes de type Unix. R est soit disponible
sous la forme de fichiers prêts à être installés soit sous la forme de fichiers source à compiler
© Dunod – La photocopie non autorisée est un délit.

soi-même.
• Il existe une version française du langage R même si le site officiel est rédigé en langue
anglaise.
• La très grande majorité des fonctions du langage ne diffère pas d’un système d’exploitation
à l’autre bien que les interfaces graphiques ne sont pas similaires.
Il existe plusieurs interfaces graphiques, en anglais  GUI  pour Graphical User Interface,
qui permettent d’accéder à une partie des fonctions du langage R.
• RGUI, l’interface graphique installée par défaut sous Windows.
• JGR, une interface graphique programmée en Java pour R. Elle fonctionne pour tous les
systèmes d’exploitation sur lesquels le langage Java est disponible et donc aussi bien pour
Microsoft Windows que pour Mac OS X et de nombreux systèmes de type Unix.
• Rattle, une interface graphique pour le data mining utilisant R.
4 1 • Initiation au langage R

• R Commander, une interface graphique pour faire des statistiques usuelles avec R.
• Statistical Lab.
• RExcel, pour exécuter les fonctionnalités de R et de R Commander à partir de Microsoft
Excel.
• rggobi, une interface pour le logiciel GGobi spécialisé dans la visualisation de données
multidimensionnelles.
• RKWard, une interface graphique basée sur les bibliothèques de KDE, une interface gra-
phique disponible sur de nombreux systèmes de type Unix.
Il existe également des programmes qui facilitent l’écriture des instructions et des programmes
en langage R.
Ces programmes se regroupent en deux grandes catégories :
• Les éditeurs de texte comme le bloc-note de Microsoft Windows, Microsoft Wordpad ou
Microsoft Word.
• Les environnements de programmation, appelés en anglais Integrated development envi-
ronments (IDEs), comme Tinn-R, Emacs (Emacs Speaks Statistics), Jedit, Kate, WinEdt
(R Package RWinEdt) ou Vim.
Pour les utilisateurs qui en auraient besoin, par exemple pour rédiger un mémoire ou un rapport
de stage, il est également possible d’intégrer directement des résultats obtenus avec R dans des
documents LATEXà l’aide du langage Sweave ou dans des documents au format OpenDocument
(ODF) à l’aide du langage odfWeave.
Il existe plusieurs sites internet, principalement en langue anglaise, consacrés au langage R.
• La section sur R à l’Open Directory Project.
• RSeek et R site search qui sont des moteurs de recherche spécialisés dans la recherche de
documents consacrés à R.
• Plusieurs listes de diffusion permettent aux utilisateurs novices ou expérimentés de R de
poser directement leurs questions aux autres utilisateurs afin qu’ils leur fassent partager
leur expérience du langage.
• Le R Journal est un journal à comité de lecture comportant des articles consacrés aux
problèmes de calcul statistique et au développement du langage R. Il peut aussi bien
intéresser de simples utilisateurs du langage que des programmeurs.
• R Books comprend une liste importante de livres consacrés à R.
• Le R Graphical Manual explique par l’exemple comment construire des graphiques à partir
de n’importe quelle bibliothèque du langage. Il comporte également un index exhaustif des
fonctions de toutes les bibliothèques d’extensions du langage R.
• Le R Wiki est un site coopératif de documentation sur le langage R.
1.2 Maintenant c’est à vous 5

1.2 MAINTENANT C’EST À VOUS


1.2.1 Installer le langage R
Ces premières instructions sont communes aux trois systèmes d’exploitation.
1. Rendez-vous sur le site https://www.r-project.org/.
2. Puis, à gauche sur la page d’accueil, vous trouverez un menu Download. Dans ce menu,
cliquez sur CRAN.
3. Choisissez un site miroir proche de chez vous.
4. Un encadré blanc intitulé Download and Install R doit apparaître sur votre écran.

EN CART 1.2 Installation de la version 3.4.3 (2017-11-30)


de R sous Windows
1. Cliquez sur Download R for Windows puis sur base.
2. Un encadré grisé doit apparaître dans lequel, à la première ligne, est inscrit Download
R 3.4.3 for Windows (62 megabytes, 32/64 bits), la version 3.4.3 étant celle
disponible au mois de janvier 2018. Cliquez dessus.
3. Procédez au téléchargement.
4. Exécutez le fichier que vous venez de télécharger en choisissant une installation par
défaut.

Remarque : le téléchargement de R n’est pas très long. En effet, sa taille est de 62,0 Mo.

EN CART 1.3 Installation de la version 3.4.3 (2017-11-30)


de R sous Mac OS X
© Dunod – La photocopie non autorisée est un délit.

1. Cliquez sur Download R for (Mac) OS X.


2. Une liste de fichiers à télécharger, intitulée Files : apparaît. Le premier élément de
la liste est R-3.4.3.pkg, la version 3.4.3 étant celle disponible au mois de janvier
2018. Cliquez dessus. Attention, il vous faudra peut-être, en fonction de votre navigateur
internet, appuyez sur la touche  control  en cliquant pour pouvoir télécharger le fichier.
3. Pour installer R, double-cliquez sur l’icône du package d’installation R-3.4.3.pkg.
6 1 • Initiation au langage R

EN CART 1.4 Installation de la version 3.4.3 (2017-11-30)


de R sous Linux
1. Cliquez sur Download R for Linux puis sur le nom de la distribution Linux installée
sur votre ordinateur.
2. Suivez les instructions détaillées sur le site. Celles-ci varient trop d’une distribution à
l’autre pour être reproduites ici mais si vous utilisez Linux vous ne devriez pas avoir de
mal à installer ou à faire installer le langage par votre administrateur réseau.

Remarque : dans la grande majorité des situations, l’installation de R est très simple et
ne nécessite que peu de connaissances techniques.

1.2.2 Le fonctionnement du langage R sous les trois principaux systèmes


d’exploitation
L’interface graphique du langage est très similaire d’un système d’exploitation à l’autre. Voici,
en détails, la procédure à suivre dans le cas de l’environnement Windows.

EN CART 1.5 Environnement Windows

• R fonctionne avec plusieurs fenêtres sous Windows. La fenêtre R Console est la fenêtre
principale où sont réalisées par défaut les entrées de commandes et les sorties de résultats
en mode texte. À celle-ci peuvent s’ajouter des fenêtres facultatives, telles que les fenêtres
graphiques, les fenêtres d’informations (historique des commandes, aide, visualisation de
fichier, etc), toutes appelées par des commandes spécifiques via la fenêtre R Console.
• Le menu File ou Fichier contient les outils nécessaires à la gestion de l’espace de
travail, tels que la sélection du répertoire par défaut, le chargement de fichiers sources
externes, la sauvegarde et le chargement d’historiques des commandes exécutées, etc.
• Le menu Edit ou Edition contient les habituelles commandes de copier-coller, ainsi
que la boîte de dialogue autorisant la personnalisation de l’apparence de l’interface.
• Le menu View ou Voir permet d’afficher ou de masquer la barre d’outils et la barre de
statut.
• Le menu Misc traite de la gestion des objets en mémoire et permet d’arrêter un calcul ou
des calculs en cours de traitement.
• Le menu Packages automatise la gestion et le suivi des bibliothèques de fonctions,
permettant leur installation et leur mise à jour de manière transparente depuis l’un des
miroirs du CRAN (Comprehensive R Archive Network) https://cran.r-project.org/.
• Enfin, le menu Windows ou Fen^ etres et le menu Help ou Aide assument des fonctions
similaires à celles qu’ils occupent dans les autres applications Windows, à savoir la
1.2 Maintenant c’est à vous 7

définition spatiale des fenêtres et l’accès à l’aide en ligne et aux manuels de références
du langage R.

1.2.3 Installer des packages du langage R


Qu’est ce qu’un package ? Un package est une compilation d’outils. Certains sont déjà présents
dans l’installation de base de R. En effet, lors de l’installation de R, un dossier library s’est
créé par défaut. Il comprend les packages de base de R. Mais d’autres packages qui vous
seront utiles pour réaliser vos analyses statistiques seront à télécharger puis à installer.

EN CART 1.6 Pour les trois environnements

1. Reprenez la procédure de téléchargement de R vue à la section  Installer le langage R .


2. Cette fois-ci au lieu de cliquer sur Windows, MacOS X ou Linux, cliquez sur packages
dans la liste intitulée Source Code for all Platforms.
3. Une page apparaît sur laquelle est indiqué le nombre de packages actuellement dis-
ponibles sur le CRAN (12 012 au moment début janvier 2018). Pour obtenir la liste
des packages rangés dans l’ordre alphabétique, cliquer sur Table of available packages,
sorted by name.
4. La liste des packages apparaît alors.
5. Puis cliquez sur le package dont vous avez besoin.
6. Une brève description du package apparaît suivie d’une liste proposant plusieurs versions
du package. La première (.tar.gz) est celle contenant le code source du package et
ne sert a priori qu’aux utilisateurs de Linux. La (.tgz) est destinée aux utilisateurs de
Mac OS X et la troisième (.zip) aux utilisateurs de Windows.
© Dunod – La photocopie non autorisée est un délit.

7. Sous Mac OS X et Windows, il faut alors démarrer l’interface graphique de R.


8. Sous Mac OS X, allez dans le menu Packages et utilisez le Package Manager. Indiquez
alors à R le fichier .tgz que vous venez de télécharger.
9. Sous Windows, allez dans le menu Packages et choisissez Installer depuis un
fichier .zip. Indiquez alors à R le fichier .zip que vous venez de télécharger.

Remarque : vous verrez bientôt comment installer très facilement les packages dispo-
nibles sur le site du CRAN directement depuis R.
8 1 • Initiation au langage R

EN CART 1.7 Environnement Windows

Il existe une procédure alternative pour les utilisateurs d’un environnement Windows.
1. Reprenez la procédure de téléchargement de R vue à la section  Installer le langage R .
2. Cette fois-ci au lieu de cliquer sur base, cliquez sur contrib.
3. Cliquez ensuite sur le dossier de la version R que vous avez installée.
4. Puis cliquez sur le package dont vous avez besoin.
5. Un fichier .zip est enregistré sur votre disque dur.
6. Démarrez l’interface graphique de R, allez dans le menu Packages et choisissez
Installer depuis un fichier .zip. Indiquez alors à R le fichier .zip que vous
venez de télécharger.

Lorsque vous aurez besoin de packages qui ne sont pas installés par défaut pour réaliser les
analyses statistiques qui vous seront demandées dans les exercices, cela vous sera signalé. Il
faudra alors installer ces packages supplémentaires sur votre ordinateur.

Beaucoup de bibliothèques contiennent un ou plusieurs documents détaillant leurs fonction-


nalités et montrant leur application pas à pas à un exemple. Pour obtenir la liste des vignettes
présentes sur votre ordinateur, il suffit d’exécuter la commande vignette().

1.3 VOS PREMIÈRES LIGNES DE COMMANDE


1.3.1 Démarrer R
Pour démarrer R, vous pouvez par exemple lancer le langage R en double-cliquant sur l’icône R
qui se trouve par exemple sur votre bureau. La fenêtre R console s’ouvre. Elle vous affiche
tout ce texte :

R version 3.4.3 (2017-11-30) Kite-Eating Tree


Copyright (C) 2017 The R Foundation for Statistical Computing
Platform : x86_64-apple-darwin15.6.0 (64-bit)
R est un logiciel libre livré sans AUCUNE GARANTIE.
Vous pouvez le redistribuer sous certaines conditions.
Tapez license() ou licence() pour plus de détails.

R est un projet collaboratif avec de nombreux contributeurs.


Tapez contributors() pour plus d’information et
citation() pour la façon de le citer dans les publications.
1.3 Vos premières lignes de commande 9

Tapez demo() pour des démonstrations, help() pour l’aide


en ligne ou help.start() pour obtenir l’aide au format HTML.
Tapez q() pour quitter R.
[R.app GUI 1.70 (7463) x86_64-apple-darwin15.6.0]

Puis sous ce texte, le symbole rouge >, appelé prompt, apparaît également. Il signifie que R
est prêt à travailler.
Il ne faut jamais taper ce symbole au clavier car il est déjà présent en début de ligne sur la
fenêtre R Console.

C’est à la suite de > que vous taperez les lignes de commande de R. Une fois la commande tapée,
vous devez toujours la valider en appuyant sur la touche  Entrée  du clavier.
Si votre commande est incomplète, le symbole > est remplacé par +. Ce symbole + signifie
que R attend la suite de la commande. Si vous ne savez pas compléter la ligne de commande
ou qu’elle présente une erreur vous pouvez appuyer sur la touche  Echap  pour annuler la
commande et créer un nouveau symbole >.

1.3.2 Quitter R
Pour quitter R, vous utilisez la commande suivante :

> q()

Save workspace image ? [y/n/c]

R vous propose de sauvegarder le travail effectué. Trois réponses vous sont proposées : y (pour
yes), n (pour no) ou c (pour cancel, annuler).
© Dunod – La photocopie non autorisée est un délit.

Si vous tapez y, cela permet que les commandes exécutées pendant la session et les objets
enregistrés en mémoire soient conservés et soient donc  rappelables  et  réutilisables .
Si vous tapez n, vous quittez R qui oubliera tout le travail que vous avez réalisé. Attention, vous
risquez de tout perdre !
Si vous tapez c, la procédure de fin de session sous R est annulée.
Sous l’environnement Windows ou Mac OS X, c’est une boîte de dialogue en français qui
apparaîtra à l’écran et qui comportera les mêmes questions.

1.3.3 Sauvegarder sous R


Si vous quittez R en choisissant la sauvegarde de l’espace de travail, deux fichiers sont créés :
1. le fichier .Rdata contient des informations sur les variables utilisées,
2. le fichier .Rhistory contient l’ensemble des commandes utilisées.
10 1 • Initiation au langage R

1.3.4 Consulter l’aide de R


Il y a quatre sources principales d’aide :
1. les fichiers d’aide,
2. les manuels,
3. les archives R-help,
4. et enfin R-help lui-même.
Pour une fonction, dont le nom est fonction, vous pouvez consulter une fiche de documen-
tation en tapant ?"fonction" ou help("fonction"). Grâce à cette aide, il suffit que vous
reteniez le nom de la fonction, mais pas forcément toute la syntaxe.
Exemple : vous cherchez à obtenir des informations sur la fonction read.table, vous
taperez alors la commande suivante :
> ?read.table

ou encore :

> help(read.table)

Pour une bibliothèque d’extension, dont le nom est package, vous pouvez consulter une fiche
de documentation en tapant :

> help(package="package")

Grâce à cette aide, il suffit que vous reteniez le nom de la bibliothèque où se trouve la fonction
que vous souhaitez utiliser, mais pas forcément le nom exact de cette fonction.
Les pages d’aide sont généralement très détaillées. Elles contiennent souvent, entre autres :
– une section See Also qui donne les pages d’aide sur des sujets apparentés.
– une section Description qui précise ce que fait la fonction.
– une section Examples avec des lignes de commande illustrant ce que fait la fonction
documentée. Ces exemples peuvent être exécutés directement en utilisant la fonction
example, essayez par exemple :

> example(plot)

Pour afficher successivement les différents graphiques ainsi créés, vous devez cliquer
plusieurs fois de suite sur la fenêtre où sont situés les graphiques.
1.3 Vos premières lignes de commande 11

a) Affichage de l’aide dans la console


Lorsque l’aide s’affiche dans la console, vous pouvez faire défiler le texte ligne par ligne avec la
touche  Entrée  ou  Flèche vers la bas  ou page par page en appuyant sur la barre  Espace .
Une fois arrivé à END, tapez q.
Il s’agit du mode d’affichage par défaut de l’aide dans un terminal R et donc dans un environne-
ment Linux.

b) Affichage de l’aide en-dehors de la console


Lorsque l’aide s’affiche dans la console, elle n’est pas facile à consulter. Il existe des versions
au format .html de tous les fichiers d’aide dans les trois environnements Linux, MacOS X et
Windows. Pour s’en servir à la place des versions texte qui s’affichent dans la console, il faut
utiliser l’option help_type="html" de la fonction help.
Exemple : vous cherchez à obtenir des informations au format .html sur la fonction
read.table, vous taperez alors la commande suivante :
> help("read.table",help_type="html")

L’option help_type="text" de la fonction help permet d’afficher l’aide au format texte .txt.
Exemple : vous cherchez à obtenir des informations au format .txt sur la fonction
read.table, vous taperez alors la commande suivante :
> help("read.table",help_type="text")

Le format .html est celui utilisé par défaut lorsque vous utilisez l’interface graphique de R
dans un environnement Mac OS X ou Windows.
La fonction help.start permet d’accéder à la page d’accueil de l’aide au format .html.

> help.start()

c) Changer le mode d’affichage par défaut de l’aide


Il est possible de modifier une des options de R qui gère le mode d’affichage par défaut des
fichiers d’aide de R. Pour afficher, pour toute la durée d’une session R, les fichiers au format :
– .html, tapez l’instruction options(help_type="html") dans la console.
– .txt, tapez l’instruction options(help_type="text") dans la console.

À la fin de l’aide, il y a presque toujours une ou plusieurs lignes de commande d’exemple. Il


est judicieux de les exécuter afin d’avoir une idée de ce que les fonctions ont besoin comme
informations et des résultats qu’elles vous renvoient. Pour cela, il suffit de copier ces lignes,
de les coller sur la fenêtre R console et d’observer ce qui se passe. Vous pouvez, bien sûr,
12 1 • Initiation au langage R

les modifier suivant vos besoins. De plus, ces lignes de commande sont souvent un exemple
d’analyse de données et pointent parfois sur d’autres fonctions utiles à essayer. La notion de
 fonctions  sous R sera développée dans le chapitre suivant.

1.3.5 Travailler avec R


Cette section va être courte car elle sera limitée, dans le cadre de ce sous-paragraphe, à quelques
fonctionnalités de R.

a) R comme calculatrice

Exemple : tapez la ligne de commande suivante et validez par la touche  Entrée  du


clavier :
> 2 + 8

Le résultat s’affiche sous la forme :

[1] 10

Le chiffre 1 entre crochets indique l’indice du premier élément de la ligne. Le second


chiffre, 10, est le résultat de la ligne de commande.

Exemple : voici un autre exemple. Tapez la ligne de commande suivante :


> 120:155

[1] 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
[17] 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
[33] 152 153 154 155

Dans le résultat ci-dessus, l’indice de l’élément 120 est 1, celui de 136 est 17 et celui de
152 est 33.

Le chiffre qui se trouve entre les crochets indique l’indice du premier élément de la ligne sur
B laquelle il se trouve.
S
U

Exemple : une fonction dont vous pourrez avoir besoin est la fonction sqrt, qui n’est rien
d’autre que la racine carrée d’un nombre. Tapez la ligne de commande suivante :
> sqrt(4)

[1] 2
1.3 Vos premières lignes de commande 13

b) R comme logiciel de statistique


Vous obtiendrez des précisions sur cette fonctionnalité tout au long des chapitres suivants.

c) R comme éditeur graphique


Vous obtiendrez des précisions sur cette fonctionnalité tout au long des chapitres suivants.

1.3.6 Écrire des scripts avec un éditeur de texte et les compiler sous R
Il est souvent plus pratique de composer le code R dans une fenêtre spécifique de l’interface
graphique : la fenêtre de script.
Les entrées Nouveau script ou Ouvrir un script permettent de créer un nouveau script
de commandes R ou d’accéder à un ancien script sauvegardé lors d’une session précédente
d’utilisation du logiciel.
Pour exécuter des instructions à partir de la fenêtre de script il suffit de procéder par copier-coller
ou de se servir du raccourci clavier  ctrl+R .
Pour sauvegarder un script, il suffit, lorsque la fenêtre de script est active, de sélectionner l’entrée
 Sauver  du menu  Fichier .

Des scripts s’écrivent avec un éditeur de texte.


Exemple : Winedt, Microsoft Wordpad, Open Office, vi, emacs ou Xemacs, etc, sont des
éditeurs de texte.

Souvent il est proposé aux débutants d’utiliser le traitement de texte de Word car la plupart
des mises en forme du texte n’affecte pas l’exécution des lignes de commande lors du
 copier-coller . Attention ! Il faut désactiver la mise en forme automatique du texte.

Remarque : certains éditeurs, comme emacs, Xemacs ou Tinn-R peuvent vous être
conseillés car ils vous rendront la vie plus facile en fournissant la tabulation intelligente,
la coloration syntaxique et le complément des commandes.

Indépendamment de l’éditeur, vous sauvegardez les scripts dans un de vos répertoires. Ensuite
deux solutions s’offrent à vous :
1. soit vous utilisez le copier-coller sur la fenêtre R Console,
2. soit vous les lisez avec l’une des trois commandes suivantes :
> source(file="C://chemin//vers//nomdefichier//fichier.R",echo=T)

ou :
> source(file=".../repertoire/fichier.R",echo=T)
14 1 • Initiation au langage R

ou encore :
> source("fichier.R",echo=T)
# Si "fichier.R" est dans le répertoire de travail

1. Notez l’utilisation des slashes pour séparer les répertoires, même sous l’environnement
Windows.
2. Notez la présence du symbole #. Sous R, ce symbole est le symbole des commentaires.
Tout ce qui suit un # est alors ignoré. Sachez qu’un élément clef d’une bonne écriture de
script est la présence abondante de commentaires.

Écrire des scripts lisibles et commentés est une habitude à prendre dès maintenant car cela
B vous rendra l’utilisation de R bien plus facile.
S
U

EN CART 1.8 Les quatre avantages d’écrire des scripts

1. Écrire des scripts est un gain de temps car vous pouvez facilement réutiliser, en les
adaptant si nécessaire, des lignes de commande déjà tapées.
2. Si vous avez beaucoup de lignes de commande à écrire, c’est beaucoup plus simple de
les manipuler, de les modifier dans un éditeur de texte.
3. Écrire des scripts est un outil de collaboration puissant. C’est souvent pratique de pouvoir
envoyer à un de vos camarades ou de vos collègues, par fichier attaché dans un mail
par exemple, votre code et le fichier de données brut associé et de savoir qu’il lui suffit
d’exécuter la fonction source sur votre code pour effectuer votre analyse sur sa machine.
4. Enfin il n’existe pas de message d’alerte dans R sauf quand vous quittez R. Vous pouvez
alors perdre des données sans vous en rendre compte. Le seul moyen de trouver l’erreur
est de recommencer l’écriture de la ligne de commande.

Il est à noter qu’il existe également des langages de programmation libres et gratuits comme
Tinn-R qui sont destinés à vous faciliter la rédaction de scripts.

1.4 QUELQUES REMARQUES SUR LA FENÊTRE R CONSOLE


1. Ce qui est entré par l’utilisateur figure en rouge et la réponse de R est en bleu.
2. R utilise le système anglo-saxon pour les nombres décimaux c’est-à-dire les décimales sont
séparées par un point et non par une virgule comme en France.
3. R distingue les majuscules des minuscules.
1.5 Pour en savoir plus sur le langage R 15

4. Vous devez faire attention à l’utilisation du point virgule. En effet, sous R, ce dernier sert à
séparer deux instructions.
5. Vous pouvez rappeler les commandes déjà éxécutées en utilisant la touche  Flèche vers le
haut .
6. Vous pouvez parcourir la ligne de commande que vous êtes en train d’écrire en appuyant
sur les touches  Flèche vers la gauche  et  Flèche vers la droite .

1.5 POUR EN SAVOIR PLUS SUR LE LANGAGE R


• Un certain nombre de livres écrits principalement en anglais, mais aussi en français,
paraissent chaque année. Vous trouverez, sur le site http://www.r-project.org/manuals.html
dans l’onglet Documentation, une liste de manuels d’introduction ou très spécialisés est
à votre disposition.
• Pour un public francophone, un point de départ peut être le polycopié d’Emmanuel Paradis,
téléchargeable en ligne, intitulé  R pour les débutants , 77 pages (au mois de janvier
2018), qui a la particularité d’exister également en version anglaise  R for Beginners .
Les deux documents sont disponibles à cette adresse http://cran.r-project.org/ dans la
rubrique  Documentation , sous-rubrique  Contributed .
• Plusieurs milliers de pages d’enseignement de statistiques sous R, rédigées en langue
française, sont disponibles à cette adresse http://pbil.univ-lyon1.fr/R/.
• Il existe aussi des groupes ou des foires aux questions autour de R auxquels vous pouvez
vous abonner.
• Il a existé les R News mais maintenant ces nouvelles sont remplacées par le R Journal.
Les articles de ces revues ont pour objectif de mettre en avant certaines bibliothèques de
fonctions particulièrement intéressantes.
• Bonne lecture à tous !
© Dunod – La photocopie non autorisée est un délit.

1.6 R SANS LES MAINS


Il existe plusieurs interfaces graphiques qui ont vocation à faciliter l’utilisation du langage R. En
voici deux parmi celles-ci qui méritent une attention particulière.
– RStudio, https://www.rstudio.com, est avant tout un outil puissant pour écrire facilement
des scripts, des fonctions voire des bibliothèques R. C’est un programme à installer séparé-
ment de R et disponible pour les trois environnements Windows, Mac OS X et Linux. Il
présente dans un même environnement le script, la console R, la liste ainsi que le contenu
des objets présents dans la mémoire de R ainsi que les pages d’aide consultées ou les gra-
phiques produits. Il permet également de transformer automatiquement un script R en un
fichier au format html où sont intercalées les commandes R avec les résultats de celles-ci.
16 1 • Initiation au langage R

– Rcmdr (RCommander) est une bibliothèque pour le langage R, disponible pour les trois
environnements Windows, Mac OS X et Linux. C’est avant tout une interface graphique
pour un grand nombre de fonctions usuellement utilisées en statistique. Son utilisation
rend la pratique de R proche de celles d’autres logiciels de statistique « à menus et boîtes
de dialogue » comme par exemple SPSS, Minitab ou Statistica. Elle permet en outre
d’importer facilement des fichiers au format .csv, SPSS, SAS ou Minitab. Cette bibliothèque
permet, elle aussi comme RStudio, de transformer automatiquement un script R en un fichier
au format html où sont intercalées les commandes R avec les résultats de celles-ci.
Pour vous montrer la facilité avec laquelle il est possible de produire ces rapports html ainsi que
le rendu final obtenu, vous trouverez en ligne, pour chacun des chapitres du livre, des rapports,
faits avec RStudio et Rcmdr.

EN RÉSUMÉ

Commande Description
q() Quitte le langage.
?fonction
ou Demande la fiche de documentation de la fonction.
help("fonction")
help(package = Demande la fiche de documentation du package intitulé
"nomdupackage") nomdupackage.
install.packages( Installe le package intitulé nomdupackage.
"nomdupackage")
n:m Crée une suite de nombres d’entiers de n à m.
seq(n, m, i) Crée une suite de nombres de n à m en incrémentant par i.
rep(s, n) Crée une suite contenant n fois s.
source("fichier") Exécute le script contenu dans fichier.

Remarque : certaines commandes ne sont pas encore apparues dans ce premier chapitre
mais vont être introduites dans l’exercice 1.2 de ce chapitre.
Du mal à démarrer 17

EXERCICES

Exercice 1.1 Installation de R


1) Procédez au téléchargement de R et de la bibliothèque BioStatR.
2) Consultez l’aide de la bibliothèque BioStatR.

Exercice 1.2 Suites


Pour créer une suite d’entiers sous R, plusieurs fonctions sont disponibles.
La première méthode est d’utiliser l’opérateur ":". Une suite d’entiers consécutifs de a à b
s’obtient par a:b.
La seconde méthode est d’utiliser la fonction seq qui se caractérise par trois arguments :
le premier, noté from par R, est celui qui indique d’où part la suite, le deuxième, noté to par
R indique la fin de la suite et le troisième et dernier, noté by par R, mentionne le pas de la
progression également appelé raison. La suite d’entiers allant de a à b en avançant par pas de k
est créée par la ligne de commande suivante :

> seq(from=a,to=b,by=k)

Remarque : ne tapez pas cette ligne de commande en l’état. Il faut que vous remplaciez
les valeurs a, b et k par celles que vous avez choisies.

Remarque : seq peut créer une suite d’entiers mais aussi une suite de réels ce que ne fait
pas l’opérateur ":". En fait, ":" est un cas particulier de la fonction seq avec un pas
© Dunod – La photocopie non autorisée est un délit.

toujours égal à 1.
1) Créez la suite d’entiers consécutifs de 10 à 25 avec les deux méthodes.
2) Créez la suite d’entiers en progression arithmétique de premier terme 20, de dernier terme
40 et de raison 5.

Il existe une fonction, la fonction rep, qui peut servir à construire des suites particulières
comme les suites constantes ou les suites périodiques. rep se caractérise par deux arguments :
le premier, noté x par R, est celui qui comporte les chiffres qui composent le motif qui est répété
dans la suite et le second, noté times par R, est le nombre de fois que vous souhaitez répéter x.

3) Créez la suite dont tous les termes sont identiques et égaux à 28 et de longueur 10.
18 1 • Initiation au langage R

DU MAL À DÉMARRER

➩ Exercice 1.1
1) Relisez le paragraphe 1.2.1 du chapitre 1.
2) Relisez le paragraphe 1.2.3 du chapitre 1.

➩ Exercice 1.2
1) Lisez l’aide de la fonction ":", en tapant ?":", et celle de la fonction seq.
2) Utilisez la fonction seq.
3) Utilisez la fonction rep.

SOLUTION DES EXERCICES

Exercice 1.1
1) Les indications pour télécharger et installer R sont détaillées dans le début de ce chapitre.
2) Pour télécharger la bibliothèque depuis l’un des sites miroirs du CRAN, il suffit d’exécuter la
ligne suivante :

> install.packages("BioStatR")

Si la bibliothèque est indisponible sur le CRAN au moment où vous en avez besoin, il est
possible de la télécharger depuis le site internet des auteurs en utilisant l’option repos de la
fonction install.packages.

> install.packages("BioStatR",repos="http ://www-irma.math.unistra.fr/ fbertran/


+ BioStatR/")

L’option type force R à utiliser l’un des trois types de format de fichier pour les bibliothèques
d’extension : type="source" pour les fichiers source, type="mac.binary" pour les binaires
Solution des exercices 19

Mac OS X et type="win.binary" pour les binaires Windows. Il faut bien sûr penser à choisir
un format compatible avec son environnement.
Enfin les fichiers de la bibliothèque aux formats source .tar.gz, principalement pour Linux,
binaire .tgz, pour Mac OS X, ou binaire .zip, pour Windows, sont également hébergés sur le
même site internet à l’adresse http://www-irma.math.unistra.fr/~fbertran/BioStatR/.
Pour consulter l’aide de la bibliothèque BioStatR, utilisez la fonction help(package=
"BioStatR").
Ce qu’il faut retenir de cet exercice. La fonction install.packages permet d’installer des
B bibliothèques de fonctions.
S
U

Exercice 1.2
1) Vous souhaitez créer la suite d’entiers de 10 à 25.
Avec la première méthode, vous tapez alors la ligne de commande suivante :
> 10:25

[1] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

La seconde méthode fait appel à la fonction seq :

> seq(from=10,to=25,by=1)

[1] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
© Dunod – La photocopie non autorisée est un délit.

Remarque : vous pouvez aussi écrire simplement :

> seq(10,25,1)

[1] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

2) Vous pouvez encore utiliser la fonction seq :

> seq(from=20,to=40,by=5)

[1] 20 25 30 35 40
20 1 • Initiation au langage R

Remarque : vous auriez pu également abréger la dernière ligne de commande en tapant


celle-ci :

> seq(20,40,5)

Elle vous donne le même résultat que précédemment :

[1] 20 25 30 35 40

3)

> rep(x=28,times=10)

[1] 28 28 28 28 28 28 28 28 28 28

Remarque : vous auriez pu également abréger la dernière ligne de commande en tapant


celle-ci :

> rep(28,10)

Elle vous donne le même résultat que précédemment :

[1] 28 28 28 28 28 28 28 28 28 28

Ce qu’il faut retenir de cet exercice. Les fonctions seq et rep permettent de créer rapidemment
B des suites de nombres régulières.
S
U
Chapitre 2

Objets, fonctions et données


avec le langage R

« Les mathématiques n’étudient pas des objets, mais les relations entre ces objets. »
H. Poincaré (1854-1912)

Objectifs de ce chapitre
➤ définir ce que sont les objets sous R et les manipuler
➤ présenter les fonctions usuelles de R
➤ manipuler des données avec R, comme :
• saisir des données sous R
• importer des fichiers de données sous R
• écrire des fichiers de données à partir de R

2.1 LE FICHIER DE DONNÉES IRIS


Dans ce chapitre, vous allez avoir besoin d’un jeu de données afin d’illustrer la présentation
de certaines des commandes du logiciel. À l’heure actuelle, vous ne savez pas encore saisir ni
importer des données sous R, mais ceci ne devrait pas tarder puisque ce point sera abordé à la fin
de ce chapitre. C’est pourquoi vous allez utiliser un jeu de données déjà présent sous R. Comme
vous l’avez déjà appris au chapitre 1, R est un ensemble de bibliothèques de fonctions appelées
packages. Chaque package contient des jeux de données spécifiques qui sont utilisés comme
exemples.
22 2 • Objets, fonctions et données avec le langage R

Exemple : pour connaître les jeux de données contenus dans le package base, tapez la
commande suivante :
> data(package = "datasets")

Notez la présence des "" autour de datasets, qui indique à R que datasets est une
chaîne de caractères et qu’elle n’est à considérer que comme telle puisque c’est le nom
du package à explorer.

Le résultat apparaît dans une fenêtre R data sets. En voici un extrait :


Data sets in package ’datasets’:

AirPassengers...........Monthly Airline Passenger Numbers 1949-1960


BJsales.................Sales Data with Leading Indicator
BJsales.lead (BJsales)..Sales Data with Leading Indicator
BOD.....................Biochemical Oxygen Demand
.................................................
iris....................Edgar Anderson’s Iris Data

Notez la présence du fichier iris. Les données de ce fichier sont célèbres. Elles ont
été collectées par Edgar Anderson1 . Le fichier donne les mesures en centimètres des
quatre variables suivantes :
1. longueur du sépale (Sepal.Length),
2. largeur du sépale (Sepal.Width),
3. longueur du pétale (Petal.Length) et
4. largeur du pétale (Petal.Width)
pour trois espèces d’iris :
1. iris setosa,
2. iris versicolor et,
3. iris virginica.
Sir R.A. Fisher2 a utilisé ces données pour trouver des variables3 permettant de séparer
au mieux les trois espèces d’iris. Vous pouvez obtenir ces renseignements en tapant
soit la commande suivante (rencontrée au chapitre 1)
> ?iris

soit la commande (également rencontrée au chapitre 1) :

1. E. Anderson, (1935), The irises of the Gaspe Peninsula, Bulletin of the American Iris Society, 59, 2-5.
2. R.A. Fisher, (1936), The use of multiple measurements in taxonomic problems. Annals of Eugenics, 7, Part II,
179-188.
3. Il s’agit en fait de combinaisons linéaires des variables du jeu de données pour ceux qui connaissent cette notion.
2.2 Quelques définitions 23

> help(iris)

Le jeu de données iris est immédiatement accessible. Pour le visualiser en entier, il


suffit de taper la commande suivante :
> iris

Voici les dix dernières lignes de ce que vous voyez à l’écran.


........................................................
141 6.7 3.1 5.6 2.4 virginica
142 6.9 3.1 5.1 2.3 virginica
143 5.8 2.7 5.1 1.9 virginica
144 6.8 3.2 5.9 2.3 virginica
145 6.7 3.3 5.7 2.5 virginica
146 6.7 3.0 5.2 2.3 virginica
147 6.3 2.5 5.0 1.9 virginica
148 6.5 3.0 5.2 2.0 virginica
149 6.2 3.4 5.4 2.3 virginica
150 5.9 3.0 5.1 1.8 virginica

Tapez iris et non Iris ou IRIS car R n’est pas indifférent aux lettres majuscules et aux
lettres minuscules, comme vous l’avez déjà appris dans le chapitre 1.

2.2 QUELQUES DÉFINITIONS

Définition 2.1 Un objet est un espace dans lequel vous pouvez stocker tout ce qui vous intéresse.
© Dunod – La photocopie non autorisée est un délit.

Définition 2.2 Un vecteur est un objet d’un même mode pour toutes les valeurs qui le consti-
tuent. Vous rencontrerez donc soit des vecteurs numériques, soit des vecteurs de caractères,
soit des vecteurs logiques, soit des vecteurs vides. Un vecteur est constitué de coordonnées ou
encore de composantes. Parfois, le mot éléments est utilisé à la place de coordonnées.

Remarque : en mathématiques, un vecteur est souvent considéré comme une matrice


particulière : une matrice à une ligne ou à une colonne. Dans le langage R, il n’en va pas
de même et il faudra donc être très attentif au fait de ne pas confondre les vecteurs avec
des matrices à une ligne ou à une colonne.

Définition 2.3 Une matrice est un objet d’un même mode pour toutes les valeurs qui la consti-
tuent. Comme les vecteurs, vous rencontrerez donc soit des matrices numériques, soit des
matrices de caractères, soit des matrices logiques, soit des matrices vides. Contrairement au
24 2 • Objets, fonctions et données avec le langage R

vecteur, la matrice peut avoir plus qu’une colonne. Chaque élément (et c’est élément ici qu’il
faut utiliser) d’une matrice est repéré par son numéro de ligne et son numéro de colonne. Toutes
les lignes d’une matrice ont la même longueur. Il en va de même pour ses colonnes. En revanche,
la longueur des lignes peut être différente de celle des colonnes.
Définition 2.4 Une liste est un objet permettant de stocker des objets qui peuvent être hétéro-
gènes, c’est-à-dire qui n’ont pas tous le même mode ou la même longueur.
Définition 2.5 Un tableau de données, ou data.frame en anglais, est une liste particulière
dont les composantes sont de même longueur et dont les modes peuvent être différents. Un
data.frame est un tableau à double entrée : les lignes sont les individus sur lesquels les
mesures sont faites et les colonnes sont les variables.

Remarque : les jeux de données que vous utilisez seront souvent considérés comme des
data.frames.

Définition 2.6 Un facteur est un vecteur particulier qui permet de manipuler naturellement des
variables qualitatives 4 .

2.3 QUELQUES MANIPULATIONS ÉLÉMENTAIRES


2.3.1 Affecter
Comme vous l’avez vu dans le chapitre précédent, R sait calculer. En fait R est une grosse calcula-
trice, mais vous n’avez pas installé R pour cette fonctionnalité-là. En effet, vous aimeriez parfois
réutiliser le résultat d’une opération arithmétique sans avoir à le ressaisir ou à le copier/coller.
Pour cela, vous affecterez des valeurs à des objets et utiliserez l’opérateur <-, appelé opérateur
d’affectation ou d’assignation. Cet opérateur prend une valeur quelconque à droite et la place
dans l’objet indiqué à gauche.
Exemple :
> n<-28
> N<-20

Que signifient ces deux lignes de commande ?


La première ligne de commande peut donc se lire ainsi  mettre la valeur 28 dans l’objet
nommé n . La deuxième ligne de commande peut donc se lire ainsi  mettre la valeur 20
dans l’objet nommé N .

4. Le chapitre suivant précisera la différence entre les variables qualitatives et les variables quantitatives.
2.3 Quelques manipulations élémentaires 25

Remarque : R ne vous affiche rien dans la console. Pour que R vous renvoie le résultat de
cette affectation, il faut lui demander de l’imprimer. Vous verrez comment y parvenir au
paragraphe suivant.

Le signe = convient également pour faire des affectations.


Exemple :

> m=1973
> m

[1] 1973

2.3.2 Afficher
Quand vous affectez un nom à un objet, l’affichage de celui-ci n’est pas automatique. Il faut que
vous le demandiez en tapant uniquement le nom donné à l’objet.
Exemple :

> n

[1] 28

Vous pouvez aussi utiliser ces objets dans des calculs.


Exemple :
© Dunod – La photocopie non autorisée est un délit.

> N+n

[1] 48

Vous apprendrez dans la suite comment affecter et visualiser à l’aide de la même ligne de
commande.
Vous pouvez utiliser autant d’objets que vous souhaitez. Les objets peuvent contenir non
seulement des nombres comme vous venez de le voir mais aussi des chaînes de caractères, qui
sont alors indiquées par des guillemets droits, et d’autres choses encore.
26 2 • Objets, fonctions et données avec le langage R

2.3.3 Supprimer
Par défaut R conserve en mémoire tous les objets créés lors de la session. Il n’y a que dans
le cas où vous quittez R, sans sauvegarder la session, que les objets que vous avez créés sont
supprimés.
Il est donc conseillé de supprimer régulièrement les objets que vous avez créés lors de votre
session. Attention, vous devez être sûr de ne plus en avoir besoin car ils seront définitivement
perdus.

Pour savoir quels sont les objets qui ont été créés pendant votre session, utilisez, à votre
B convenance, la commande ls() ou la commande objects().
S
U

Si vous souhaitez supprimer :


– un objet, par exemple l’objet m, utilisez alors la commande remove, abrégée en rm :
> rm(m)

– plusieurs objets, par exemple les objets n et N, utilisez alors la ligne de commande suivante :
> rm(n,N)

– tous les objets en mémoire, utilisez alors la ligne de commande suivante :


> rm(list = ls())

2.4 LES OBJETS SOUS R


2.4.1 Généralités
R est un langage orienté objet, comme vous l’avez appris au chapitre 1, ce qui signifie que R
fonctionne avec des objets.
Les différents objets que vous rencontrerez sous R se caractérisent par :
– un nom : dans R, le nom doit commencer par une lettre et ne peut comporter que des
lettres, des chiffres, des espaces soulignés et des points.
En aucun cas, vous ne devez utiliser des espaces ou des caractères spéciaux comme les
ponctuations autres que le point. Il est fortement déconseillé d’utiliser des lettres à accent
ou la cédille,
– une classe : un vecteur, une matrice (tableau à deux dimensions), un array (tableau à n
dimensions), un data.frame, une liste, un facteur, une table,
– un mode : numérique (nombre réel), caractère (chaîne de caractères à mettre entre guille-
mets), logique (booléen), NULL (objet vide), liste (liste d’objets), fonction (une fonction),
– une taille : la taille d’un objet est le nombre d’éléments qu’il contient.
2.4 Les objets sous R 27

Exemple : vous voulez déterminer les caractéristiques classe, mode et taille de l’objet
iris.
Pour connaître la classe de l’objet iris de R, tapez la commande :
> class(iris)

[1] "data.frame"

Pour connaître le mode de l’objet iris de R, tapez la commande :


> mode(iris)

[1] "list"

Vous cherchez à connaître les noms des colonnes de l’objet iris de R. Pour cela, vous
tapez la commande :
> names(iris)

[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"

Pour connaître la taille d’un objet, il existe dans R, deux fonctions : length et dim.
length renvoie le nombre d’éléments d’un vecteur, d’une matrice, d’un array, d’une liste ou
d’un facteur, le nombre de colonnes d’un data.frame et le nombre de cases d’une table.
Exemple : vous cherchez à connaître la taille de l’objet iris de R, sachant que iris est
un data.frame. Donc si vous tapez la commande :
© Dunod – La photocopie non autorisée est un délit.

> length(iris)

R vous affiche alors :

[1] 5

ce qui est logique puisque le data.frame iris est constitué de cinq colonnes. Mainte-
nant si vous tapez la commande :
> dim(iris)

R vous affiche :

[1] 150 5
28 2 • Objets, fonctions et données avec le langage R

Ce résultat est plus complet que le précédent. En effet, il vous indique que le data.frame
iris est un tableau constitué de 150 lignes et de 5 colonnes.

1. La fonction length comptabilise les valeurs manquantes dans la longueur des vecteurs.
B
S
U 2. Si vous cherchez à savoir si l’objet étudié possède ou non des valeurs manquantes, vous
utiliserez alors la commande is.na.
3. La fonction pour connaître la taille d’un objet est soit dim soit length.

Il est possible de convertir le mode d’un objet à un autre mode en utilisant les commandes
suivantes :
as.character
as.list
as.logical
as.numeric

Si vous souhaitez tester si un objet est d’un certain mode, il faut utiliser les commandes
suivantes :
is.character
is.list
is.logical
is.numeric
is.null

Remarque : il existe des commandes similaires pour la classe d’un objet.

2.4.2 Les vecteurs


a) Créer des vecteurs
Pour créer un vecteur, différentes commandes sous R sont disponibles. Vous en avez déjà vu
trois dans l’exercice 1.2 du chapitre précédent :
1. l’opérateur ":",
2. la fonction seq,
3. et la fonction rep.
Cette liste peut être complétée en vous introduisant :
4. la fonction c (c comme  collection ).
• Les vecteurs numériques
Exemple : tapez les lignes de commande suivantes :
2.4 Les objets sous R 29

> serie1<-c(1.2,36,5.33,-26.5)
> serie1

[1] 1.20 36.00 5.33 -26.50

Remarque : que remarquez-vous sur cette ligne de sortie ? R a modifié l’écriture


des nombres saisis au clavier en affichant ces nombres décimaux avec la même
précision de deux chiffres après la virgule.

> mode(serie1)

[1] "numeric"

Donc, vous en déduisez que les éléments du vecteur serie1 sont des nombres réels.
> class(serie1)

[1] "numeric"

Ici le résultat numeric signifie que l’objet serie1 est un vecteur contenant des nombres
réels.
Il faut donc faire attention aux deux sens différents du résultat numeric lorsqu’il est
obtenu avec la commande class ou avec la commande mode.

Si vous tapez la ligne de commande suivante :

> c(1.2,36,5.33,-26.5)

Que fait le logiciel R ? R ne retourne pas > mais affiche :

[1] 1.20 36.00 5.33 -26.50

Dans ce cas, le résultat de la commande est affiché directement et n’est pas stocké en mémoire
car vous n’avez pas affecté ce résultat à un objet.

Pour affecter un résultat à un objet et visualiser immédiatement ce résultat, il suffit de mettre


B la ligne de commande R entre parenthèses :
S
U

> (serie1<-c(1.2,36,5.33,-26.5))

[1] 1.20 36.00 5.33 -26.50


30 2 • Objets, fonctions et données avec le langage R

Quand vous donnez un nom à un objet, l’affichage de celui-ci n’est pas automatique. Vous le
B demandez en tapant le nom donné à l’objet.
S
U

• Les vecteurs de chaînes de caractères

Exemple : tapez les lignes de commande suivantes :

> serie2<-c("bleu","vert","marron")
> serie2

[1] "bleu" "vert" "marron"

> mode(serie2)

[1] "character"

Donc, vous en déduisez que les éléments du vecteur serie2 sont des caractères.

Remarque :
1. Si vous mélangez, dans un même vecteur, des caractères et des valeurs numériques, les
valeurs numériques sont automatiquement converties en chaînes de caractères.
2. Quand les éléments du vecteur sont des chaînes de caractères, il est obligatoire de les
déclarer entre guillemets, sinon R ne reconnaît pas les coordonnées du vecteur.
Exemple :

> serie2<-c(bleu,vert,marron)

Erreur : objet bleu introuvable

ou si vous utilisez la version anglaise de R :

Error: Object bleu not found

• Les vecteurs logiques

Exemple : tapez les lignes de commande suivantes :

> serie3<-c(T,T,F,F,T)
> serie3
2.4 Les objets sous R 31

Que signifient les lettres T et F ? Vous allez avoir la réponse en regardant la sortie affichée
par R.

[1] TRUE TRUE FALSE FALSE TRUE

Remarque : vous auriez pu taper aussi les lignes de commande suivantes :


> serie3<-c(TRUE,TRUE,FALSE,FALSE,TRUE)
> serie3

qui donnent la même sortie que précédemment :

[1] TRUE TRUE FALSE FALSE TRUE

En fait, T et F sont des abréviations de TRUE et de FALSE. Les raccourcis qui existent sous
R vous seront systématiquement mentionnés tout au long de l’ouvrage.
Il est dangereux d’utiliser {T} et {F} car il est possible de redéfinir leurs valeurs. Il est
donc vivement déconseillé de s’en servir !
> mode(serie3)

[1] "logical"

Donc, vous en déduisez que les éléments du vecteur serie3 sont des valeurs logiques.

b) Afficher une ou plusieurs coordonnées d’un vecteur


Il est possible de demander l’affichage d’une (ou de plusieurs) coordonnée(s) d’un vecteur en
spécifiant entre crochets ([]), en plus du nom du vecteur, l’indice de la coordonnée du vecteur.
© Dunod – La photocopie non autorisée est un délit.

Exemple : vous souhaitez afficher la troisième coordonnée de la serie1. Pour cela, vous
tapez la commande suivante :
> serie1[3]

[1] 5.33

vous souhaitez afficher la troisième et la quatrième coordonnées de la serie1. Pour cela,


vous tapez la commande suivante :
> serie1[3:4]

[1] 5.33 -26.50


32 2 • Objets, fonctions et données avec le langage R

Les fonctions head et tail vous permettent d’afficher les premiers ou les derniers éléments
d’un vecteur. Si vous utilisez l’une de ces deux fonctions sans préciser la valeur de l’argument
n, R vous renverra les six premières ou les six dernières valeurs du vecteur.
Exemple : vous souhaitez afficher les deux premières valeurs de la serie1. Pour cela,
vous tapez la commande suivante :
> head(serie1,n=2)

[1] 1.2 36.0

Vous souhaitez afficher les deux dernières valeurs de la serie1. Pour cela, vous tapez la
commande suivante :
> tail(serie1,n=2)

[1] 5.33 -26.50

Plusieurs opérations sont possibles sur les vecteurs :


– concaténer des vecteurs, c’est-à-dire les combiner ensemble,
– extraire des coordonnées d’un vecteur,
– faire des calculs sur les coordonnées d’un vecteur,
– remplacer des coordonnées d’un vecteur par d’autres,
– répéter les coordonnées d’un vecteur,
– nommer les coordonnées d’un vecteur,
– trier les coordonnées d’un vecteur.

c) Concaténer des vecteurs


Il est possible de concaténer deux vecteurs et même plus, formés de variables de même type,
pour en former un nouveau.
Exemple : soient le vecteur numérique v est égal à (2,3 ; 3,5 ; 6 ; 14 ; 12) et le vecteur
numérique w égal à (3,2 ; 5 ; 0,7 ; 1 ; 3,5) :
> v<-c(2.3,3.5,6,14,12)
> w<-c(3.2,5,0.7,1,3.5)

Vous souhaitez les mettre ensemble et observer le résultat. Pour cela, vous tapez les lignes
de commande suivantes :
2.4 Les objets sous R 33

> x<-c(v,w)
> x

[1] 2.3 3.5 6.0 14.0 12.0 3.2 5.0 0.7 1.0 3.5

> y<-c(w,v)
> y

[1] 3.2 5.0 0.7 1.0 3.5 2.3 3.5 6.0 14.0 12.0

Remarque : si les vecteurs que vous voulez combiner ne sont pas du même mode, R va
essayer de convertir l’un des deux au type de l’autre. Par exemple, si vous combinez un
vecteur de caractères et un vecteur numérique, R transformera le vecteur numérique en un
vecteur de caractères.

d) Extraire des coordonnées d’un vecteur


Il est possible d’extraire des coordonnées à partir d’un vecteur selon trois façons :
1. Utiliser un vecteur pour préciser le numéro d’ordre des coordonnées à extraire.

Exemple : ainsi pour extraire les deuxième et cinquième coordonnées du vecteur v, vous
tapez la ligne de commande suivante :
> v[c(2,5)]
© Dunod – La photocopie non autorisée est un délit.

[1] 3.5 12.0

2. L’utilisation du signe tiret permet de supprimer des coordonnées.

Exemple : pour supprimer les deuxième et troisième coordonnées du vecteur v, vous tapez
la ligne de commande suivante :
> v[-c(2,3)]

[1] 2.3 14.0 12.0


34 2 • Objets, fonctions et données avec le langage R

3. Utiliser un vecteur formé de valeurs logiques.


Exemple : pour obtenir le vecteur ne contenant que les coordonnées du vecteur v stricte-
ment supérieures à 4, vous pouvez utiliser la ligne de commande suivante :
> v[v>4]

[1] 6 14 12

Si vous disposez de deux vecteurs ayant le même nombre de coordonnées, vous pouvez
demander à afficher les valeurs de l’un pour lesquelles les valeurs de l’autre sont supérieures
(ou inférieures) à une certaine valeur.
Exemple : les vecteurs v et w sont composés de 5 valeurs. Vous pouvez demander d’ex-
traire du vecteur w les coordonnées de w pour lesquels v est supérieur à quatre en utilisant
la ligne de commande suivante :
> w[v>4]

[1] 0.7 1.0 3.5

Remarque : v>4 est le vecteur logique c(FALSE, FALSE, TRUE, TRUE, TRUE) qui
indique à R les éléments à conserver (valeur TRUE) ou à supprimer (valeur FALSE) du
vecteur v ou du vecteur w.

e) Faire des calculs sur les coordonnées d’un vecteur ou sur des vecteurs
R peut faire des calculs sur l’ensemble des coordonnées d’un vecteur, comme l’addition de deux
vecteurs, la multiplication et la division par un scalaire.
Exemple :
> (v+w)/2

[1] 2.75 4.25 3.35 7.50 7.75

ou encore :
> 20+5*v

[1] 31.5 37.5 50.0 90.0 80.0

Exemple : introduisez un nouveau vecteur z égal à (2,8 ; 3 ; 19,73) :


> z<-c(2.8,3,19.73)
> z
2.4 Les objets sous R 35

[1] 2.80 3.00 19.73

Tapez la ligne de commande suivante :


> v+z

[1] 5.10 6.50 25.73 16.80 15.00


Warning message :
In v + z :
la taille d’un objet plus long n’est pas multiple de la taille d’un
objet plus court

Remarque : R vous signale un Warning. Savez-vous pourquoi ? Si vous tapez les deux
lignes de commande suivantes :

> length(v)

[1] 5

> length(z)

[1] 3

Savez-vous maintenant pourquoi ? En fait, les deux vecteurs n’ont pas la même longueur
et R recycle z autant de fois nécessaires pour atteindre la longueur du plus grand des
vecteurs.

Quand deux vecteurs ne sont pas de même longueur, le plus court est recyclé par R.
B
S
U

f) Remplacer des coordonnées d’un vecteur par d’autres coordonnées


Il est possible de remplacer certaines coordonnées d’un vecteur par de nouvelles valeurs.
Exemple : considérez une suite d’entiers de 1 à 10 :
> s<-1:10
> s

[1] 1 2 3 4 5 6 7 8 9 10
36 2 • Objets, fonctions et données avec le langage R

Si vous voulez remplacer la troisième coordonnée de s par 35, vous utilisez alors la ligne
de commande suivante :
> s[3]<-35

Puis vous demandez à R d’afficher le résultat en tapant la ligne de commande suivante :


> s

[1] 1 2 35 4 5 6 7 8 9 10

Exemple : si vous voulez remplacer la valeur 1 par la valeur 25, vous utilisez alors la
ligne de commande suivante :
> s[s==1]<-25

Puis vous demandez à R d’afficher le résultat en tapant la ligne de commande suivante :


> s

[1] 25 2 35 4 5 6 7 8 9 10

Exemple : si vous voulez remplacer toutes les valeurs supérieures ou égales à 5 par 20,
vous utilisez alors la ligne de commande suivante :
> s[s>=5]<-20

Puis vous demandez à R d’afficher le résultat en tapant la ligne de commande suivante :


> s

[1] 20 2 20 4 20 20 20 20 20 20

g) Répéter les coordonnées d’un vecteur


Comme vous le savez déjà, la fonction rep a deux arguments, notés x et times par R, et crée
un vecteur où x est répété times fois.
Exemple : vous créez le vecteur donnees en tapant la ligne de commande suivante :
> donnees<-c(1,2,3)
> donnees
2.4 Les objets sous R 37

[1] 1 2 3

Si vous voulez qu’un nouveau vecteur contienne deux fois le vecteur donnees, alors vous
tapez la ligne de commande suivante :
> rep(x=donnees,times=2)

[1] 1 2 3 1 2 3

Remarque : vous pouvez vous permettre d’abréger la dernière ligne de commande en


tapant celle-ci :

> rep(donnees,2)

qui vous donne la même sortie que précédemment :

[1] 1 2 3 1 2 3

Exemple : vous pouvez également demander qu’un vecteur contienne 50 fois la valeur 1
en tapant la ligne de commande suivante :
> rep(1,50)

[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[34] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
© Dunod – La photocopie non autorisée est un délit.

Exemple : vous pouvez également demander qu’un vecteur contienne quatre fois la chaîne
de caractères  chien  en tapant la ligne de commande suivante :
> rep("chien",4)

[1] "chien" "chien" "chien" "chien"

h) Nommer les coordonnées d’un vecteur


Il est possible de donner un nom à chaque coordonnée d’un vecteur.
Première façon : une première façon de nommer les coordonnées d’un vecteur est de mettre
le nom à côté de la valeur associée. Attention, vous n’aurez pas besoin d’utiliser les "".
38 2 • Objets, fonctions et données avec le langage R

Exemple : le vecteur notes.Guillaume contient les notes obtenues par Guillaume en


Anglais, Informatique et Biologie.
Vous pouvez utiliser la ligne de commande suvante :
> notes.Guillaume<-c(Anglais=12,Informatique=19.5,Biologie=14)
> notes.Guillaume

Anglais Informatique Biologie


12.0 19.5 14.0

Seconde façon : une autre façon de nommer les coordonnées d’un vecteur est que vous
définissiez un vecteur formé de chaînes de caractères, puis que vous utilisiez la fonction names.
Exemple :

> matiere<-c("Anglais","Informatique","Biologie")
> matiere

[1] "Anglais" "Informatique" "Biologie"

> note<-c(12,19.5,14)
> note

[1] 12.0 19.5 14.0

> names(note)<-matiere
> note

Anglais Informatique Biologie


12.0 19.5 14.0

Remarque : pour supprimer les noms, tapez la ligne de commande suivante :

> names(note)<-NULL
> note

[1] 12.0 19.5 14.0


2.4 Les objets sous R 39

i) Trier les coordonnées d’un vecteur


Vous pouvez trier les coordonnées d’un vecteur par ordre croissant en utilisant la fonction sort.

Exemple : pour trier les notes de Guillaume dans l’ordre croissant, vous tapez la ligne de
commande suivante :
> sort(note)

Anglais Biologie Informatique


12.0 14.0 19.5

ou dans l’ordre décroissant, en tapant la ligne de commande suivante :


> rev(sort(note))

Informatique Biologie Anglais


19.5 14.0 12.0

Remarque : la fonction rev, pour reverse, appliquée au vecteur v renvoie un vecteur dont
les éléments sont ceux de v mais rangés du dernier au premier.

> rev(note)

[1] 14.0 19.5 12.0


© Dunod – La photocopie non autorisée est un délit.

2.4.3 Les valeurs manquantes


Lors d’une étude statistique, il peut arriver que certaines données ne soient pas disponibles : la
donnée est dite manquante. Pour saisir une donnée manquante, il est conseillé d’utiliser le
symbole NA (Not Available), quelque soit la nature de l’objet : numérique, caractère ou logique.
Exemple :
> serie4<-c(1.2,36,NA,-26.5)

La troisième valeur est laissée en valeur manquante.


> serie4

[1] 1.2 36.0 NA -26.5


40 2 • Objets, fonctions et données avec le langage R

> mode(serie4)

> "numeric"

Remarque : la présence d’une ou de plusieurs valeurs manquantes n’affecte pas la nature


des éléments qui composent le vecteur. En effet, étant donné que le vecteur serie4 soit
composé de nombres réels et d’une valeur manquante, pour R, le vecteur serie4 est un
vecteur composé d’éléments numériques.

Pour savoir où se trouve(nt) une/(des) valeur(s) manquante(s) dans un objet de R, vous devez
utiliser la fonction suivante :

> is.na

function (x) .Primitive ("is.na")

Exemple :

> is.na(serie4)

[1] FALSE FALSE TRUE FALSE

R retourne un vecteur composé d’éléments logiques de même longueur que serie4.


FALSE indique l’absence de valeur manquante tandis que TRUE indique la présence d’une
valeur manquante. Donc, vous en déduisez que serie4 possède une valeur manquante
qui est à la troisième position.

2.4.4 Les matrices


a) Créer des matrices
Pour créer une matrice, différentes méthodes sous R existent. La méthode la plus utilisée pour
créer une matrice est la commande matrix qui a deux arguments : le vecteur d’éléments et le
nombre de lignes et de colonnes de la matrice.
Exemple :

> matrice1<-matrix(1:12,ncol=3)
> matrice1
2.4 Les objets sous R 41

[,1] [,2] [,3]


[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12

Remarque : que remarquez-vous ? R a rangé, par défaut, les éléments dans la matrice1
par colonne.

Si vous souhaitez ranger les éléments dans la matrice, ligne par ligne, vous utilisez alors
l’argument byrow=TRUE ou byrow=T.
Exemple :
> matrice2<-matrix(1:12,ncol=3,byrow=TRUE)
> matrice2

[,1] [,2] [,3]


[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12

Vous avez également la possibilité d’attribuer des noms aux lignes et aux colonnes d’une
matrice via l’option dimnames que vous ajouterez dans la fonction matrix. Ces noms doivent
être de type character.
Remarque : tapez la ligne de commande suivante :
© Dunod – La photocopie non autorisée est un délit.

> class(matrice2)

[1] "matrix"

Donc matrice2 est une matrice. Appliquez la fonction length à cette matrice :

> length(matrice2)

[1] 12

length vous indique le nombre d’éléments qui composent la matrice2. Maintenant si


vous tapez la ligne de commande suivante :
42 2 • Objets, fonctions et données avec le langage R

> dim(matrice2)

[1] 4 3

dim vous renvoie le nombre de lignes et de colonnes qui forment la matrice, c’est-à-dire
4 et 3. Notez que 4 fois 3 est égal à 12, le nombre d’éléments de la matrice.

Sur une matrice, il y a une différence entre la fonction length et la fonction dim.
B
S
U

Comme pour les vecteurs, R recycle les éléments du vecteur utilisé lors de la création d’une
matrice.
Exemple :

> matrice3<-matrix(1:12,nrow=4,ncol=4)
> matrice3

[,1] [,2] [,3] [,4]


[1,] 1 5 9 1
[2,] 2 6 10 2
[3,] 3 7 11 3
[4,] 4 8 12 4

b) Afficher des éléments ou une partie de la matrice


Comme pour les vecteurs, vous pouvez sélectionner des éléments de la matrice et les afficher,
de même vous pouvez sélectionner une partie de la matrice et l’afficher.

Pour un élément (i,j) d’une matrice appelée nom_matrice, vous devez utiliser la ligne de
commande suivante :

> nom_matrice[i,j]

Exemple : tapez la ligne de commande suivante :

> matrice3[3,3]

[1] 11
2.4 Les objets sous R 43

Pour une partie de la matrice, plusieurs possibilités s’offrent à vous en fonction de ce que
vous cherchez à faire. Pour sélectionner la ligne i d’une matrice, vous devez utiliser la ligne de
commande suivante :

> nom_matrice[i,]

Pour sélectionner la colonne j d’une matrice, vous devez utiliser la ligne de commande
suivante :

> nom_matrice[,j]

Exemple : tapez la ligne de commande suivante :

> matrice3[3,]

[1] 3 7 11 3

Exemple : tapez la ligne de commande suivante :

> matrice3[,3]

[1] 9 10 11 12

Remarque : R vous renvoie, par défaut toujours le résultat sous la forme d’un vecteur
même si c’est une colonne que vous avez demandé à extraire. Si vous voulez que le
© Dunod – La photocopie non autorisée est un délit.

résultat apparaisse sous forme d’une matrice à une ligne ou à une colonne, vous devez
utiliser l’argument drop=FALSE.

Exemple :

> matrice3[,3,drop=FALSE]

[,1]
[1,] 9
[2,] 10
[3,] 11
[4,] 12
44 2 • Objets, fonctions et données avec le langage R

Pour sélectionner plusieurs colonnes ou plusieurs lignes à la fois, plusieurs méthodes sont
disponibles. Quelques unes d’entre elles vous sont présentées dans la suite et leur utilisation
conseillée mais vous pouvez en trouver d’autres. Vous pouvez sélectionner des colonnes par un
vecteur d’entiers représentant le(s) numéro(s) des colonnes à conserver, ou par un vecteur de
valeurs logiques indiquant si vous voulez extraire ou non chacune des colonnes.
Exemple : vous souhaitez construire la matrice4 constituée de la deuxième et de la
quatrième colonne de la matrice3. Pour cela, vous tapez la ligne de commande suivante :
> (matrice4<-matrice3[,c(2,4)])

[,1] [,2]
[1,] 5 1
[2,] 6 2
[3,] 7 3
[4,] 8 4

Pour supprimer la première ligne ou la première colonne d’une matrice, il faut utiliser soit
nom_matrice[-1,] soit nom_matrice[,-1].
Exemple :

> (matrice5<-matrice3[,-1])

[,1] [,2] [,3]


[1,] 5 9 1
[2,] 6 10 2
[3,] 7 11 3
[4,] 8 12 4

c) Opérer sur les lignes et les colonnes


La commande nrow(nom_matrice) renvoie le nombre de lignes de la matrice sur laquelle vous
travaillez.
Exemple :

> nrow(matrice5)

[1] 4
2.4 Les objets sous R 45

La commande ncol(nom_matrice) renvoie le nombre de colonnes de la matrice sur laquelle


vous travaillez.
Exemple :

> ncol(matrice5)

[1] 3

Remarque : vous pouvez aussi obtenir ces deux informations en vous servant de la fonc-
tion dim déjà rencontrée au début de ce chapitre.

Exemple :

> dim(matrice5)

[1] 4 3

Vous pouvez aussi rajouter des lignes, avec la fonction rbind, ou des colonnes, avec la
fonction cbind, à une matrice existante, voire même concaténer des matrices.
Exemple :

> rbind(matrice5,c(13:15))

[,1] [,2] [,3]


[1,] 5 9 1
© Dunod – La photocopie non autorisée est un délit.

[2,] 6 10 2
[3,] 7 11 3
[4,] 8 12 4
[5,] 13 14 15

> cbind(matrice5,c(13:16))

[,1] [,2] [,3] [,4]


[1,] 5 9 1 13
[2,] 6 10 2 14
[3,] 7 11 3 15
[4,] 8 12 4 16
46 2 • Objets, fonctions et données avec le langage R

d) Faire des calculs sur les matrices


R sait faire la somme, le produit de matrices ainsi que transposer une matrice, calculer son
déterminant, inverser une matrice, diagonaliser une matrice, le tout en respectant les conditions
d’existence mathématiques de ces opérations.
Produit de deux matrices : Pour multiplier deux matrices entre elles, vous utiliserez la
fonction %*%.
Exemple :
> matrice6<-matrix(1:6,ncol=3)
> matrice6

[,1] [,2] [,3]


[1,] 1 3 5
[2,] 2 4 6

> matrice7<-matrix(1:12,ncol=4)
> matrice7

[,1] [,2] [,3] [,4]


[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12

Maintenant, si vous souhaitez multiplier les deux matrices matrice6 et matrice7, vous
allez utiliser la fonction %*%. Vous tapez donc la ligne de commande suivante :
> matrice8<-matrice6 %*% matrice7
> matrice8

[,1] [,2] [,3] [,4]


[1,] 22 49 76 103
[2,] 28 64 100 136

Attention, n’utilisez pas la fonction * à la place de la fonction %*%. En effet, la fonction * ne


signifie pas le produit de matrices comme il est défini dans votre cours de mathématiques. En
fait, la fonction * exécute le produit  coefficient par coefficient , comme vous allez le voir
sur l’exemple ci-dessous.

Exemple : si à la place de la ligne de commande :


> matrice6 %*% matrice7
2.4 Les objets sous R 47

vous tapez la ligne de commande :


> matrice6*matrice7

voilà ce que R vous affichera :


Erreur dans matrice6 * matrice7 : tableaux de tailles inadéquates

ou si vous utilisez la version anglaise de R :


Error in matrice6 * matrice7 : non-conformable arrays

En fait, la fonction * travaille sur des matrices de même taille.


Exemple : donc si vous tapez les deux lignes de commande suivantes :
> matrice9<-matrix(7:12,ncol=3)
> matrice9

R vous affiche alors :

[,1] [,2] [,3]


[1,] 7 9 11
[2,] 8 10 12

Puis vous tapez encore :


> matrice10<-matrice6*matrice9
> matrice10

R vous affiche alors :


© Dunod – La photocopie non autorisée est un délit.

[,1] [,2] [,3]


[1,] 7 27 55
[2,] 16 40 72

Remarquez aussi que si vous aviez tapé la ligne de commande :


> matrice11<-matrice9*matrice6

à la place de la ligne de commande :


> matrice10<-matrice6*matrice9,

le résultat aurait été le même. En effet, tapez les deux lignes suivantes :
48 2 • Objets, fonctions et données avec le langage R

> matrice11<-matrice9*matrice6
> matrice11

et vous obtenez :

[,1] [,2] [,3]


[1,] 7 27 55
[2,] 16 40 72

Maintenant, si vous aviez tapé la ligne de commande suivante :

> matrice12<-matrice7 %*% matrice6

à la place de la ligne de commande :

> matrice8<-matrice6 %*% matrice7

le résultat obtenu n’aurait pas été le même. En effet, tapez la ligne de commande suivante :

> matrice12<-matrice7 %*% matrice6

et vous obtenez :

Erreur dans matrice7 %*% matrice6 : arguments inadéquats

Le tableau suivant donne les principales commandes utiles lorsque vous chercherez à faire
B des calculs sur les matrices :
S
U

Commande Description
t(nom_matrice) Transpose la matrice sur laquelle vous travaillez.
det(nom_matrice) Calcule le déterminant de la matrice sur laquelle vous travaillez.
solve(nom_matrice) Inverse la matrice sur laquelle vous travaillez.
eigen(nom_matrice) Diagonalise la matrice sur laquelle vous travaillez.

2.5 LES FONCTIONS DE R


Les objets importants à connaître sous R sont les fonctions. Elles vous rendront des services
pour faire vos analyses statistiques. En fait, vous les avez déjà rencontrées tout au long de ce
chapitre sans le savoir.
2.5 Les fonctions de R 49

2.5.1 Généralités
Une fonction se distingue facilement des objets que vous avez déjà rencontrés. En effet, pour se
servir d’une fonction il faut faire suivre son nom de parenthèses qui contiennent des informations
nécessaires à l’exécution de la fonction.
Exemple :

class, mode, length, dim

qui sont les fonctions principales pour caractériser un objet.

Pour afficher le contenu d’une fonction, il suffit de taper le nom de la fonction sans les
parenthèses.
Exemple :

mode

function (x)
{
if (is.expression(x))
return("expression")
if (is.call(x))
return(switch(deparse(x[[1L]])[1L], ‘(‘ = "(", "call"))
if (is.name(x))
"name"
else switch(tx <- typeof(x), double = , integer =
+ "numeric",
closure = , builtin = , special = "function", tx)
}
<environment : namespace :base>

Les fonctions sont des objets qui exécutent des procédures.


Exemple : sous R, il existe des fonctions qui vont réaliser pour vous des calculs statistiques
ou encore des graphiques, etc. Vous allez rencontrer prochainement la fonction summary
ou encore la fonction plot.

Ce sont les parenthèses qui permettent l’exécution de la fonction. Si vous les oubliez, la
B fonction ne s’exécutera pas.
S
U

Exemple : si vous souhaitez afficher la liste des objets en mémoire de R, il faut taper la
commande ls() et non simplement ls. En effet, si vous écrivez ls, R affichera le contenu
50 2 • Objets, fonctions et données avec le langage R

de l’objet ls c’est-à-dire le code de la fonction ! Ainsi, même pour utiliser une fonction
qui n’a pas besoin d’arguments, il faut faire suivre son nom de parenthèses.

2.5.2 Les arguments d’une fonction


À l’intérieur des parenthèses, il faut parfois spécifier les paramètres encore appelés arguments
ou options, de la fonction que vous utilisez. Ces arguments peuvent prendre deux formes :
obligatoire ou optionnelle. Une fonction peut avoir plusieurs arguments et chacun est séparé par
une virgule.
Remarque : vous avez déjà rencontré ce terme arguments dans le chapitre précédent, à
savoir dans l’exercice 2, lorsque la fonction seq a été introduite ainsi que la fonction rep
et enfin dans le paragraphe sur les matrices de ce chapitre. En effet, la fonction seq a
besoin de trois arguments pour s’exécuter et chacun est séparé par une virgule. Même
remarque pour la fonction rep où à la place de trois il faut mettre deux. Et enfin, la
fonction matrix a besoin de deux arguments pour s’exécuter et chacun est séparé par une
virgule. Pour trouver une illustration de ce qui vient de vous être exposé, vous pouvez
consulter soit le chapitre précédent soit le paragraphe précédent.

D’autre part, la fonction args renvoie les arguments d’une fonction.


Exemple :
> args(matrix)

function (data = NA, nrow = 1, ncol = 1, byrow = FALSE,


dimnames = NULL)
NULL

2.5.3 Syntaxe des principales fonctions de R


Certaines fonctions statistiques, en particulier les fonctions de modélisation que vous rencontre-
rez par exemple dans le chapitre 9, travaillent avec des formules :

fonction(formula=, data=)

où formula est de type réponse ∼ prédicteurs et data représente le tableau de données sur
lequel vous travaillez et dans lequel se trouvent les variables qui interviennent dans formula.
Ce qui est appelé réponse en statistique correspond à la variable à expliquer et ce qui est appelé
prédicteurs correspond à l’ensemble des variables explicatives.
2.6 Les données sous R 51

Exemple :
> aov(Sepal.Length~Species,data=iris)

Ici la fonction est aov, la réponse est Sepal.Length, ici il n’y a qu’un prédicteur qui est
Species et le tableau de données est iris. Cette fonction sert à réaliser une analyse de
la variance à un facteur, comme vous le verrez au chapitre 10 de ce livre.
Call:
aov(formula = Sepal.Length ~ Species, data = iris)

Terms:
Species Residuals
Sum of Squares 63.21213 38.95620
Deg. of Freedom 2 147

Residual standard error: 0.5147894


Estimated effects may be unbalanced

2.5.4 Construction d’une fonction


Toutes les fonctions dont vous aurez besoin pour faire les exercices sont déjà existantes dans
R. Donc vous n’aurez pas besoin d’en construire dans le cadre du livre. Mais sachez que vous
pouvez en créer vous-même si vous en avez besoin. Pour cela, il serait judicieux de consulter un
ouvrage spécialisé qui traite de ce sujet.

2.6 LES DONNÉES SOUS R


2.6.1 Saisir des données sous R
© Dunod – La photocopie non autorisée est un délit.

Pour saisir des données sous R, vous connaissez déjà les deux fonctions seq et c. Mais il en
existe encore une autre qui peut vous être utile : la fonction scan. Avec cette fonction, la saisie
d’une série de données peut paraître moins fastidieuse.
Exemple : tapez la ligne de commande suivante :
> jeu1<-scan()

R vous redonne la main et vous pouvez taper les valeurs du jeu de données :
1: 1.2
2: 36
3: 5.33
4: -26.5
5:
52 2 • Objets, fonctions et données avec le langage R

Read 4 items

Le premier retour-chariot après une chaîne vide met fin à la saisie :


> jeu1

[1] 1.20 36.00 5.33 -26.50

Exemple : la fonction scan est particulièrement utile pour saisir une matrice :
> matrix(scan(),nrow=2,byrow=TRUE)
1: 1 3 4
4: 5 2 1
7:

Read 6 items
[,1] [,2] [,3]
[1,] 1 3 4
[2,] 5 2 1

Ces trois fonctions vous permettent de créer un vecteur ou une matrice de données sous R.
B
S
U

2.6.2 Créer un tableau de données sous R


Vous aurez parfois besoin de saisir un jeu de données dans R et de le stocker dans un tableau de
données. Vous avez déjà vu, au début de ce chapitre, la définition d’un tableau de données.
Définition 2.7 Un tableau de données est une collection de vecteurs de même longueur.

Remarque : la nature des vecteurs peut-être différente. En effet, ils peuvent être de nature
quantitative ou qualitative.

Pour créer un tableau de données sous R, il faut utiliser la fonction data.frame. Cette
fonction permet de concaténer des vecteurs de même longueur et de modes différents.
Les jeux de données que vous étudierez seront souvent considérés comme des data.frames.
B
S
U

Exemple : saisissez deux vecteurs notés mat et phy :


> mat<-c(19.6,17.6,18.2,16.0)
> phy<-c(19.1,17.8,18.7,16.1)
2.6 Les données sous R 53

puis construisez le tableau de données, noté res, à l’aide de la fonction data.frame en


tapant la ligne de commande suivante :
> res<-data.frame(mat,phy)
> res

mat phy
1 19.6 19.1
2 17.6 17.8
3 18.2 18.7
4 16.0 16.1

Il est possible de donner des noms aux lignes du tableau de données avec l’option row.names
qui doit fournir un vecteur de mode caractère et de longueur égale au nombre de lignes du
tableau de données.
Exemple : le tableau de données ci-dessus correspond aux moyennes trimestrielles de
mathématiques et de sciences physiques qu’ont obtenu Guillaume, Valérie, Thomas et
Julie. Donc, vous tapez la ligne de commande suivante pour voir apparaître les noms en
face des quatre lignes :
> res2<-data.frame(mat,phy,row.names=c("Guillaume","Valérie",
+ "Thomas","Julie"))
> res2

mat phy
Guillaume 19.6 19.1
Valérie 17.6 17.8
© Dunod – La photocopie non autorisée est un délit.

Thomas 18.2 18.7


Julie 16.0 16.1

Les fonctions cbind et rbind, qui ont été introduites dans le paragraphe sur les matrices,
s’utilisent aussi avec les tableaux de données.

Vous noterez aussi que les fonctions ncol et nrow, qui renvoient le nombre de colonnes et le
nombre de lignes, s’emploient également.

Enfin, il est possible d’utiliser les crochets pour extraire une sous-partie d’un tableau de
données. Ces derniers ont le même comportement que lorsqu’ils sont utilisés avec des matrices.

Enfin, vous rencontrerez dans le paragraphe suivant la fonction read.table qui permet de
créer un tableau de données à partir des informations contenues dans un fichier au format texte.
54 2 • Objets, fonctions et données avec le langage R

2.6.3 Lire des données dans un fichier


Quand les données sont plus volumineuses, il n’est pas très conseillé d’utiliser R comme outil
de saisie. Dans ce cas, vous utiliserez un éditeur de texte ou un tableur quelconque pour saisir
vos données (Microsoft Excel ou OpenOffice Calc par exemple) et le transférer ensuite sous R.

a) Afficher et modifier le répertoire de travail de R


Il est nécessaire d’indiquer à R l’endroit où sont stockés les fichiers de données. Ceci peut être
fait soit à chaque chargement de fichier soit pour la durée de chaque utilisation du logiciel.

Pour connaître le répertoire de travail actuellement utilisé par R, qui est par défaut le répertoire
où le langage est installé, il suffit d’utiliser la fonction getwd sans spécifier aucun argument.
Exemple : si l’un des auteurs tape :

> getwd()

il voit apparaître sur son écran :

[1] "C:/Users/Bertrand/Documents"

Pour changer le répertoire de travail par défaut, pour la durée de la session R, pour, par
exemple, le répertoire "C:\Data", il suffit de taper la commande suivante :

> setwd("C:\\Data")

ou de manière équivalente :

> setwd("C:/Data")

Pour des raisons liées à la syntaxe de R, plus précisément la syntaxe des systèmes de type
B Unix, la barre oblique inversée "\" doit être remplacée soit par une barre oblique "/" soit par
S
U
deux barres obliques inversées "\\".

Plusieurs fichiers sont disponibles sur le site internet http://www-irma.u-strasbg.fr/~fbertran/


BioStatR/ pour vous permettre de vous exercer à importer des jeux de données dans R. Ces
fichiers sont au format texte (.txt) :
– table1.txt,
– table2.txt,
– table3.txt,
– table4.txt,
2.6 Les données sous R 55

au format csv (.csv) :


– table5.csv,
– table6.csv,
au format Excel 97-2003 (.xls) :
– table7.xls,
table8.xls,
ou au format Excel 2007 (.xlsx) :
– table9.xlsx,
table10.xls.
Vous devez donc les télécharger sur votre ordinateur dans l’un des répertoires.
Lorsque vous cherchez à accéder à un fichier avec le logiciel R, vous pouvez soit :
– faire devenir le répertoire dans lequel il est stocké, le répertoire de travail par défaut de R
en utilisant la fonction setwd,
– créer un alias qui vous sera utile par la suite.
> Chemin<-"C:\\Documents and Settings\\Administrateur\\Bureau\\"
> Chemin

[1] "C:\\Documents and Settings\\Administrateur\\Bureau\\"

Il faut remplacer le chemin écrit ci-dessus par celui où est enregistré le fichier dans votre
ordinateur.
– utiliser, dans un environnement Windows et Mac OS X, la fonction file.choose qui vous
permettra de sélectionner le fichier à l’aide de l’explorateur de fichiers.
© Dunod – La photocopie non autorisée est un délit.

Comme vous allez le voir dans la suite de ce chapitre, la plupart des formats de fichiers sont
reconnus par R. Vous allez commencer par apprendre à sauvegarder et à lire des objets R au
format utilisé par R.

b) Lire et écrire des objets au format R


Les fonctions load et save servent à charger en mémoire ou à sauvegarder des objets au format
utilisé par R. Créez le vecteur numérique pH qui contient les valeurs numériques 1,2 ; 3,5 ; 11,0 ;
7,1 et 8,2 en exécutant la commande suivante :

> pH<-c(1.2,3.5,11.0,7.1,8.2)

Vérifiez que l’objet pH est conforme à vos attentes en l’affichant :


56 2 • Objets, fonctions et données avec le langage R

> pH

Vous obtenez le résultat suivant :

[1] 1.2 3.5 11.0 7.1 8.2

Pour sauvegarder dans le répertoire de travail, l’objet pH dans le fichier appelé


FichierpH.RData, .RData est l’extension naturelle des fichiers sauvegardés par R, il suffit
d’utiliser la commande :

> save(pH,file="FichierpH.RData")

Supprimez maintenant l’objet pH de la mémoire du logiciel en tapant :

> rm(pH)

Vérifiez que l’objet pH est désormais absent de la mémoire du logiciel en cherchant à afficher
son contenu :

> pH

Vous obtenez l’erreur suivante :

Erreur : objet ' pH ' introuvable

ou si vous utilisez la version anglaise de R :

Error: object ' pH ' not found

Réintégrez l’objet pH en utilisant la sauvegarde contenue dans le fichier FichierpH.RData


grâce à la commande suivante :

> load("FichierpH.RData")

L’objet pH est à nouveau présent en mémoire et vous pouvez afficher son contenu :

> pH

[1] 1.2 3.5 11.0 7.1 8.2


2.6 Les données sous R 57

Pour lire un fichier de sauvegarde au format de R, vous pouvez aussi simplement le glisser
B dans la fenêtre de la Console R de l’interface graphique du logiciel lorsque vous en disposez
S
U
d’une.

c) Lire et écrire un fichier au format texte


Les données suivantes ont été saisies dans le fichier table1.txt de la façon suivante :

53.5 160
74.4 172
52.6 151
88.6 163
49.2 169

Pour afficher le jeu de données contenu dans le fichier table1.txt à l’écran, bien sûr après
l’avoir sauvegardé dans votre ordinateur, vous utiliserez la fonction read.table.
Exemple : tapez la ligne de commande suivante :

> read.table(paste(Chemin,"table1.txt",sep=""))

V1 V2
1 53.5 160
2 74.4 172
3 52.6 151
4 88.6 163
5 49.2 169

R affiche le tableau de données ainsi créé en numérotant les lignes et en donnant aux
© Dunod – La photocopie non autorisée est un délit.

colonnes un nom.
Si vous avez indiqué comme répertoire de travail celui où se trouve ce fichier, il suffit
d’utiliser la commande :
> read.table("table1.txt")

pour obtenir le même résultat.


Enfin, si vous préférez choisir le fichier à lire en explorant le contenu de l’ordinateur à
l’aide d’une boîte de dialogue conviviale, tapez l’instruction :
> read.table(file.choose())

pour une nouvelle fois obtenir le même résultat.


58 2 • Objets, fonctions et données avec le langage R

Remarque : comme le montre le résultat de l’instruction suivante, R peut lire directement


des fichiers depuis Internet :

> read.table("http://www-irma.u-strasbg.fr/~fbertran/BioStatR/
+ table1.txt")

V1 V2
1 53.5 160
2 74.4 172
3 52.6 151
4 88.6 163
5 49.2 169

Changez le répertoire de travail de R pour celui dans lequel vous avez enregistré les fichiers
que vous deviez télécharger à l’aide la fonction setwd ou du menu Fichier.

Vous aurez besoin de conserver le tableau de données comme un objet en lui donnant un nom
pour pouvoir le réutiliser plus tard.
Exemple : tapez la ligne de commande suivante :
> table1<-read.table("table1.txt")

et demandez l’affichage de cet objet en tapant :


> table1

V1 V2
1 53.5 160
2 74.4 172
3 52.6 151
4 88.6 163
5 49.2 169

Vous pouvez demander seulement l’affichage d’une colonne de cet objet en vous servant de
l’opérateur $.
Exemple :
> table1$V1

[1] 53.5 74.4 52.6 88.6 49.2


2.6 Les données sous R 59

Vous pouvez demander l’élément de la première ligne et de la première colonne en tapant :

> table1[1,1]

[1] 53.5

ou encore en tapant :

> table1[c(1),c(1)]

[1] 53.5

Vous pouvez demander les éléments des deux premières lignes et de la première colonne en
tapant :

> table1[1:2,1]

[1] 53.5 74.4

Vous pouvez demander les éléments des deux premières lignes et des deux premières colonnes
en tapant :

> table1[1:2,1:2]
© Dunod – La photocopie non autorisée est un délit.

V1 V2
1 53.5 160
2 74.4 172

Pour travailler ensuite sur les variables de la table, vous pouvez leur attribuer un nom plus
parlant que la syntaxe utilisée par R.
Exemple : tapez les lignes de commande suivantes :

> masse<-table1$V1
> taille<-table1$V2
> masse

[1] 53.5 74.4 52.6 88.6 49.2


60 2 • Objets, fonctions et données avec le langage R

> taille

[1] 160 172 151 163 169

Si vous avez spécifié le nom des variables dans la première ligne de votre fichier de données,
vous devez l’indiquer par l’option header=TRUE ou éventuellement header=T.
Exemple :

> read.table("table2.txt",header=TRUE)

Masse Taille
1 53.5 160
2 74.4 172
3 52.6 151
4 88.6 163
5 49.2 169

Par défaut, R lit la première ligne comme une ligne de données et nomme les colonnes sous la
forme V1, V2, . . . , comme pour table1.txt.
Par défaut, un point (.) est utilisé pour les décimales. Mais si les décimales sont notées par
une virgule dans votre fichier de données il faut le spécifier en utilisant dec=",".
Exemple : en tapant la ligne de commande suivante :

> read.table("table3.txt",dec=",")

Par défaut, un espace est utilisé pour séparer les valeurs appartenant à différentes colonnes.
Mais si les colonnes sont séparées par un autre caractère dans votre fichier de données il faut le
spécifier en utilisant l’argument sep.
Exemple : dans le cas où le séparateur est un point virgule, vous utiliserez l’argument
sep=";" :

> read.table("table4.txt",sep=" ;")


2.6 Les données sous R 61

Pour enregistrer un tableau de données ou une matrice stockée dans l’objet data dans un
fichier au format texte, vous utiliserez la commande suivante :

> write.table(data,file=file.choose())

d) Lire et écrire un fichier au format csv anglo-saxon ou français


Il en existe deux types de fichiers .csv :
1. anglo-saxon avec un  .  comme séparateur décimal et une  ,  comme séparateur de
colonne et,
2. français avec une  ,  comme séparateur décimal et un  ;  comme séparateur de colonne.
Le premier type se lit avec la fonction read.csv illustrée avec l’instruction suivante :

> read.csv("table6.csv")

et le second avec la fonction read.csv2 illustrée avec l’instruction suivante :

> read.csv2("table5.csv")

Pour enregistrer un tableau de données ou une matrice stockée dans l’objet data dans un
fichier au format csv anglo-saxon, vous utiliserez la commande suivante :

> write.csv(data,file=file.choose())

Pour enregistrer un tableau de données ou une matrice stockée dans l’objet data dans un
fichier au format csv français, vous utiliserez la commande suivante :

> write.csv2(data,file=file.choose())

La bibliothèque Rcmdr propose une interface graphique pour le langage R qui permet à son
utilisateur de réaliser des tâches de manipulation de données et des analyses statistiques
simples au travers de menus et de boîtes de dialogue. Cette bibliothèque permet de réaliser
l’import des fichiers textes (.csv par exemple) ou au format SPSS, SAS et même Excel. En effet,
il est possible de lire aussi bien les fichiers au format .xls (Excel 97-2003) ou au format .xlsx
(Excel 2007-2016). Nous procédons de la manière suivante.
62 2 • Objets, fonctions et données avec le langage R

1. La commande d’importation se trouve dans l’entrée Import data du menu Data.

Figure 2.1

2. Il faut alors répondre à quelques questions sur la forme du tableau de données.

Figure 2.2

3. Puis, il faut indiquer quel est le classeur Excel à lire.

Figure 2.3
2.6 Les données sous R 63

4. Enfin, choisir la feuille à lire parmi celles présentes dans le classeur.

Figure 2.4

e) Lire et écrire un fichier au format Microsoft Excel dans l’un des trois environnements
Windows, Mac OS X ou Linux
La bibliothèque xlsx permet d’importer ou d’exporter des fichiers aux formats .xls (Excel
97-2003) ou .xlsx (Excel 2007-2013). Elle repose sur le langage Java qui doit donc être, comme
c’est presque systématiquement le cas de nos jours, présent sur votre ordinateur. Bien que la
bibliothèque xlsx soit très complète et agréable à utiliser, sa vignette, à laquelle vous pouvez
accéder en exécutant l’instruction vignette("xlsx"), après avoir installé cette bibliothèque
bien sûr, est à ce jour peu détaillée. Nous vous proposons donc ci-dessous un exemple simple de
son utilisation. Installez la bibliothèque xlsx. L’instruction suivante permet de lire la première
feuille de calcul d’un classeur Excel :

> library(xlsx)
> (data<-read.xlsx(file.choose(),1))

Masse Taille
1 53.5 160
2 74.4 172
© Dunod – La photocopie non autorisée est un délit.

3 52.6 151
4 88.6 163
5 49.2 169

Vous pouvez modifier le comportement par défaut de la fonction read.xlsx en utilisant


différents arguments. Ceux-ci sont décrits dans l’aide, rédigée en anglais, de cette fonction,
accessible en exécutant ?read.xlsx. Vous pouvez aussi les retrouver grâce à la fonction args
que vous avez déjà rencontrée dans ce chapitre.

> args(read.xlsx)

function (file, sheetIndex, sheetName = NULL, rowIndex = NULL,


startRow = NULL, endRow = NULL, colIndex = NULL, as.data.frame = TRUE,
64 2 • Objets, fonctions et données avec le langage R

header = TRUE, colClasses = NA, keepFormulas = FALSE,


encoding = "unknown", ...)
NULL

Voici le rôle que joue chacun d’entre eux ainsi que leur valeur utilisée par défaut si vous ne la
spécifiez pas lorsque vous vous servez de la fonction read.xlsx.
– file est le nom du classeur Excel à importer dans R et le premier des deux seuls arguments
qui n’a pas de valeur par défaut.
– sheetIndex est le numéro de la feuille à lire dans le classeur Excel et le second des deux
seuls arguments qui n’a pas de valeur par défaut.
– sheetName est le nom de la feuille à lire dans le classeur Excel. Il faut fournir soit le
numéro de la feuille avec sheetIndex soit son nom avec sheetName.
– rowIndex est un vecteur de nombres qui correspondent aux lignes de la feuille qu’il faut
extraire. Par défaut, la valeur NULL est utilisée et toutes les lignes non vides sont extraites
sauf si une restriction est faite à l’aide de l’une des deux options startRow ou endRow.
– startRow est un nombre qui désigne la première ligne à extraire. Par défaut, si startRow =
NULL, la première ligne extraite est la première ligne de la feuille. Cette option n’est active
que si rowIndex = NULL.
– endRow est un nombre qui désigne la dernière ligne à extraire. Par défaut, si endRow =
NULL, la dernière ligne extraite est la dernière ligne non vide de la feuille. Cette option
n’est active que si rowIndex = NULL.
– colIndex est un vecteur de nombres qui correspondent aux lignes de la feuille qu’il faut
extraire. Par défaut, la valeur NULL est utilisée et toutes les lignes non vides sont extraites.
– as.data.frame est une valeur logique, TRUE par défaut, qui indique si le résultat de
l’extraction doit être, ou non, transformé en data.frame. Si la valeur FALSE est utilisée,
le résultat de l’extraction est une liste dont chacun des éléments correspond au contenu de
l’une des colonnes lues.
– header est une valeur logique, TRUE par défaut, qui indique si la première ligne lue, c’est-
à-dire celle qui correspond au premier élément du vecteur rowIndex, contient, ou non, le
nom des colonnes.
– colClasses est un vecteur de caractères qui représentent la classe de chacune des colonnes.
Il est recyclé autant de fois que nécessaire. La valeur par défaut, NA, indique que la classe
de chacune des variables sera déterminée par la classe de la première cellule non vide
de cette colonne. Il est possible de ne spécifier qu’une partie des classes des colonnes.
Pour les autres colonnes, la valeur de colClasses sera NA et R déterminera leur classe
automatiquement.
– keepFormulas est une valeur logique, FALSE par défaut, qui indique si les formules Excel
présentent dans les cellules doivent être, ou non, conservée comme du texte dans R et ne
pas être évaluées avant l’extraction.
2.6 Les données sous R 65

– encoding est l’encodage à déclarer pour les chaînes de caractères qui sont extraites. Cette
option permet de spécifier un encodage Latin-1 ou UTF-8.

Remarque :
1. La fonction read.xlsx est assez lente pour les feuilles de calcul de grande taille (plus
de 100 000 cellules). En consultant la page d’aide, vous constaterez que la fonction
read.xlsx2 existe également. C’est elle dont il faut se servir en présence de ces
grandes feuilles de calcul car elle s’appuie plus sur le langage Java et est, grâce à cela,
bien plus performante. Par contre, elle ne reconnaît pas les dates automatiquement
qu’il faut déclarer avec l’option colClasses.
2. Dans la pratique, vous n’utiliserez que les arguments file, sheetIndex ou
sheetName. Ce sont donc les seuls dont vous devez vous souvenir.
3. Si vous ne voulez pas extraire la totalité d’une feuille de calcul, pensez à utiliser les
arguments rowIndex, ou startRow et endRow, et colIndex.

Vous calculez le BMI de chacun des individus du jeu de données que vous stockez dans la
colonne BMI de l’objet data :

> data$BMI<-data$Masse/(data$Taille/100)^2

L’objectif est maintenant d’enregistrer le résultat de ce calcul dans un classeur Excel.


L’instruction suivante permet de créer le nouveau classeur table10.xlsx, au format
Excel 2007-2013, et d’y enregistrer les données contenus dans l’objet data dans la feuille
FeuilleTest :

> write.xlsx(x = data, file = "table10.xlsx", sheetName = "FeuilleTest",


© Dunod – La photocopie non autorisée est un délit.

+ row.names = FALSE)

L’option row.names = FALSE précise que vous ne voulez pas exporter les noms des lignes.
En utilisant l’option append = TRUE, vous pouvez ajouter à un fichier existant des données
en y créant une nouvelle feuille de calcul :

> write.xlsx(x = data, file = "table10.xlsx", sheetName = "AutreFeuilleTest",


+ row.names = FALSE, append = TRUE)

Le fichier table10.xlsx comporte désormais deux feuilles de calcul : FeuilleTest et


AutreFeuilleTest.
66 2 • Objets, fonctions et données avec le langage R

Remarque : attention, par défaut la valeur de l’option append est FALSE et par conséquent
si vous souhaitez ajouter une feuille à un classeur, il faut absolument préciser append =
TRUE car sinon vous détruirez le fichier existant et le remplacerez par un fichier qui ne
contient plus que la feuille que vous vouliez ajouter.

Quelles sont les options possibles de la fonction write.xlsx ?

> args(write.xlsx)

function (x, file, sheetName = "Sheet1", col.names = TRUE, row.names =


TRUE, append = FALSE, showNA = TRUE)
NULL

– x est un data.frame à exporter dans le classeur.


– file est le fichier cible à compléter ou à créer.
– sheetName est une chaîne de caractères avec le nom, "Sheet1" par défaut, de la feuille
de calcul à créer.
– col.names est une valeur logique, TRUE par défaut, qui indique si les noms des colonnes
doivent, ou non, être aussi exportés.
– row.names est une valeur logique, TRUE par défaut, qui indique si les noms des lignes
doivent, ou non, être aussi exportés.
– append est une valeur logique, FALSE par défaut. Si append = TRUE, la feuille sera ajou-
tée à la suite de celles qui existent dans le classeur. Si, par contre, append = FALSE, toutes
les feuilles existantes seront supprimées et seule la feuille à ajouter sera présente dans le
classeur.
– showNA est une valeur logique, TRUE par défaut. Si showNA = FALSE, les valeurs NA seront
remplacées par des cellules vides.
Il est possible d’aller plus loin en écrivant à un endroit précis dans une feuille de calcul,
existante ou non, ou en exportant plus que de simples tableaux de données.
Commencez par lire le classeur Excel table7.xls avec l’instruction suivante :

> wb <-loadWorkbook(file.choose())

Dans le cas d’un ajout à une feuille existante, récupérez l’ensemble des feuilles existantes
dans le classeur avec la première instruction puis sélectionnez, à l’aide de la seconde instruction,
la feuille dans laquelle vous souhaitez faire l’ajout, ici la première feuille du classeur :

> feuilles <-getSheets(wb)


> feuille <-feuilles[[1]]

Dans le cas d’un ajout dans une nouvelle feuille, nommée ajout1, exécutez la commande :
2.6 Les données sous R 67

> feuille <-createSheet(wb, sheetName="ajout1")

L’instruction suivante ajoutera le tableau de données data à partir de la première ligne de la


colonne E :

> addDataFrame(x = data, sheet = feuille, row.names = FALSE, startRow = 1,


+ startColumn = 5)

Vous souhaitez intégrer un graphique représentant ces données dans une nouvelle feuille
nommée graphique. Créez la feuille :

> feuille2 <- createSheet(wb, sheetName="graphique")

Enregistrez le graphique dans un fichier :

> png(filename = "matplotdata.png", width = 6, height = 8, units = "in",


+ pointsize=12, res=120)
> plot(data)
> dev.off()

Ajoutez le graphique à la feuille nommée graphique :

> addPicture("matplotdata.png", feuille2, scale = 1, startRow = 2, startColumn


+ = 2)

Les options startRow et startColumn indiquent où doit se situer le coin supérieur gauche
du graphique. Il faudra vous souvenir de l’option scale qui permet d’ajuster l’espace occupé
© Dunod – La photocopie non autorisée est un délit.

par le graphique en modifiant le paramètre « échelle » d’Excel. En particulier, si vous voulez


conserver la taille originale de votre graphique tout en augmentant sa résolution (avec l’op-
tion res de la fonction png ci-dessus), il faudra diminuer d’autant la valeur de l’option scale.
Pour vous en convaincre nous ajouterons le même graphique avec une résolution de 300 points
par pouce, en dessous du précédent avec une valeur de scale de .4 puis de 1.

> png(filename = "matplotdata2.png", width = 6, height = 8, units = "in",


+ pointsize=12, res=300)
> plot(data)
> dev.off()
> addPicture("matplotdata2.png", feuille2, scale = .4, startRow = 62,
+ startColumn = 1)
> addPicture("matplotdata2.png", feuille2, scale = 1, startRow = 62,
+ startColumn = 14)
68 2 • Objets, fonctions et données avec le langage R

Ne pas oublier de sauver le classeur :

> saveWorkbook(wb,"table8bis.xls")

Remarque : la fonction saveWorkbook conservera le format originel (.xls ou .xlsx) du


classeur lors de l’enregistrement. Si vous souhaitiez recommencer les étapes précédentes
en utilisant le classeur table9.xlsx, elles seraient toutes identiques. Cependant, il
faudrait bien penser à préciser la bonne extension lors de la sauvegarde du classeur :
saveWorkbook(wb, "table10bis.xlsx").

Dans la vignette intitulée xlsxReadWrite de la bibliothèque BioStatR, nous développons un


exemple plus complexe avec à nouveau l’intégration d’un graphique créé par R dans un clas-
seur Excel, ainsi que la mise en forme des cellules depuis R. Vous pouvez d’ores et déjà voir le
résultat en accédant aux deux fichiers ExportXls.xls et ExportXlsx.xlsx disponibles sur Inter-
net. Le script de cet exemple est contenu dans le fichier ExportXlsx.R également disponible
en ligne. Pour lire la vignette, il suffit d’exécuter l’instruction vignette(xlsxReadWrite).

f) Lire, écrire et mettre à jour des fichiers au format Microsoft Excel, Excel 2007, Access
et Access 2007 dans un environnement Windows
Il est possible de lire des fichiers au format Microsoft Excel, Excel 2007, Access et Access
2007 en utilisant les fonctionnalités ODBC de l’environnement Windows. L’utilisation de ces
fonctions est plus complexe que celles décrites dans le paragraphe précédent mais permet l’accès
à un plus grand nombre de formats de fichier et pourra donc s’avérer utile.
La bibliothèque utilisée ci-dessous existe aussi pour linux et Mac OSX mais les fonctions
odbcConnectExcel, odbcConnectAccess, odbcConnectExcel2007 et odbcConnectAc-
ces2007 n’y sont pas présentés.

RODBC ne fonctionnera qu’avec Microsoft office d’installé sur votre ordinateur. De plus, si
vous avez Office 32 bits, vous devez utiliser R 32 bits pour pouvoir vous servir de RODBC. Il
en va de même si vous avez Office 64 bits, vous devez utiliser R 64 bits.

> library(RODBC)
> connexion<-odbcConnectExcel()
> data<-sqlFetch(connexion,"Feuil1")
> close(connexion)
> data

Dans les instructions précédentes, Feuil1 est le nom de la feuille Excel du classeur
dont il faut importer les données. Il peut changer en fonction de votre fichier. Ce nom peut
se retrouver soit en visualisant le fichier à l’aide d’Excel, soit en exécutant la commande
sqlTables(connexion) après avoir établi une connexion avec le classeur Excel à l’aide
2.6 Les données sous R 69

de la fonction odbcConnectExcel. La fonction odbcConnectExcel crée une connexion


avec le classeur Excel où sont stockées les informations à lire. Cette connexion est stockée
dans l’objet connexion. La fonction sqlFetch permet de récupérer le contenu d’une feuille
du classeur grâce aux informations sur ce classeur qui se trouvent dans l’objet connexion.
Il faut impérativement fermer la connexion qui a été définie avec le classeur Excel si vous
voulez pouvoir vous en servir normalement. N’oubliez donc pas d’exécuter la commande
close(connexion) !

À la place de la fonction odbcConnectExcel, vous utiliserez :


– la fonction odbcConnectAccess pour lire des fichiers au format au format Access,
– la fonction odbcConnectExcel2007 pour lire des fichiers au format Excel 2007,
– la fonction odbcConnectAccess2007pour lire des fichiers au format Access 2007.
Les instructions suivantes vous montrent comment récupérer le jeu de données qui est dans la
première feuille du fichier table7.xls, calculer le BMI de chacun des sujets puis enregistrer
le jeu de données data dans une nouvelle feuille appelée data d’un classeur Microsoft Excel
existant. C’est la fonction sqlSave qui permet de sauvegarder les résultats.

> connexion<-odbcConnectExcel(,readOnly = FALSE)


> data<-sqlFetch(connexion,"Feuil1")
> data$BMI<-data$Masse/(data$Taille/100)^2
> sqlSave(connexion,data,rownames = FALSE)
> close(connexion)

Pour mettre à jour une feuille existante d’un classeur à l’aide d’un jeu de données, il faut
utiliser la fonction sqlUpdate. Pour pouvoir fonctionner, la fonction sqlUpdate a besoin de
connaître le nom de la colonne permettant d’identifier chacun des individus du jeu de données,
© Dunod – La photocopie non autorisée est un délit.

c’est pourquoi vous utiliserez la Feuille 2 du classeur table7.xls. L’intérêt de cette approche
est qu’il est possible de mettre à jour des données sans avoir à reproduire l’ordre exact avec
lequel les individus sont enregistrés dans le fichier à modifier. Remarquez également que dans
le fichier à mettre à jour, la colonne BMI existe déjà et que toutes ses valeurs sont égales à 0.

> connexion<-odbcConnectExcel(,readOnly = FALSE)


> data<-sqlFetch(connexion,"Feuil2")
> data$BMI<-data$Masse/(data$Taille/100)^2
> sqlUpdate(connexion,data,"Feuil2",index="F1")
> close(connexion)

La fonction odbcCloseAll permet de fermer toutes les connexions ouvertes avec des fichiers.
Pensez à vous en servir pour repartir de zéro si vous avez des difficultés.
70 2 • Objets, fonctions et données avec le langage R

g) Lire un fichier au format Microsoft Excel dans les trois environnements Windows,
Mac OS X ou Linux
La bibliothèque gdata permet de lire des fichiers au format Excel 97-2003 et au format Excel
2007 si le langage de progammation Perl est installé sur votre ordinateur, ce qui est le cas par
défaut si vous utilisez Mac OS X ou un système de type Linux. Si vous utilisez un environne-
ment Windows, vous pouvez vous procurer une version gratuite de Perl sur internet. Exécutez
l’instruction suivante pour installer cette bibliothèque :

> install.packages("gdata")

Vous remarquerez que R a de lui-même installé la bibliothèque gtools dont la bibliothèque


gdata a besoin pour fonctionner. Commencez par mettre en mémoire le contenu de la biblio-
thèque gdata.

> library(gdata)

Lors du chargement de la bibliothèque, R vous informe si la fonction read.xls est opération-


nelle. Si cela n’est pas le cas, vous devez soit installer le langage perl, soit exécuter l’instruction
installXLSXsupport(). Il se peut que des messages d’avertissement apparaissent. Ceci est
dû au fait que R détecte plusieurs fonctions qui portent le même nom et qui proviennent de
différentes bibliothèques que vous avez chargées en mémoire. R utilisera par défaut celle de la
dernière bibliothèque dont le contenu a été mis en mémoire et « masquera » donc les autres.
Utilisez la fonction read.xls sur le fichier table7.xls.

> read.xls(file.choose())

Masse Taille
1 53.5 160
2 74.4 172
3 52.6 151
4 88.6 163
5 49.2 169

Vous constatez que par défaut la fonction read.xls du package gdata lit la première feuille
du classeur Excel. Si vous souhaitez en lire une autre, vous utiliserez l’argument sheet. Vous
voulez lire la deuxième feuille du classeur table7.xls, vous exécutez donc la commande
suivante :

> read.xls(file.choose(),sheet=2)
2.6 Les données sous R 71

X Masse Taille BMI


1 Indiv_1 53.5 160 0
2 Indiv_2 74.4 172 0
3 Indiv_3 52.6 151 0
4 Indiv_4 88.6 163 0
5 Indiv_5 49.2 169 0

Enfin n’oubliez pas que R peut aller lire des fichiers stockés sur Internet sans que vous ayez
besoin de les télécharger au préalable. La commande suivante vous montre comment utiliser
cette possibilité du logiciel en lisant le fichier table7.xls directement sur le site internet des
auteurs :

> read.xls("http://www-irma.u-strasbg.fr/~fbertran/BioStatR/table7.xls",
+ sheet=1)

Downloading...
essai de l’URL ’http://www-irma.u-strasbg.fr/~fbertran/BioStatR/table7.xls’
Content type ’application/vnd.ms-excel’ length 18432 bytes (18 Kb)
URL ouverte
downloaded 18 Kb

Masse Taille
1 53.5 160
2 74.4 172
3 52.6 151
4 88.6 163
5 49.2 169
© Dunod – La photocopie non autorisée est un délit.

Remarque : il existe d’autres bibliothèques pour lire, écrire ou manipuler des fichiers au
format Microsoft Excel depuis R.
– XLConnect qui est également basé sur le langage Java. La documentation fournie pour
cette bibliothèque est riche. En particulier, la vignette XLConnect permet un démarrage
aisé. (vignette("XLConnect") ou vignette("XLConnectImpatient")).
– xlsReadWrite qui n’est plus mise à jour et qui nécessite un environnement 32 bits.
72 2 • Objets, fonctions et données avec le langage R

EN RÉSUMÉ

Commande Description
s<-valeur Affecte valeur à l’objet s.
s=valeur
rm(s) Supprime l’objet s.
mode(s) Affiche le mode (numérique, caractère,. . .) de l’objet
s.
class(s) Affiche la classe (data.frame,. . .) de l’objet s.
names(s) Renvoie les noms des éléments de l’objet s.
Si s est un tableau de données, renvoie les noms des
colonnes.
length(s) Affiche le nombre d’éléments contenus dans l’objet s.
dim(s) Donne les dimensions de l’objet s.
as.character(s) Transforme l’objet s en caractères.
as.list(s) Transforme l’objet s en liste.
as.logical(s) Transforme l’objet s en booléen.
as.numeric(s) Transforme l’objet s en numérique.
is.character(s) Teste si l’objet s est un caractère.
is.list(s) Teste si l’objet s est une liste.
is.logical(s) Teste si l’objet s est un booléen.
is.na(s) Teste si l’objet s a des valeurs manquantes.
is.numeric(s) Teste si l’objet s est numérique.
is.null(s) Teste si l’objet s est nul.
c(s1 , s2 , ..., sk ) Crée un vecteur en collant les s1 , s2 , ..., sk dans
l’ordre.
Exemple : c(2:5,7,seq(8,9,0.5)) produit
2,3,4,5,7,8,8.5,9.
sort(s) Trie les coordonnées d’un vecteur par ordre croissant.
2.6 Les données sous R 73

Commande Description
rev(sort(s)) Trie les coordonnées d’un vecteur par ordre
décroissant.
s[I] Crée une suite composée des éléments de la suite s
indexées par I. Ici I peut être de la forme :
I est entier. Exemple : s[3] renvoie le 3ème élément
de s.
I est une suite. Exemple : s[3:5] renvoie les
3ème,. . .,5ème éléments de s.
I est une condition. Exemple : s[t>3] renvoie les
éléments de s correspondants aux éléments de t qui
sont supérieurs à 3.
s[-I] Crée une suite composée des éléments de s qui sont
complémentaires à ceux indexés par I.
tail(s,n=k) Renvoie les k derniers éléments ou les dernières
lignes de l’objet s.
nrow(s) Donne le nombre de lignes de l’objet s.
ncol(s) Donne le nombre de colonnes de l’objet s.
tab$col Renvoie le vecteur composé des éléments de la
colonne col de la table tab.
Exemple : e<-amis$email initialise la variable e
avec les valeurs de la colonne email de la table amis.
rbind(r1 , ..., rk ) Crée une matrice ou un tableau de données en collant
les r1 , ..., rk l’un en dessous de l’autre.
cbind(c1 , ..., ck ) Crée une matrice ou un tableau de données en collant
les c1 , ..., ck l’un à côté de l’autre.
Saisit  au clavier  un jeu de données numériques.
© Dunod – La photocopie non autorisée est un délit.

scan()
getwd() Affiche le répertoire de travail dans la console.
setwd(Chemin) Définit Chemin comme répertoire de travail.
file.choose() Permet de sélectionner facilement un fichier stocké
sur l’ordinateur avec une boîte de dialogue conviviale.
load("file") Charge le contenu du fichier de sauvegarde  file  au
format R en mémoire.
save(objet,file="file") Sauvegarde l’objet objet dans le fichier de
sauvegarde  file .
74 2 • Objets, fonctions et données avec le langage R

Commande Description
read.table("file") Lit le fichier de données file ne contenant pas les
noms des variables en première ligne.
read.table("file",header=T) Lit le fichier de données file en spécifiant que les
noms des variables sont contenus dans la première
ligne.
Exemple :
t<-read.table("table.txt",header=T).
write.table(objet,"file") Écrit objet dans le fichier de données file.
read.csv("file") Lit un fichier de données file au format CSV
anglo-saxon.
write.csv(objet,"file") Écrit objet dans un fichier de données file au
format CSV anglo-saxon.
read.csv2("file") Lit un fichier de données file au format CSV
français.
write.csv2(objet,"file") Écrit objet dans un fichier de données file au
format CSV français.
Package xlsx Environnement Windows, Mac OS X ou Linux
read.xlsx("file", Lit la feuille de calcul numéro sheetIndex du fichier
sheetIndex) de données file au format Excel.
Package xlsx Environnement Windows, Mac OS X ou Linux
write.xlsx(objet,"file", Écrit objet dans la feuille de calcul sheetName du
sheetName) fichier de données file au format Excel.
Package gdata Environnement Windows, Mac OS X ou Linux
read.xls("file") Lit un fichier de données file au format Excel.
Pour utiliser les fonctions read.xlsx et write.xlsx, il faut au préalable charger le package
xlsx.

EXERCICES

Exercice 2.1 Construction de vecteurs


1) Créez le vecteur v égal à (101; 102; . . . ; 112).
2) Créez le vecteur w de longueur égale à 12 formé de quatre fois la suite de nombres (4; 6; 3).
3) Créez le vecteur x composé de huit fois le chiffre 4, de sept fois le chiffre 6 et de cinq fois le
chiffre 3.
Exercices 75

Exercice 2.2 Encore des vecteurs


1) Saisissez la variable masse contenant les 15 valeurs suivantes :

28; 27, 5; 27; 28; 30, 5; 30; 31; 29, 5; 30; 31; 31; 31, 5; 32; 30; 30, 5.

2) Saisissez la variable masse1 contenant les 5 valeurs suivantes : 40; 39; 41; 37, 5; 43.
3) Sans refaire de saisie, créez la variable nouvelle.masse contenant 20 valeurs :
– les cinq valeurs de masse1 répétées deux fois
– et les dix dernières valeurs de masse.
4) Enregistrez, dans votre répertoire de travail, la variable nouvelle.masse dans une feuille
nommée "Nouvelle Masse" du classeur Excel "Masse.xls".

Exercice 2.3 Faites preuve d’imagination


1) Choisissez les noms de 10 personnes et créez le vecteur nom les contenant.
2) Créez le vecteur ou le tableau de données age contenant l’âge des 10 personnes précédentes
(entre 20 et 60 ans) et utilisez les noms des personnes comme légende pour le vecteur age ou
comme nom des lignes pour le tableau de données age.
3) Créez le vecteur ou le tableau de données masse contenant la masse des 10 personnes (entre
50 et 100 kg) en utilisant à nouveau le nom des personnes comme légende pour ce vecteur ou
comme nom des lignes pour ce tableau de données.
4) Créez le vecteur ou le tableau de données taille contenant la taille des 10 personnes (entre
1 m 60 et 2 m) en utilisant à nouveau le nom des personnes comme légende pour ce vecteur ou
© Dunod – La photocopie non autorisée est un délit.

comme nom des lignes pour ce tableau de données.


5) Créez le vecteur masse.lourde contenant la masse des personnes de plus de 80 kg en
utilisant à nouveau le nom des personnes comme légende pour ce vecteur.
6) Créez le vecteur taille.masse.lourde contenant la taille des personnes de plus de 80 kg
en veillant à conservant le nom associé à chaque masse.
7) Créez le vecteur taille.age.masse.lourde contenant la taille des personnes de plus de
80 kg et âgées de plus de 30 ans en veillant à conservant le nom associé à chaque taille. Pour
répondre à cette question, vous pourrez utiliser le connecteur logique ET dont la syntaxe est
donnée dans le problème ci-dessous ou dans l’aide sur les opérateurs logiques accessible en
tapant l’instruction ?Logic.
76 2 • Objets, fonctions et données avec le langage R

PROBLÈME

Problème 2.1 Les opérateurs logiques


L’extraction ou le remplacement de valeurs dans un vecteur passe par l’utilisation de vecteurs
logiques.

1) Construisez le vecteur suite qui est une suite d’entiers allant de 1 à 12.
2) Vous souhaitez connaître les éléments du vecteur suite strictement supérieurs à 6. Quelle
est la ligne de commande que vous devez taper pour obtenir le résultat ?

Il est possible d’associer des vecteurs logiques logic1 et logic2 en utilisant les connecteurs
logiques suivants :
– !logic1 est la négation de logic1, également appelé opérateur NON, c’est-à-dire le
vecteur dont les éléments sont TRUE lorsque ceux de logic1 sont FALSE et dont les
éléments sont FALSE lorsque ceux de logic1 sont TRUE.
– logic1 & logic2 est la conjonction, également appelé opérateur ET, des deux vecteurs
logiques logic1 et logic2.
– logic1 && logic2 est identique à logic1[1] & logic2[1] et seul le premier élément
de chacun des deux vecteurs est utilisé.
– logic1 | logic2 est la disjonction inclusive, également appelé opérateur OU inclusif,
des deux vecteurs logiques logic1 et logic2.
– logic1 || logic2 est identique à logic1[1] | logic2[1] et seul le premier élément
de chacun des deux vecteurs est utilisé.
– xor(logic1, logic2) est la disjonction exclusive, également appelé opérateur OU
exclusif, des deux vecteurs logiques logic1 et logic2.

3) Vous souhaitez connaître les éléments du vecteur suite strictement inférieurs à 6. Quelle est
la ligne de commande que vous devez taper pour obtenir le résultat ?
4) Vous souhaitez connaître les éléments du vecteur suite égaux à 6. Quelle est la ligne de
commande que vous devez taper pour obtenir le résultat ?
5) Vous souhaitez savoir si le premier élément du vecteur suite est inférieur ou égal à 8 et
supérieur ou égal à 4. Quelle est la ligne de commande que vous devez taper pour obtenir le
résultat ?
Problème 77

6) Vous souhaitez connaître les éléments du vecteur suite inférieurs ou égaux à 4 ou supérieurs
ou égaux à 8. Quelle est la ligne de commande que vous devez taper pour obtenir le résultat ?
7) Vous souhaitez savoir si le premier élément du vecteur suite est inférieur ou égal à 4 ou
supérieur ou égal à 8. Quelle est la ligne de commande que vous devez taper pour obtenir le
résultat ?
8) Vous allez maintenant construire les tables de vérité des opérateurs logiques à l’aide de la
fonction outer. La fonction outer permet d’appliquer une fonction de deux arguments à tous
les couples d’éléments que vous pouvez former à partir des coordonnées de deux vecteurs.
Exemple : vous considérez le vecteur u des entiers de 1 à 10 et le vecteur v des entiers de
1 à 8. Vous souhaitez construire le tableau à deux dimensions avec le produit de toutes les
coordonnées des deux vecteurs. Vous exécutez la commande suivante :
> u<-1:10
> v<-1:8
> outer(u,v,"*")

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]


[1,] 1 2 3 4 5 6 7 8
[2,] 2 4 6 8 10 12 14 16
[3,] 3 6 9 12 15 18 21 24
[4,] 4 8 12 16 20 24 28 32
[5,] 5 10 15 20 25 30 35 40
[6,] 6 12 18 24 30 36 42 48
[7,] 7 14 21 28 35 42 49 56
[8,] 8 16 24 32 40 48 56 64
[9,] 9 18 27 36 45 54 63 72
[10,] 10 20 30 40 50 60 70 80
© Dunod – La photocopie non autorisée est un délit.

Exécutez les commandes suivantes et remarquez qu’elles explicitent le comportement des


opérateurs logiques en cas de présence de valeurs manquantes.

> x<-c(NA,FALSE,TRUE)
> names(x)<-as.character(x)
> !x

<NA> FALSE TRUE


NA TRUE FALSE

> outer(x,x,"&")
78 2 • Objets, fonctions et données avec le langage R

<NA> FALSE TRUE


<NA> NA FALSE NA
FALSE FALSE FALSE FALSE
TRUE NA FALSE TRUE

> outer(x,x,"|")

<NA> FALSE TRUE


<NA> NA NA TRUE
FALSE NA FALSE TRUE
TRUE TRUE TRUE TRUE

> outer(x,x,"xor")

<NA> FALSE TRUE


<NA> NA NA NA
FALSE NA FALSE TRUE
TRUE NA TRUE FALSE

DU MAL À DÉMARRER

➩ Exercice 2.1
1) Utilisez l’opérateur ":".
2) Utilisez la fonction rep et la fonction c pour créer un vecteur.
3) Utilisez la fonction c et la fonction rep pour créer un vecteur. Faites attention à l’ordre
que vous allez donner à ces deux fonctions.

➩ Exercice 2.2
1) Utilisez la fonction c.
2) Utilisez la fonction c.
3) Utilisez la fonction c, la fonction rep et relisez le paragraphe 2.4.2 b) intitulé  Afficher
une ou plusieurs coordonnées d’un vecteur .
4) Relisez le paragraphe 2.6.3 e) intitulé  Lire et créer un fichier au format Excel 97-2003
dans un environnement Windows  ainsi que le paragraphe 2.6.3 f) intitulé  Lire, écrire
et mettre à jour des fichiers au format Microsoft Excel, Excel 2007, Access et Access
2007 dans un environnement Windows .
Solution des exercices 79

➩ Exercice 2.3
1) Utilisez la fonction c.
2) Utilisez la fonction c. Relisez le paragraphe 2.6.2 intitulé  Créer un tableau de données
sous R . Puis utilisez la fonction data.frame et l’option row.names.
3) Mêmes consignes qu’à la question 2).
4) Mêmes consignes qu’à la question 2).
5) Pensez à vous servir des crochets de la même manière que lorsque vous utilisez des
matrices et de l’option drop=FALSE.
6) Mêmes consignes qu’à la question 5).
7) Commencez par regarder l’aide sur les opérateurs logiques, puis pensez à utilisez aussi
l’option drop=FALSE.

➩ Problème 2.1
1) Utilisez l’opérateur ":".
2) Pensez à vous servir de >.
3) Pensez à vous servir de < ou de ! et de >=.
4) Pensez à vous servir de == ou de <= et de >=.
5) Pensez à vous servir de &&.
6) Pensez à vous servir de |.
7) Pensez à vous servir de ||.
8) Exécutez les commandes indiquées dans l’énoncé.
© Dunod – La photocopie non autorisée est un délit.

SOLUTION DES EXERCICES

Exercice 2.1
1)
> v<-101:112
> v

[1] 101 102 103 104 105 106 107 108 109 110 111 112
80 2 • Objets, fonctions et données avec le langage R

Vous auriez également pu obtenir le même résultat avec la ligne de commande suivante :

> v<-seq(101,112)

2)

> w<-rep(c(4,6,3),4)
> w

[1] 4 6 3 4 6 3 4 6 3 4 6 3

Remarque : vous vérifiez au passage que la dimension de w est celle demandée par
l’énoncé, c’est-à-dire égale à 12.

> length(w)

[1] 12

3)

> x<-c(rep(4,8),rep(6,7),rep(3,5))
> x

[1] 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 3 3 3 3 3

La longueur de x est bien conforme à vos attentes :

> length(x)

[1] 20

Vous auriez également pu obtenir le même résultat avec la ligne de commande suivante :

> x<-rep(c(4,6,3),c(8,7,5))
Solution des exercices 81

Les fonctions : seq, c et rep pour créer des vecteurs.


B
S
U

Exercice 2.2
1)

> masse<-c(28,27.5,27,28,30.5,30,31,29.5,30,31,31,31.5,32,30,30.5)
> masse

[1] 28.0 27.5 27.0 28.0 30.5 30.0 31.0 29.5 30.0 31.0 31.0 31.5 32.0 30.0
[15] 30.5

2)

> masse1<-c(40,39,41,37.5,43)
> masse1

[1] 40.0 39.0 41.0 37.5 43.0

3) Pour répondre à cette question, il y a deux méthodes.


– Première méthode :

> nouvelle.masse<-c(rep(masse1,2),masse[6:15])
> nouvelle.masse
© Dunod – La photocopie non autorisée est un délit.

[1] 40.0 39.0 41.0 37.5 43.0 40.0 39.0 41.0 37.5 43.0 30.0 31.0 29.5 30.0
[15] 31.0 31.0 31.5 32.0 30.0 30.5

Remarque : vous vérifiez au passage que la dimension de nouvelle.masse est celle


demandée par l’énoncé, c’est-à-dire égale à 20.

> length(nouvelle.masse)

[1] 20
82 2 • Objets, fonctions et données avec le langage R

– Deuxième méthode : pour obtenir les dix dernières valeurs du vecteur masse, vous avez
peut-être procédé de la manière suivante :

> (nouvelle.masse<-c(rep(masse1,2),tail(masse,n=10)))

[1] 40.0 39.0 41.0 37.5 43.0 40.0 39.0 41.0 37.5 43.0 30.0 31.0 29.5 30.0
[15] 31.0 31.0 31.5 32.0 30.0 30.5

Notez que vous obtenez bien le même résultat qu’avec la première méthode.

4) Pour sauvegarder les données le plus simplement possible en créant un nouveau classeur
Excel au format .xlsx :

> library(xlsx)
> write.xlsx(nouvelle.masse,file=file.choose())

Pour que la colonne dans ce nouveau fichier Excel qui contient les masses s’appelle Masse :

> write.xlsx(data.frame(Masse=nouvelle.masse),file=file.choose())

Pour créer un classeur appelé Resultat.xls contenant une feuille qui contient les masses :

> massedf<-data.frame(nouvelle.masse)
> library(RODBC)
> connexion<-odbcConnectExcel("Resultat.xls",readOnly = FALSE)
> sqlSave(connexion,massedf)
> close(connexion)

B
– Les fonctions c, rep, tail pour créer des vecteurs, la fonction data.frame pour créer un
S tableau de données.
U
– La fonction write.xlsx de la bibliothèque xlsx et les fonctions odbcConnectExcel, sqlSave
et close de la bibliothèque RODBC pour créer un fichier au format Microsoft Excel à partir
d’une matrice ou d’un tableau de données existant dans R.
Solution des exercices 83

Exercice 2.3
1)

> nom<-c("Guillaume","Valérie","Thomas","Julie","Sébastien","Stéphanie",
+ "Grégory","Ambre","Jean-Sébastien","Camille")
> nom

[1] "Guillaume" "Valérie" "Thomas" "Julie"


[5] "Sébastien" "Stéphanie" "Grégory" "Ambre"
[9] "Jean-Sébastien" "Camille"

2) Pour un vecteur :

> age<-c(25,24,23,22,41,40,59,58,47,56)
> names(age)<-nom
> age

Guillaume Valérie Thomas Julie


25 24 23 22
Sébastien Stéphanie Grégory Ambre
41 40 59 58
Jean-Sébastien Camille
47 56

Si vous regardez la nature de votre vecteur age, en tapant la ligne de commande suivante :
© Dunod – La photocopie non autorisée est un délit.

> str(age)

voici ce que R vous renvoie :

Named num [1:10] 25 24 23 22 41 40 59 58 47 56


- attr(*, "names")= chr [1:10] "Guillaume" "Valérie" "Thomas" ...

Une autre manière de créer le vecteur ci-dessus est la suivante :

> c("Guillaume"=66.5,"Valérie"=50.5,"Thomas"=67.5,"Julie"=52.0,
+ "Sébastien"=83.0,"Stéphanie"=65.0,"Grégory"=79.0,"Ambre"=64.0,
+ "Jean-Sébastien"=81.0,"Camille"=53.0)
84 2 • Objets, fonctions et données avec le langage R

Guillaume Valérie Thomas Julie


66.5 50.5 67.5 52.0
Sébastien Stéphanie Grégory Ambre
83.0 65.0 79.0 64.0
Jean-Sébastien Camille
81.0 53.0

Remarque : vous pouvez ôter les guillemets autour des prénoms, sauf autour de Jean-
Sébastien à cause de la présence du tiret que R interprète comme un signe moins.

Pour un tableau de données :

> age<-data.frame(age,row.names=nom)
> age

age
Guillaume 25
Valérie 24
Thomas 23
Julie 22
Sébastien 41
Stéphanie 40
Grégory 59
Ambre 58
Jean-Sébastien 47
Camille 56

3) Pour un vecteur :

> masse<-c(66.5,50.5,67.5,52,83,65,79,64,81,53)
> names(masse)<-nom
> masse

Guillaume Valérie Thomas Julie


66.5 50.5 67.5 52.0
Sébastien Stéphanie Grégory Ambre
83.0 65.0 79.0 64.0
Jean-Sébastien Camille
81.0 53.0
Solution des exercices 85

Pour un tableau de données :

> masse<-data.frame(masse,row.names=nom)
> masse

poids
Guillaume 66.5
Valérie 50.5
Thomas 67.5
Julie 52.0
Sébastien 83.0
Stéphanie 65.0
Grégory 79.0
Ambre 64.0
Jean-Sébastien 81.0
Camille 53.0

4) Pour un vecteur :

> taille<-c(1.86,1.62,1.72,1.67,1.98,1.77,1.83,1.68,1.92,1.71)
> names(taille)<-nom
> taille

Guillaume Valérie Thomas Julie


1.86 1.62 1.72 1.67
Sébastien Stéphanie Grégory Ambre
1.98 1.77 1.83 1.68
Jean-Sébastien Camille
© Dunod – La photocopie non autorisée est un délit.

1.92 1.71

Pour un tableau de données :

> taille<-data.frame(taille,row.names=nom)
> taille

taille
Guillaume 1.86
Valérie 1.62
Thomas 1.72
Julie 1.67
Sébastien 1.98
Stéphanie 1.77
86 2 • Objets, fonctions et données avec le langage R

Grégory 1.83
Ambre 1.68
Jean-Sébastien 1.92
Camille 1.71

5) Pour un vecteur :

> masse.lourde<-masse[masse>80]
> masse.lourde

Sébastien Jean-Sébastien
83 81

Pour un tableau de données, si vous tapez les lignes de commande suivantes :

> masse.lourde<-masse[masse>80,]
> masse.lourde

Remarque : notez la présence de la "," après 80.

alors R vous renvoie :

[1] 83 81

Ceci n’est pas le résultat voulu, puisque vous perdez le nom des personnes qui ont des masses
supérieures à 80 kg. En fait, ce qui se passe est dû au fait que vous travaillez avec un data.frame.
Il reste en tant que tel lorsque vous faites vos opérations d’extraction sauf lorsque vous extrayez
une ligne ou une colonne. Dans ce cas, R vous donne le résultat sous la forme d’un vecteur et
élimine alors le nom des individus du data.frame.

> str(masse.lourde)

num [1:2] 83 81

L’objet masse a bien perdu sa structure de data.frame. Il faut donc modifier vos lignes de
commande pour demander à R de vous renvoyer un tableau de données et non un vecteur. Mais
comment ?
Vous pouvez utiliser l’option drop=FALSE. En effet, si vous tapez maintenant les deux lignes de
commande suivantes :
Solution des exercices 87

> masse.lourde<-masse[masse>80,,drop=FALSE]
> masse.lourde

vous obtenez le résultat attendu, à savoir :

masse
Sébastien 83
Jean-Sébastien 81

Notez la présence de deux virgules avant drop=FALSE. Car si vous n’en mettez qu’une seule, R
vous affiche un avertissement

[1] 83 81
Message d’avis :
In ‘[.data.frame‘(poids, poids > 80, drop = FALSE) :
drop argument will be ignored

6) Vous devez extraire du vecteur taille les individus dont la masse est supérieure à 80 kg.
Pour un vecteur :

> taille.masse.lourde<-taille[masse>=80]
> taille.masse.lourde

Sébastien Jean-Sébastien
1.98 1.92

Pour un tableau de données :


© Dunod – La photocopie non autorisée est un délit.

> taille.masse.lourde<-taille[masse>=80,,drop=FALSE]
> taille.masse.lourde

taille
Sébastien 1.98
Jean-Sébastien 1.92

Remarque : vous vous êtes encore servi de l’option drop=FALSE puisque l’objet taille
est un data.frame (cf. la question 4)).

7) Vous devez extraire du vecteur des tailles les individus dont la masse est supérieure à 80 kg
et l’âge est supérieur à 30 ans. Il faut donc combiner deux conditions : masse>=80 et age>=30.
88 2 • Objets, fonctions et données avec le langage R

Ceci s’obtient en utilisant le connecteur logique ET qui s’écrit & dans R.


Pour un vecteur :

> taille.vieux.masse.lourde<-taille[masse>=80 & age>=30]


> taille.vieux.masse.lourde

Sébastien Jean-Sébastien
1.98 1.92

Pour un tableau de données :

> taille.vieux.masse.lourde<-taille[masse>=80 & age>=30,,drop=FALSE]


> taille.vieux.masse.lourde

taille
Sébastien 1.98
Jean-Sébastien 1.92

Remarque : si vous souhaitez vérifier les derniers résultats, tapez les deux lignes de
commande suivantes :

> ensemble<-cbind(age,masse,taille)
> ensemble

age masse taille


Guillaume 25 66.5 1.86
Valérie 24 50.5 1.62
Thomas 23 67.5 1.72
Julie 22 52.0 1.67
Sébastien 41 83.0 1.98
Stéphanie 40 65.0 1.77
Grégory 59 79.0 1.83
Ambre 58 64.0 1.68
Jean-Sébastien 47 81.0 1.92
Camille 56 53.0 1.71

– Comment spécifier les noms des individus dans un vecteur ou un tableau de données.
B
S
U – Comment extraire des individus en fonction des différentes valeurs prises par les variables.
– La fonction cbind pour combiner des vecteurs, des matrices ou des jeux de données en
juxtaposant leurs colonnes.
Solution du problème 89

SOLUTION DU PROBLÈME

Problème 2.1
1) Le vecteur à construire est une suite d’entiers consécutifs, il suffit d’utiliser la fonction :.

> suite<-1:12
> suite

[1] 1 2 3 4 5 6 7 8 9 10 11 12

2)

> suite>6

[1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE

R vous renvoie un vecteur logique. La valeur de chacune de ses coordonnées vous indique si
l’élément qui est à la même position dans le vecteur suite est strictement supérieur à 6 ou non.
Ainsi, dans ce cas, FALSE signifie inférieur ou égal à 6 et TRUE signifie strictement supérieur à 6.
3)

> suite<6
© Dunod – La photocopie non autorisée est un délit.

[1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

Vous auriez également pu obtenir le même résultat avec la ligne de commande :

> !(suite>=6)

4)

> suite==6

[1] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
90 2 • Objets, fonctions et données avec le langage R

La ligne de commande suivante vous permet de parvenir au même résultat :


> suite<=6&suite>=6

5)
> suite<=8&&suite>=4

[1] FALSE

6)

> suite<=4|suite>=8

[1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE

7)

> suite<=4||suite>=8

[1] TRUE

8) R gère les valeurs manquantes avec beaucoup de bon sens.


– Les opérateurs ==, >, >=, < et <= pour créer des conditions logiques.
B
S
U – L’opérateur ! pour obtenir le contraire d’une condition.
– Les opérateurs logiques &, | et xor pour associer des conditions.
– Il faut souvent mettre les conditions ou expressions logiques entre parenthèses.
– La fonction outer pour créer une matrice formée des valeurs prises par une fonction de
deux variables pour toutes les combinaisons possibles des coordonnées de deux vecteurs.
Chapitre 3

Statistiques descriptives univariées

 There is no excuse for failing to plot and look. 

De John W. Tukey, Exploratory Data Analysis, 1977.

Objectifs de ce chapitre
➤ se familiariser avec le vocabulaire de la statistique
➤ décrire une série statistique
➤ faire des représentations graphiques d’une série statistique
➤ donner des résumés numériques d’une série statistique

3.1 INTRODUCTION
Le but de la statistique descriptive est de présenter les données récoltées sous une forme telle
que vous puissiez en prendre connaissance facilement et rapidement. La statistique descriptive
consiste à réaliser trois grandes étapes :
1. Établir des distributions statistiques.
2. Représenter les données sous forme de graphiques.
3. Calculer des caractéristiques qui réduisent l’information.
92 3 • Statistiques descriptives univariées

3.2 VOCABULAIRE DE LA STATISTIQUE


3.2.1 Définitions élémentaires

Définition 3.1 La statistique est la discipline des mathématiques qui a pour objet les méthodes
qui permettent de collecter et d’analyser les données empiriques et d’en extraire des statistiques.

Définition 3.2 Les statistiques sont des données numériques qui interviennent pratiquement
dans tous les domaines d’activité : gestion financière (états, banques, assurances, entreprises
. . . ), démographie, contrôles de qualité, études de marché, sciences expérimentales (biologie,
psychologie . . . ) . . .

Remarque : il est bien connu l’existence d’un grand nombre de définitions de la statis-
tique. Kendall ose même écrire que « parmi les thèmes à propos desquels les statisticiens
ne sont pas d’accord se trouve la définition de leur science ».

Définition 3.3 L’ensemble sur lequel porte l’activité statistique s’appelle la population. Elle
est généralement notée V pour rappeler la notation des probabilités mais par exemple dans la
théorie des sondages elle est notée U , U comme Univers.

Remarque : lorsque la population est finie, le nombre d’éléments contenus dans V est
noté N , ce qui se note également Card (V) = N .

Définition 3.4 Les éléments qui constituent la population sont appelés les individus ou encore
les unités statistiques.

Définition 3.5 Un échantillon, noté généralement S (S comme sample , ce qui signifie


échantillon en anglais) est une partie de la population prélevée soit de façon aléatoire soit de
façon non aléatoire.

Remarque :
1. Le nombre d’éléments contenus dans S est noté n, ce qui se note aussi Card (S) = n.
2. Il faut distinguer deux types d’échantillonnage :
– l’échantillonnage exhaustif (le tirage est réalisé sans remise),
– l’échantillonnage non-exhaustif (le tirage est réalisé avec remise).

Ce dernier sujet sera développé dans le chapitre 6.


3.2 Vocabulaire de la statistique 93

Figure 3.1

3.2.2 Vocabulaire spécifique à la statistique

Définition 3.6 Les caractéristiques étudiées sur les individus d’une population sont appelées
les caractères.

Définition 3.7 Un caractère est une application x d’un ensemble V fini de cardinal N (la
© Dunod – La photocopie non autorisée est un délit.

population) dans un ensemble C (l’ensemble des valeurs possibles du caractère), qui associe
à chaque individu v de V la valeur x(v) que prend ce caractère sur l’individu v.

Il existe deux types de caractères :


– les caractères quantitatifs,
– les caractères qualitatifs.

Définition 3.8 Un caractère quantitatif est un caractère dont les issues produisent un nombre
ou une suite de nombres.

Il faut distinguer :
– les caractères quantitatifs continus,
– les caractères quantitatifs discrets.
94 3 • Statistiques descriptives univariées

Définition 3.9 Un caractère quantitatif continu est un caractère qui peut prendre toutes les
valeurs d’un intervalle.

Définition 3.10 Un caractère quantitatif discret ou discontinu est un caractère qui ne prend
que des valeurs isolées.

Il faut distinguer :
– les caractères simples ou univariés,
– les caractères multiples.

Définition 3.11 Un caractère simple est un caractère dont la mesure sur un individu produit
un seul nombre. L’ensemble de leurs valeurs est donc R ou une partie de R.

Exemple : la masse d’un individu.

Définition 3.12 Un caractère multiple est un caractère dont la mesure sur un individu produit
une suite finie de nombres. L’ensemble de leurs valeurs est donc Rn ou une partie de Rn .

Exemple : le relevé de températures d’une ville pendant une saison.

Définition 3.13 Un caractère qualitatif est un caractère dont les issues ne sont pas quanti-
fiables numériquement.
Nous parlons de modalités et non d’issues dans ce cas. Les modalités d’un caractère qualitatif
peuvent être ordonnées ; nous disons alors que le caractère est ordinal. Sinon nous disons que
le caractère est nominal.

Exemple : le genre.

Remarque : les différentes valeurs que peut prendre un caractère qualitatif sont souvent
résumées par un codage numérique. C’est ce qui se fait le plus généralement. Mais un tel
codage est purement conventionnel et n’a pas un sens quantitatif.

Exemple : si vous transformez la variable genre en codant la valeur  Homme  par 1 et


Femme  par 2, il sera possible de calculer le genre moyen mais cela n’aura pas de sens
réel.

Remarque : certains caractères qualitatifs s’expriment à l’aide de nombres, comme par


exemple un numéro de téléphone. Ils n’ont pas non plus de sens quantitatif : calculer, par
exemple, la moyenne des numéros de téléphone n’est pas pertinent.
3.3 Les fichiers de données : Mesures et Mesures5 95

3.3 LES FICHIERS DE DONNÉES : MESURES ET MESURES5


Pendant un été, un jardinier a ramassé des  haricots  de quatre espèces différentes de plantes
sur son terrain. Il a relevé sur chacun des  haricots  la masse, la taille et l’espèce du  haricot .
Il a numéroté chacun des  haricots .

Dans ce chapitre et dans les suivants, vous allez travailler avec un premier fichier intitulé
Mesures et un second intitulé Mesures5 pour illustrer les différentes commandes de R que vous
allez rencontrer par la suite.

Téléchargez la bibliothèque "BioStatR". Vous l’avez déjà fait si vous avez traité l’exercice 1
du chapitre 1. Chargez en mémoire les fonctions et les jeux de données de cette bibliothèque en
exécutant :

>library(BioStatR)

Pour afficher le jeu de données Mesures, vous pouvez tapez tout simplement la ligne de
commande suivante :

> Mesures

Voici les dix dernières lignes du fichier de données Mesures.

........................................................
243 4.3 14.6 laurier rose
244 2.7 11.3 laurier rose
245 2.6 9.1 laurier rose
246 2.4 9.0 laurier rose
© Dunod – La photocopie non autorisée est un délit.

247 2.6 9.4 laurier rose


248 3.2 12.1 laurier rose
249 6.4 16.1 laurier rose
250 3.4 13.2 laurier rose
251 3.4 11.4 laurier rose
252 2.7 11.5 laurier rose

Vous pourriez aussi demander à R d’afficher les premières lignes de ce fichier. Pour cela, vous
devez taper la ligne de commande suivante :

> head(Mesures)
96 3 • Statistiques descriptives univariées

masse taille espece


1 28.6 19.1 glycine blanche
2 20.6 14.8 glycine blanche
3 29.2 19.7 glycine blanche
4 32.0 21.1 glycine blanche
5 24.5 19.4 glycine blanche
6 29.0 19.5 glycine blanche

Remarque : la fonction head ne vous donne que les six premières lignes. Si vous sou-
haitez en afficher plus, il faut renseigner la fonction head à l’aide d’un argument qui lui
indique le nombre de lignes à afficher.

Exemple :

> head(Mesures,10)

masse taille espece


1 28.6 19.1 glycine blanche
2 20.6 14.8 glycine blanche
3 29.2 19.7 glycine blanche
4 32.0 21.1 glycine blanche
5 24.5 19.4 glycine blanche
6 29.0 19.5 glycine blanche
7 28.9 18.9 glycine blanche
8 18.2 14.6 glycine blanche
9 7.9 10.2 glycine blanche
10 15.5 14.6 glycine blanche

Il existe la fonction équivalente pour afficher les six dernières lignes d’un fichier. Il s’agit de
la fonction tail.

> tail(Mesures)

masse taille espece


247 2.6 9.4 laurier rose
248 3.2 12.1 laurier rose
249 6.4 16.1 laurier rose
250 3.4 13.2 laurier rose
251 3.4 11.4 laurier rose
252 2.7 11.5 laurier rose
3.3 Les fichiers de données : Mesures et Mesures5 97

Remarque : comme la fonction head, la fonction tail prend un argument qui permet
d’afficher plus que les six dernières lignes.

Pour avoir une description de ce fichier, vous pouvez utiliser la fonction str :

> str(Mesures)

’data.frame’: 252 obs. of 3 variables:


$ masse : num 28.6 20.6 29.2 32 24.5 29 28.9 18.2 7.9 15.5...
$ taille: num 19.1 14.8 19.7 21.1 19.4 19.5 18.9 14.6 10.2...
$ espece : Factor w/ 4 levels "bignone",...: 2 2 2 2 2 2 2...

Remarque : dans la sortie ci-dessus que vient de donner R, vous voyez apparaître le mot
Factor, qui représente la classe de la variable espece. En effet, si vous tapez la ligne de
commande suivante :

> class(Mesures$espece)

[1] "factor"

Savez-vous ce que représente ce terme ? En fait, il indique que la variable espece est
une variable qualitative. Reportez-vous au début du chapitre 2 pour consulter la définition
d’un facteur.
R vous renseigne aussi sur son nombre de modalités ( levels  en anglais) : la variable
espece en a quatre. Comment obtenez-vous les noms des quatre espèces ? Une première
idée serait d’utiliser la fonction names rencontrée au chapitre 2 et donc de taper la ligne
© Dunod – La photocopie non autorisée est un délit.

de commande suivante :

> names(Mesures$espece)

mais R renvoie :

NULL

Savez-vous pourquoi ? En fait, la fonction names renvoie le nom des colonnes du jeu de
données Mesures. En effet, tapez la ligne de commande suivante :

> names(Mesures)
98 3 • Statistiques descriptives univariées

[1] "masse" "taille" "espece"

Donc, si vous voulez le nom des modalités de la variable espece, il faut utiliser la
fonction levels et donc taper la ligne de commande suivante :

> levels(Mesures$espece)

[1] "bignone" "glycine blanche" "glycine violette" "laurier rose"

Il existe sous R une fonction factor. Cette fonction transforme un vecteur en un facteur. Pour
en savoir plus sur cette fonction et sur son utilisation, allez consulter l’aide de R. Pour cela,
tapez la ligne de commande suivante :

> ?factor

Quelques mois après, le jardinier a complété son premier fichier Mesures en un fichier
Mesures5 avec deux nouvelles variables qui sont :
– la masse sèche, relevée sur les 252  haricots ,
– et le nombre de graines contenues dans les gousses des glycines blanches et violettes.
Donc, regardez de quoi est constitué le fichier Mesures5 en tapant la ligne de commande
suivante :

> str(Mesures5)

’data.frame’: 252 obs. of 5 variables:


$ masse : num 28.6 20.6 29.2 32 24.5 29 28.9 18.2 7.9...
$ taille : num 19.1 14.8 19.7 21.1 19.4 19.5 18.9 14.6...
$ graines : int 4 3 5 7 4 4 4 2 1 2 ...
$ masse_sec: num 9.3 7.7 10.4 11.5 8.4 10.3 10.1 6.3 2.7...
$ espece : Factor w/ 4 levels "bignone",...: 2 2 2 2 2 2 2...

La ligne de commande suivante :

> Mesures5
3.3 Les fichiers de données : Mesures et Mesures5 99

vous affiche le contenu du fichier Mesures5. Ci-dessous, il n’est reproduit que les 20 dernières
lignes de ce fichier. Notez que R limite, par défaut, l’affichage des dataframes à 200 lignes. R
indique que 52 lignes n’ont pas été affichées, en les ajoutant aux 200 présentes dans la console,
il y en a bien 252.

...................................................
181 4.9 15.3 NA 1.2 laurier rose
182 6.2 15.9 NA 1.1 laurier rose
183 4.0 15.0 NA 0.7 laurier rose
184 3.3 11.0 NA NA laurier rose
185 4.8 15.1 NA 0.8 laurier rose
186 5.6 15.6 NA 1.0 laurier rose
187 4.5 15.3 NA 0.7 laurier rose
188 6.3 18.4 NA 1.6 laurier rose
189 4.2 14.0 NA 0.8 laurier rose
190 3.9 12.6 NA 1.1 laurier rose
191 5.8 16.8 NA 0.9 laurier rose
192 4.7 13.6 NA 1.0 laurier rose
193 6.0 15.1 NA 1.5 laurier rose
194 6.5 16.7 NA 1.7 laurier rose
195 5.0 15.3 NA 1.0 laurier rose
196 5.5 17.1 NA 1.3 laurier rose
197 4.7 14.6 NA 1.0 laurier rose
198 5.7 15.0 NA 1.5 laurier rose
199 3.6 10.4 NA 1.1 laurier rose
200 5.4 16.5 NA 1.3 laurier rose

[ reached getOption("max.print") -- omitted 52 rows ]

Remarque : il y a deux choses à noter sur ces 20 dernières lignes du jeu de données
Mesures5 affichées par R.
1. Dans l’avant-dernière colonne, qui est celle de la variable masse_sec, vous voyez
apparaître une fois NA qui est l’abréviation de  Not Available , et qui vous indique
qu’il y a une valeur manquante pour la masse sèche pour l’unité statistique 184.
2. Dans la quatrième colonne (en partant de la gauche), qui est celle de la variable
graines, vous voyez apparaître NA sur les 20 lignes, ce qui signifie que pour ces 20
dernières unités statistiques, le nombre de graines n’a pas été renseigné. Ce qui est tout
à fait cohérent, puisque le jardinier n’a compté que les graines dans les gousses des
glycines et ici les 20 dernières unités statistiques ne concernent que les lauriers roses.
100 3 • Statistiques descriptives univariées

3.4 DESCRIPTION D’UNE SÉRIE STATISTIQUE


Si X est un caractère, la suite finie X (V) = (X 1 , . . . , X N ) des valeurs atteintes par le caractère
(ou données brutes) est un ensemble fini {x1 , . . . , x p }. Dans le cas d’un caractère quantitatif
simple, ces valeurs sont supposées ordonnées : x1 < . . . < x p . Le fait que telle valeur soit
relative à tel individu est un renseignement qui n’intéresse pas le statisticien. Seul l’ensemble
des valeurs atteintes et le nombre de fois que chacune d’elle est atteinte sont utiles.

Notez qu’il y a N valeurs dans cette suite. Donc ici, il s’agit de tous les éléments de la popu-
lation. Mais très souvent, la série statistique que vous allez étudier n’est pas la population
entière mais juste un échantillon. Vous pouvez facilement calculer des caractéristiques comme
la moyenne, l’écart-type de l’échantillon que vous étudiez, mais ce sont des  approximations 
des caractéristiques de la population. Ces approximations, appelées estimations, peuvent être
calculées de manière plus ou moins précise. Dans certains cas, il est donc recommandé d’utili-
ser des formules spécifiques lorsqu’un échantillon est utilisé pour estimer des caractéristiques
de la population. Dans ces cas, ces formules sont mises en avant dans la suite.

Exemple : le jardinier n’a pas ramassé tous les haricots  qui étaient tombés dans son


jardin. Il a ramassé un échantillon de cette population.

3.4.1 Distribution statistique discrète ou continue


Soit une série statistique (xi , n i )i=1,..., p associée à un caractère discret ou continu.

Définition 3.14 L’effectif de la valeur xi est le nombre n i de fois que la valeur xi est prise,
c’est-à-dire le cardinal de l’ensemble X −1 (xi ).

i
Définition 3.15 L’effectif cumulé en xi est égal à la somme n j.
j=1


p
Remarque : lorsque i = p, l’effectif cumulé en x p est alors égal à : n j = N.
j=1

ni
Définition 3.16 La fréquence de la valeur xi est égale au rapport f i = de l’effectif de xi à
N
l’effectif total N de la population, c’est-à-dire le cardinal de V ou encore la somme des n i .

i
Définition 3.17 La fréquence cumulée en xi est égale à la somme f j.
j=1


p
Remarque : lorsque i = p, la fréquence cumulée en x p est alors égale à : f j = 1.
j=1
3.4 Description d’une série statistique 101

Définition 3.18 La série statistique (xi , n i )i=1,..., p ou (xi , f i )i=1,..., p est appelée distribution
statistique discrète ou distribution statistique continue. Elle est aussi parfois appelée distri-
bution statistique non groupée.

Remarque :
1. Le nom de distribution statistique non groupée provient de l’opposition avec une
distribution statistique groupée, c’est-à-dire obtenue en regroupant les différentes
valeurs possibles du caractère en classes et qui sera introduite au paragraphe suivant.
2. Ces définitions sont établies dans le cadre d’une population. D’ailleurs, vous voyez
apparaître la taille N de la population dans certaines définitions. Mais vous pourriez
les énoncer dans le cadre d’un échantillon issu de la population que vous étudiez. Pour
cela, il vous suffit de remplacer la taille N dans les définitions où vous voyez apparaître
cette dernière par la taille n de l’échantillon, puis d’adapter les notations. En effet,
vous parlerez alors de distribution observée ou de distribution empirique et non
plus de distribution statistique discrète ou continue. Le reste est inchangé.

Exemple : rappelons que les 252  haricots  ramassés par le jardinier forment un échan-
tillon de l’ensemble des  haricots  qui se trouvent sur son terrain. Ici la population
étudiée est l’ensemble de tous les  haricots  qui tombent dans le jardin.
Soit la variable graines du jeu de données Mesures5. La variable graines est une
variable quantitative discrète mais vous auriez pu aussi choisir la variable taille qui est
une variable quantitative continue sur laquelle vous auriez fait les mêmes calculs que ceux
que vous allez effectuer ci-dessous. Vous allez mettre en application les quatre premières
définitions ci-dessus en utilisant les commandes adaptées de R pour calculer ces valeurs.
La variable graines varie entre 1 et 7. Pour trouver cette information, vous allez utiliser
la fonction table et tapez les deux lignes de commande suivantes :
© Dunod – La photocopie non autorisée est un délit.

> table_graines<-table(Mesures5$graines)
> table_graines

1 2 3 4 5 6 7
11 41 27 16 10 2 3

Cette sortie vous donne le tableau de l’effectif de chaque valeur que prend la variable
graines.

Pour calculer le tableau des effectifs cumulés, vous allez utiliser la fonction cumsum en
procédant de la manière suivante :
> effcum_graines<-cumsum(table_graines)
> effcum_graines
102 3 • Statistiques descriptives univariées

1 2 3 4 5 6 7
11 52 79 95 105 107 110

Remarque : pourquoi 110 ? Parce qu’il y a 110 glycines présentes dans le jeu de
données Mesures5 et que c’est seulement à l’intérieur des gousses de glycines que
le jardinier a compté les graines. Comment retrouvez-vous cette valeur ? En tapant
la ligne de commande suivante :

> table(Mesures5$espece)

bignone glycine blanche glycine violette laurier rose


70 54 56 72

Or vous constatez que 54 + 56 = 110.


Pour obtenir le tableau des fréquences, il y a deux manières de procéder.
– Première méthode :

> freq_table_graines<-table_graines/sum(table_graines)
> options(digits=3)
> freq_table_graines

1 2 3 4 5 6 7
0.1000 0.3727 0.2455 0.1455 0.0909 0.0182 0.0273

Remarque : la commande options(digits=3) permet de limiter l’affichage à


une précision de trois chiffres, différents de 0.

– Seconde méthode :

> freq_table_graines<-prop.table(table(Mesures5$graines))
> freq_table_graines

qui vous donne le même résultat que précédemment :

1 2 3 4 5 6 7
0.1000 0.3727 0.2455 0.1455 0.0909 0.0182 0.0273

Pour obtenir le tableau des fréquences cumulées, il y a encore deux manières de faire.
3.4 Description d’une série statistique 103

– Première méthode :

> freqcum_table_graines<-cumsum(table_graines/
+ sum(table_graines))
> freqcum_table_graines

1 2 3 4 5 6 7
0.100 0.473 0.718 0.864 0.955 0.973 1.000

– Seconde méthode :

> freq_table_graines<-cumsum(prop.table((table
+ (Mesures5$graines))))
> freq_table_graines

qui vous donne le même résultat que précédemment :

1 2 3 4 5 6 7
0.100 0.473 0.718 0.864 0.955 0.973 1.000

3.4.2 Distribution statistique groupée


Lorsque le caractère quantitatif discret ou continu comprend un grand nombre de valeurs, il
est préférable de regrouper les valeurs en intervalles appelés classes pour rendre la statistique
plus lisible. L’ensemble C des valeurs du caractère est alors partagé en classes ]ai ; ai+1 ] avec
ai < ai+1 . Soit une série statistique (]ai ; ai+1 ], n i )i=1,..., p .

Définition 3.19 L’effectif de ]ai ; ai+1 ] est le nombre n i de valeurs prises dans ]ai ; ai+1 ], c’est-
© Dunod – La photocopie non autorisée est un délit.

à-dire X −1 (]ai ; ai+1 ]).

Définition 3.20 L’effectif cumulé en ai est le nombre de valeurs prises dans l’intervalle
] − ∞; ai ].
ni
Définition 3.21 La fréquence de ]ai ; ai+1 ] est égale au rapport f i = ·
N

i
Définition 3.22 La fréquence cumulée en ai est égale la somme f j.
j=1


p
Remarque : lorsque i = p, la fréquence cumulée en a p est alors égale à : f j = 1.
j=1
104 3 • Statistiques descriptives univariées

Définition 3.23 La série statistique (]ai ; ai+1 ], n i )i=1,..., p ou (]ai ; ai+1 ], f i )i=1,..., p est appelée
distribution statistique groupée.

Remarque :
1. Même remarque que dans le paragraphe précédent, à savoir : ces définitions sont
établies dans le cadre d’une population. Mais vous pourriez les énoncer dans le cadre
d’un échantillon issu de la population que vous étudiez. Pour cela, il vous suffit de
remplacer la taille N dans les définitions où vous voyez apparaître cette dernière par la
taille n de l’échantillon, puis d’adapter les notations. Le reste est inchangé.
2. Vous pouvez vous poser la question suivante :  Comment ces regroupements sont-ils
fabriqués ? . Une façon simple est d’utiliser la règle de Sturges. Ainsi vous n’avez
pas à vous préoccuper de savoir combien de classes vous devez construire puisque le
nombre de classes est donné par la formule suivante :
 
Nombre de classes = sup log2 (N ) + 1

où sup prend l’entier supérieur, log2 est le logarithme binaire et N la taille de la


population d’où est issue la série statistique.
3. Vous pouvez aussi utiliser la règle de Sturges lorsque vous travaillez avec des données
provenant d’un échantillon. Il vous suffit de remplacer N par n.

La question que maintenant vous vous posez est :  Est-ce que R applique la règle de Sturges
pour regrouper les données ? . Pour répondre à cette question, vous tapez la ligne de commande
suivante :
> ?hist

Et dans l’aide, vous pouvez lire dans la rubrique Details,  The default for breaks is
"Sturges": see nclass.Sturges.  Ce qui veut dire que par défaut, R utilise la règle de
Sturges mais en propose aussi deux autres :
– la règle de Scott :
Nombre de classes = 3, 5sc (x)n −1/3 ,
où sc (x) est l’écart-type corrigé de la série statistique, qui sera défini à la fin de ce chapitre
et n la taille de l’échantillon.
– et la règle de Freedman-Diaconis :

Nombre de classes = 2EIQ(x)n −1/3 ,

où EIQ(x) est l’étendue interquartile de la série statistique, qui sera définie à la fin de ce
chapitre et n la taille de l’échantillon.
3.4 Description d’une série statistique 105

Remarque : les définitions utilisées par R sont adaptées au traitement d’échantillons. Vous
pouvez aussi utiliser ces deux règles lorsque vous travaillez avec des données provenant
d’une population. Il suffit de remplacer n par N et l’écart-type corrigé ds-c par l’écart-type
s, qui sera défini à la fin de ce chapitre.

Enfin, sachez que vous êtes libre aussi de regrouper comme vous le souhaitez vos données,
c’est-à-dire de définir vous-même un nombre de classes ainsi que la longueur de la classe.
Lorsque vous aurez défini votre nombre de classes, c’est-à-dire celui qui vous semble le plus en
adéquation avec vos données, pour faire vos représentations graphiques sous R, vous utiliserez
alors l’argument breaks. L’exercice 2, proposé à la fin de ce chapitre, détaille l’utilisation de
cette commande.
Pour terminer, sachez que le nombre de classes et la longueur de la classe sont à déterminer
de telle sorte que la distribution ait une allure aussi régulière que possible, sans pour autant
en dissimuler les caractéristiques essentielles. Généralement, le nombre de classes est compris
entre 10 et 20. Il est petit lorsque le nombre de données est faible et grand lorsque le nombre de
données est important. D’autre part, la longueur de la classe est en général constant d’une classe
à l’autre.
Exemple : soit la variable masse du jeu de données Mesures. Vous allez mettre en applica-
tion les quatre premières définitions de ce paragraphe en utilisant les commandes adaptées
de R pour trouver ces valeurs. La variable masse varie entre 1,0 et 49,2. Pour trouver cette
information, vous tapez les lignes de commande suivantes :
> minmax<-c(min(Mesures$masse),max(Mesures$masse))
> minmax

[1] 1.0 49.2

Cette variable est une variable quantitative continue. Vous avez le choix de l’étudier :
© Dunod – La photocopie non autorisée est un délit.

– soit en faisant un regroupement comme indiqué ci-dessus,


– soit en considérant chacune de ses valeurs.
Ici, vous allez adopter la première méthode. Vous allez d’abord chercher à établir la
distribution statistique groupée. Pour cela, vous allez taper les lignes de commande
suivantes. La première ligne utilise la fonction hist sur laquelle vous reviendrez plus en
détails dans le paragraphe suivant.
> histo<-hist(Mesures$masse)
> classes<-histo$breaks
> classes

[1] 0 5 10 15 20 25 30 35 40 45 50
106 3 • Statistiques descriptives univariées

Les classes sont donc :


]0; 5], ]5; 10], ]10; 15], ]15; 20], ]20; 25], ]25; 30],
]30; 35], ]35; 40], ]40; 45], ]45; 50].
Il ne reste plus qu’à obtenir les effectifs. Pour cela, tapez les lignes de commande sui-
vantes :
> effectifs<-histo$counts
> effectifs

[1] 82 58 51 23 16 12 4 2 1 3

Les effectifs correspondants aux 10 classes sont donc égaux à :

82, 58, 51, 23, 16, 12, 4, 2, 1, 3.

Ces deux résultats vous permettent de construire la distribution statistique groupée.

Maintenant pour établir les effectifs cumulés, les fréquences et les fréquences cumulées,
vous allez procéder de la manière suivante.
– Pour les effectifs cumulés, vous tapez les deux lignes de commande suivantes :

> effectifs<-histo$counts
> cumsum(effectifs)

[1] 82 140 191 214 230 242 246 248 249 252

– Pour les fréquences, vous tapez les lignes de commande suivantes :

> frequences<-effectifs/sum(effectifs)
> print(frequences,digits=3)

[1] 0.32540 0.23016 0.20238 0.09127 0.06349 0.04762 0.01587 0.00794


[9] 0.00397 0.01190

Vous vérifiez les calculs en tapant la ligne de commande suivante :


> sum(frequences)

[1] 1

– Pour les fréquences cumulées, vous tapez la ligne de commande suivante :


3.5 Représentations graphiques d’une série statistique 107

> print(cumsum(frequences),digits=3)

[1] 0.325 0.556 0.758 0.849 0.913 0.960 0.976 0.984 0.988 1.000

3.4.3 Distribution statistique d’une variable qualitative


Sur une variable qualitative, le seul calcul numérique que vous pouvez effectuer est le dénom-
brement des unités statistiques dans chaque catégorie de la variable qualitative.

Définition 3.24 Le tableau de contingence regroupe les effectifs des différentes modalités d’une
variable qualitative.

Pour obtenir le tableau de contingence, vous devez utiliser la fonction table de R.


Exemple :

> table(Mesures$espece)

bignone glycine blanche glycine violette laurier rose


70 54 56 72

3.5 REPRÉSENTATIONS GRAPHIQUES D’UNE SÉRIE STATISTIQUE


3.5.1 Représentation graphique pour un échantillon : la fonction plot et la
© Dunod – La photocopie non autorisée est un délit.

fonction pairs
La manière la plus simple de produire des graphiques sous R est d’utiliser la fonction plot :
Exemple :

> plot(taille~masse,data=Mesures)

ou la fonction ggplot de la bibliothèque ggplot2. N’oubliez pas de la télécharger puis


de la mettre en mémoire avant de taper la ligne de commande suivante :

> ggplot(Mesures,aes(x=masse,y=taille))+geom_pointC
108 3 • Statistiques descriptives univariées

Voici les deux résultats :

25
20
taille

15
10
5

0 10 20 30 40 50

masse

Figure 3.2A

● ●

● ●
● ●


20 ●

● ●
● ●

● ●
● ●
● ●

● ●
● ●●
● ●
● ●
●●

● ● ●●
taille

● ● ●
● ● ● ●


●●● ● ● ●
● ●
● ● ●
●●●●●
● ● ●
●●●●●● ●
●● ● ●● ●
●● ● ● ●● ● ●
●● ● ● ●
●● ● ● ● ●●● ●
●● ● ● ● ●
● ●● ● ●

●●● ● ●
●●
● ● ● ●
●● ●● ● ●

●● ● ● ●●
● ●●● ● ●
● ● ●
●● ● ● ● ●●● ●● ● ● ●
● ●
● ●● ●
● ● ●● ●
●●● ● ●● ●●



● ●● ●
● ●
● ● ●
● ● ● ●
●● ● ● ●
● ● ● ●

10 ● ●●


●●● ●
● ● ● ●●

●●● ●
●●
● ● ●
● ● ●●● ●

● ●●
● ●
●●

● ●

0 10 20 30 40 50
masse

Figure 3.2B
3.5 Représentations graphiques d’une série statistique 109

Les fonctions graphiques de R comportent de nombreuses options qui permettent de contrôler


de façon très fine les graphiques. Ici, dans ce paragraphe, vous allez vous intéresser uniquement
à la fonction graphique plot.
Les paramètres de la fonction plot utilisés par défaut vont être énoncés ci-dessous. Pour les
récupérer, vous devez taper la ligne de commande suivante :

> args(plot.default)

function (x, y = NULL, type = "p", xlim = NULL, ylim = NULL,


log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL,
ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL,
panel.last = NULL, asp = NA, ...)
NULL

L’argument ... signifie qu’il y a encore d’autres paramètres graphiques possibles. Ils sont
contrôlés par la fonction par.

> names(par())

[1] "xlog" "ylog" "adj" "ann" "ask" "bg"


[7] "bty" "cex" "cex.axis" "cex.lab" "cex.main" "cex.sub"
[13] "cin" "col" "col.axis" "col.lab" "col.main" "col.sub"
[19] "cra" "crt" "csi" "cxy" "din" "err"
[25] "family" "fg" "fig" "fin" "font" "font.axis"
[31] "font.lab" "font.main" "font.sub" "lab" "las" "lend"
[37] "lheight" "ljoin" "lmitre" "lty" "lwd" "mai"
[43] "mar" "mex" "mfcol" "mfg" "mfrow" "mgp"
[49] "mkh" "new" "oma" "omd" "omi" "page"
[55] "pch" "pin" "plt" "ps" "pty" "smo"
[61] "srt" "tck" "tcl" "usr" "xaxp" "xaxs"
[67] "xaxt" "xpd" "yaxp" "yaxs" "yaxt" "ylbias"
110 3 • Statistiques descriptives univariées

Un exemple de graphique utilisant quelques options :


Exemple :

> plot(taille~masse,pch=19,main="Taille vs. Masse",xlab="Masse",


+ ylab="Taille",data=Mesures)

Voilà le résultat :
Taille vs. Masse
25
20
Taille

15
10
5

0 10 20 30 40 50

Masse

Figure 3.3A

Vous pouvez obtenir le même graphique avec la fonction ggplot en tapant la ligne de
commande suivante :

> ggplot(Mesures,aes(x=masse,y=taille))+geom_point(pch19) +
+ xlab("Masse")+ylab("Taille")+ggtitle("Taille vs. Masse")

Depuis la version 2.2.0 de ggplot, les titres des graphiques sont alignés à gauche.
3.5 Représentations graphiques d’une série statistique 111

Figure 3.3B

Pour obtenir un titre centré il suffit « d’ajouter » theme(plot.title =


element_text(hjust = 0.5)) au graphique. Ainsi la ligne de commande
suivante permet d’obtenir le même graphique avec son titre centré.

> ggplot(Mesures, aes(x = masse,y=taille))+geom_point(pch=19)+


© Dunod – La photocopie non autorisée est un délit.

+ xlab("Masse")+ylab("Taille")+ggtitle("Taille vs. Masse")+


+ theme(plot.title = element_text(hjust = 0.5))

Il est possible de choisir ce réglage pour tous les graphiques à venir en modifiant le thème
utilisé par ggplot de la manière suivante :

> theme_update(plot.title = element_text(hjust = 0.5))

Il n’est plus alors nécessaire « d’ajouter » theme(plot.title = element_text(hjust


= 0.5)) au graphique pour que le titre soit centré.
Pour revenir à des titres alignés à gauche, exécuter la commande :

> theme_update(plot.title = element_text(hjust = 0))


112 3 • Statistiques descriptives univariées

Il est même possible d’aligner les titres à droite ainsi :


> theme_update(plot.title = element_text(hjust = 1))

Plus généralement, en donnant au paramètre hjust des valeurs comprises entre 0 et 1,


vous pourrez placer le titre à n’importe quel endroit au-dessus du graphique.
Pour sauvegarder un graphique ggplot dans un fichier, il est recommandé d’utiliser la
fonction print.
> pdf("figure33Cggplot.pdf")
> print(ggplot(Mesures, aes(x = masse,y=taille)) + geom_point(pch=19) +
+ xlab("Masse") + ylab("Taille") + ggtitle("Taille vs. Masse"))
> dev.off()

Taille vs. Masse


● ●

● ●
● ●


20 ●

● ●
● ●

● ●
● ●
● ●

● ●
● ●●
● ●
● ●
●●

● ● ●●
Taille

● ● ●
● ● ●
● ●

●●● ● ● ●
● ●
● ● ●
●●●●●
● ● ●

● ● ●●● ●
●● ● ●● ●
●●
●● ● ● ●● ● ●
● ● ●
●● ● ● ● ●●● ●
●● ● ● ● ●
● ●● ● ●

●● ● ● ●
●●
● ● ● ●
●● ●● ● ●

●● ● ● ●●
● ●
●● ● ●
● ● ●
●● ● ● ● ●●● ●● ● ● ●
● ●
● ●● ●
● ● ● ●
●●● ●● ● ●
●●
● ● ●● ●●

● ● ●
● ● ● ●●
●● ● ● ●


● ● ● ●
10 ● ●●


●●● ●
● ● ● ● ●
●● ●
●●
●●
● ● ●
● ● ●●● ●

● ●●
● ●
●●

● ●

0 10 20 30 40 50
Masse

Figure 3.3C

Maintenant, vous pourriez souhaiter faire tous les graphiques qui couplent variable par
variable du fichier de données Mesures5. C’est possible avec la fonction pairs. En effet,
la fonction pairs reproduit tous les graphiques variable par variable possibles sur une seule
fenêtre graphique (qui est gérée comme une matrice).
3.5 Représentations graphiques d’une série statistique 113

Exemple :

> pairs(Mesures5)

Voici le résultat :
5 10 15 20 25 0 5 10 15

50
30
masse

0 10
10 15 20 25

taille
5

1 2 3 4 5 6 7
graines
15
10

masse_sec
5
0

4.0
3.0
© Dunod – La photocopie non autorisée est un délit.

espece 2.0
1.0

0 10 30 50 1 2 3 4 5 6 7 1.0 2.0 3.0 4.0

Figure 3.4

Remarque : sachez que vous pouvez personnaliser la diagonale de ce graphique avec la


bibliothèque BioStatR. Pour cela, tapez la ligne de commande suivante :

> pairs(Mesures5,diag.panel=panel.hist)
114 3 • Statistiques descriptives univariées

Elle vous renvoie la figure suivante :

5 10 15 20 25 0 5 10 15

50
masse

30
0 10
10 15 20 25

taille
5

1 2 3 4 5 6 7
graines

masse_sec
15
10
5
0

4.0
espece

0 10 30 50 1 2 3 4 5 6 7 1.0 2.0 3.0 4.0 3.0


2.0
1.0

Figure 3.5A

Remarque : vous pouvez obtenir avec la fonction ggpairs de la bibliothèque GGally


une figure encore plus complète. La voici :
3.5 Représentations graphiques d’une série statistique 115

Figure 3.5B
© Dunod – La photocopie non autorisée est un délit.

3.5.2 Représentations graphiques d’une distribution statistique discrète


Il existe plusieurs représentations graphiques pour ce type de série. Si vous souhaitez comparer
les effectifs, il vous faudra tracer un diagramme en bâtons dont la définition est donnée
ci-dessous.

Définition 3.25 Le diagramme en bâtons des effectifs (resp. des fréquences) d’une distribu-
tion statistique discrète est constitué d’une suite de segments verticaux d’abscisses xi dont la
longueur est proportionnelle à l’effectif (resp. la fréquence) de xi .

Définition 3.26 Le polygone des effectifs (resp. des fréquences) d’une distribution statistique
discrète est obtenu à partir du diagramme en bâtons des effectifs (resp. des fréquences) en
joignant par un segment les sommets des bâtons.
116 3 • Statistiques descriptives univariées

Définition 3.27 En remplaçant dans la définition précédente le mot effectifs (resp. fréquences)
par effectifs cumulés (resp. fréquences cumulées), vous obtenez le polygone des effectifs cumu-
lés (resp. des fréquences cumulées).

Maintenant, si vous souhaitez mettre en évidence les pourcentages pour comparer visuelle-
ment la structure de la série statistique que vous étudiez, vous représenterez les données à l’aide
d’un diagramme circulaire.

Définition 3.28 Le diagramme circulaire ou encore appelé couramment un diagramme  en


camembert  représente un petit nombre de valeurs par des angles au centre de ce disque
proportionnels à ces valeurs.

Remarque : en anglais, la dénomination de ce diagramme est pie-chart, pour faire penser


à des parts de tarte.

Exemple : vous allez mettre en application ces définitions sur la variable graine du
fichier Mesures5.
Commençons par tracer le diagramme en bâtons. Pour cela, vous allez utiliser à nouveau
la fonction plot, qui en général, est utilisée pour représenter un nuage de points, comme
vous avez pu le constater précédemment, mais ici va être utilisée autrement.

> plot(table(Mesures5$graines),lwd=4,col="red",
+ xlab="Nombre de graines",ylab="Effectif")

Il vous faut noter que, dans cette commande, vous avez rempli plusieurs arguments
de la fonction plot rencontrée auparavant.
– La première option lwd (« lwd » pour « linewidth ») indique la largeur des barres
verticales. Ici elle est égale à 4.
– La deuxième option col vous permet de choisir la couleur des barres verticales.
– Enfin les deux derniers arguments xlab et ylab vous permettent d’afficher un titre
sous l’axe des abscisses ainsi qu’à côté de l’axe des ordonnées.

Remarque : dans le cas général, pour obtenir un histogramme, il faudrait utiliser


l’option type="h". Elle n’est pas nécessaire dans notre cas car lorsque la fonction
plot est appliquée à un objet de classe table, elle est activée par défaut.
3.5 Représentations graphiques d’une série statistique 117

Voilà donc le résultat :

40
30
Effectif

20
10
0

1 2 3 4 5 6 7

Nombre de graines

Figure 3.6A

Vous pouvez vous demander à quoi correspond ce graphique. Rappelez-vous, vous avez
affiché auparavant un tableau donnant la répartition des effectifs en fonction du nombre
© Dunod – La photocopie non autorisée est un délit.

de graines présentes dans les deux types de glycines (110 glycines).


1 2 3 4 5 6 7
11 41 27 16 10 2 3

Notez qu’il s’agit d’un diagramme en bâtons pour les deux types de glycines.
Il est possible d’obtenir un diagramme en bâtons avec la bibliothèque ggplot en utilisant
la fonction geom_bar ou la fonction geom_histogram. Cette dernière permet de modifier
la largeur des barres pour qu’ils ressemblent plus à des bâtons. C’est ce graphique qui est
représenté dans la suite.
> ggplot(Mesures5, aes(x = graines)) + geom_bar(fill=I("red")) +
+ xlab("Nombre de graines") + ylab("Effectif")
118 3 • Statistiques descriptives univariées

> ggplot(Mesures5, aes(x = graines)) +


+ geom_histogram(binwidth=.1,fill=I("red")) +
+ xlab("Nombre de graines") + ylab("Effectif")

Figure 3.6B

Pour obtenir les diagrammes en bâtons par groupe avec ggplot, il suffit « d’ajouter » au
graphique l’élément facet_grid ou facet_wrap :
1) facet_grid(.∼espece) pour obtenir des graphiques juxtaposés horizontalement,
2) facet_grid(espece∼.) pour obtenir des graphiques juxtaposés verticalement,
3) facet_wrap(∼espece) pour obtenir des graphiques disposés suivant un quadrillage.
> ggplot(Mesures5, aes(x = graines)) +
+ geom_histogram(binwidth=.1,fill=I("red")) +
+ xlab("Nombre de graines") + ylab("Effectif") + facet_grid(.~espece)
3.5 Représentations graphiques d’une série statistique 119

> ggplot(Mesures5, aes(x = graines)) +


+ geom_histogram(binwidth=.1,fill=I("red")) +
+ xlab("Nombre de graines") + ylab("Effectif") + facet_grid(espece~.)

> ggplot(Mesures5, aes(x = graines)) +


+ geom_histogram(binwidth=.1,fill=I("red")) +
+ xlab("Nombre de graines") + ylab("Effectif") + facet_wrap(~espece)

C’est cette dernière variante qui est représentée ci-dessous :


© Dunod – La photocopie non autorisée est un délit.

Figure 3.6C

Vous pourriez souhaiter un diagramme en bâtons pour chaque type de glycines. Vous
pouvez commencer par la répartition des effectifs en fonction du nombre de graines
présentes dans chaque type de glycines. Les effectifs par groupe s’obtiennent en utilisant
la fonction tapply.
> tapply(Mesures5$graines,Mesures5$espece,table)
120 3 • Statistiques descriptives univariées

Cette commande signifie  appliquer la fonction table aux éléments de graines regrou-
pés par les sous-groupes définis par le facteur espece .
Plus généralement, tapply permet d’appliquer n’importe quelle fonction sur des sous-
groupes de données.

$’bignone’
character(0)

$’glycine blanche’
1 2 3 4 5 6 7
7 19 11 10 5 1 1

$’glycine violette’
1 2 3 4 5 6 7
4 22 16 6 5 1 2

$’laurier rose’
character(0)

Pour obtenir un diagramme en barres pour chacun des sous-groupes, vous allez utiliser
la fonction barchart de la bibliothèque lattice. Vous commencez donc par installer
cette bibliothèque et placer ses fonctions dans la mémoire de R à l’aide des deux premières
commandes ci-dessous :

> install.packages("lattice")
> library("lattice")
> data.graines_espece<-as.data.frame(table(Mesures5$graines,
+ Mesures5$espece))
> colnames(data.graines_espece)<-c("nbr.graines","espece",
+ "effectif")
> barchart(effectif~nbr.graines|espece,
+ data=data.graines_espece,layout=c(1,4))

Notez la présence d’une nouvelle fonction as.data.frame, qui en fait n’est pas com-
plètement nouvelle, puisqu’au chapitre 2 vous avez déjà rencontré des fonctions du
type as.numeric ou as.character. Ici as.data.frame a la même fonctionnalité que les
fonctions as.numeric et as.character, à savoir changer un objet en data.frame.
Notez également la présence de la fonction colnames qui permet de donner un nom
aux différentes colonnes de votre data.frame.
3.5 Représentations graphiques d’une série statistique 121

Voici le résultat :

20
15
10
5
0

20
15
10
5
Effectif

20
15
10
5
0

20
15
10
5
0
1 2 3 4 5 6 7

Figure 3.7
© Dunod – La photocopie non autorisée est un délit.

Mais vous pourriez faire d’une autre façon, plus élégante semble-t-il :

> as.data.frame(table(Mesures5$graines,Mesures5$espece))

Mais lorsque vous tapez cette ligne, vous observez que les noms des colonnes ne sont pas
les bons. Donc il faut que vous tapiez la ligne de commande suivante :

> (table.graines.espece <- table(Mesures5$graines,


+ Mesures5$espece,dnn=c("nbr.graines","espece")))
> print(table.graines.espece,zero.print=".")
> (data.graines.espece <- as.data.frame(table.graines.espece,
+ responseName="effectif"))
> barchart(effectif~nbr.graines|espece, data= data.graines.espece)
122 3 • Statistiques descriptives univariées

Dans certaines situations, pour rendre les résultats plus faciles à lire, il est intéressant de
pouvoir remplacer la valeur  0  par un autre symbole. L’argument zero.print="."
de la fonction print permet d’afficher des  .  à la place des  0  dans le tableau de
contingence.
Le résultat de la dernière commande est le suivant :

20

15

10

0
Effectif

20

15

10

1 2 3 4 5 6 7 1 2 3 4 5 6 7

Figure 3.8

Remarque : il y a un problème : il reste les espèces sans graines. Comment faire


pour les retirer ? Pour cela, il faut que vous utilisez l’option exclude dans la
fonction table. Pour remédier à cela, tapez les lignes de commande suivantes :

> (table.graines.espece <- table(factor(Mesures5$graines),


+ Mesures5$espece,dnn=c("nbr.graines","espece"),
+ exclude=c("bignone","laurier rose")))
3.5 Représentations graphiques d’une série statistique 123

espece
nbr.graines glycine blanche glycine violette
1 7 4
2 19 22
3 11 16
4 10 6
5 5 5
6 1 1
7 1 2

> (data.graines.espece<-as.data.frame(table.graines.espece,
+ responseName="effectif"))

nbr.graines espece effectif


1 1 glycine blanche 7
2 2 glycine blanche 19
3 3 glycine blanche 11
4 4 glycine blanche 10
5 5 glycine blanche 5
6 6 glycine blanche 1
7 7 glycine blanche 1
8 1 glycine violette 4
9 2 glycine violette 22
10 3 glycine violette 16
11 4 glycine violette 6
12 5 glycine violette 5
13 6 glycine violette 1
14 7 glycine violette 2
© Dunod – La photocopie non autorisée est un délit.

> barchart(effectif~nbr.graines|espece,
+ data=data.graines.espece)

Le résultat a été reproduit à la figure 3.9.


Mais si vous voulez les deux graphiques l’un en dessous de l’autre, il faut remplacer
la dernière ligne de commande par :
> barchart(effectif~nbr.graines|espece,
+ data=data.graines.espece,layout=c(1,2))

Le résultat a été reproduit à la figure 3.10.


De même pour ggplot, pour faire disparaître les panneaux vides, il suffit d’utiliser
le dataset nbr.graines.
124 3 • Statistiques descriptives univariées

20

15
Effectif

10

1 2 3 4 5 6 7 1 2 3 4 5 6 7 Figure 3.9

20

15

10

5
Effectif

20

15

10

1 2 3 4 5 6 7 Figure 3.10
3.5 Représentations graphiques d’une série statistique 125

Maintenant, si vous voulez des  vrais  bâtons à la place des rectangles, il vous
suffit de taper la ligne de commande suivante :

> xyplot(effectif~nbr.graines|espece,
+ data=data.graines.espece,type="h",lwd=4)

Voici le résultat :

1 2 3 4 5 6 7

20

15
Effectif

10

5
© Dunod – La photocopie non autorisée est un délit.

1 2 3 4 5 6 7

Nombre de graines

Figure 3.11

Enfin, si vous souhaitez que les deux graphiques soient l’un en dessous de l’autre,
il vous suffit de taper la ligne de commande suivante :

> xyplot(effectif~nbr.graines|espece,
+ data=data.graines.espece,type="h",layout=c(1,2),lwd=4)
126 3 • Statistiques descriptives univariées

Voilà le résultat :

20

15

10

5
Effectif

20

15

10

1 2 3 4 5 6 7

Nombre de graines

Figure 3.12

Enfin, une dernière représentation possible est celle-ci. Tapez la ligne de commande
suivante :
> barplot(table.graines.espece,beside=TRUE,
+ legend=rownames(table.graines.espece))

et vous obtenez le graphique reproduit à la figure 3.13.


Maintenant traçons le polygone des effectifs ainsi que le polygone des effectifs cumulés.
– Pour le polygone des effectifs, tapez les deux lignes de commande suivantes :

> plot(table(Mesures5$graines),lwd=4,col="red",
+ xlab="Nombre de graines",ylab="Effectif")
> lines(table(Mesures5$graines),type="l",lwd=4)

Remarque : l’option type="l" est nécessaire pour ajouter une ligne brisée et non
des barres verticales puisque vous appliquez la fonction lines à une table.
Vous obtenez le graphique reproduit à la figure 3.14.
3.5 Représentations graphiques d’une série statistique 127

1
20

2
3
4
5
6
7
15
10
5
0

glycine blanche glycine violette Figure 3.13


40
30
Effectif

20
10
0

1 2 3 4 5 6 7

Nombre de graines Figure 3.14


128 3 • Statistiques descriptives univariées

– Pour le polygone des effectifs cumulés, tapez les deux lignes de commande suivantes :

> plot(cumsum(table(Mesures5$graines)),type="h",lwd=4,col="red",
+ xlab="Nombre de graines",ylab="Effectif")
> lines(cumsum(table(Mesures5$graines)),lwd=4)

Vous travaillez ici avec un vecteur numérique d’où la nécessité de l’option type="h"
dans la fonction plot et l’absence de type="l" dans la fonction lines.
Voilà le résultat :
100
80
Effectif

60
40
20

1 2 3 4 5 6 7

Nombre de graines

Figure 3.15

Pour terminer, traçons le diagramme circulaire. Pour cela, vous allez utiliser la fonc-
tion pie dans laquelle vous renseignerez l’argument  couleur . Pour bien comprendre
comment construire ce diagramme, vous allez procéder en trois étapes :
1. D’abord, vous allez devoir récupérer les fréquences que vous avez calculées précédem-
ment.
> pie.graines<-c(0.1000,0.3727,0.2455,0.1455,0.0909,0.0182,
+ 0.0273)
3.5 Représentations graphiques d’une série statistique 129

2. Puis vous allez donner un nom aux sept sections de ce diagramme, en tapant la ligne
de commande suivante :

> names(pie.graines)<-c("1 graine","2 graines","3 graines",


+ "4 graines","5 graines","6 graines","7 graines")

3. Et enfin, vous allez mettre sept couleurs différentes pour mettre en évidence les diffé-
rences en tapant la ligne de commande suivante :

> pie(pie.graines,col=c("red","purple","cyan","blue",
+ "green","cornsilk","orange"))

Voici le résultat :

2 graines

1 graine

7 graines
6 graines

3 graines 5 graines
© Dunod – La photocopie non autorisée est un délit.

4 graines

Figure 3.16

Il est en fait possible d’aller beaucoup plus vite en définissant les noms des secteurs
directement dans la fonction pie avec l’argument labels et en utilisant la fonction
rainbow, arc-en-ciel en anglais. La commande rainbow(n) renvoie un vecteur de n
couleurs, du rouge au violet dans l’ordre de l’arc en ciel et est très pratique pour colorer
les graphiques de R.
> pie(table(Mesures5$graines),labels=c("1 graine",paste(2:7,
+ " graines")),col=rainbow(7))
130 3 • Statistiques descriptives univariées

3.5.3 Représentations graphiques d’une distribution statistique groupée

Définition 3.29 L’histogramme est la représentation graphique d’une distribution statistique


groupée. Deux cas se distinguent.
1. Dans le cas où les amplitudes des classes sont égales, cet histogramme est constitué d’un
ensemble de rectangles dont la largeur est égale à a, l’amplitude de la classe, et la hauteur
égale à K × n j où n j est l’effectif de la classe et K est un coefficient arbitraire (choix d’une
échelle), de sorte que l’aire totale sous l’histogramme est égale à K × N × a où N est
l’effectif total.
2. Dans le cas de classes d’amplitudes k j × a inégales, multiples entiers de l’une d’entre elles
d’amplitude a, il est généralement convenu, pour conserver le résultat précédent, de prendre
pour hauteur du rectangle de la classe numéro j le quotient (K × n j )/k j .

Remarque : lorsqu’il est utilisé pour estimer une densité, un histogramme délimite une
aire totale égale à 1.

Définition 3.30 Le polygone des effectifs ou des fréquences d’une distribution statistique
groupée est obtenu en joignant dans l’histogramme de cette distribution les milieux des côtés
horizontaux supérieurs.

Définition 3.31 Le polygone des fréquences cumulées d’une distribution statistique groupée
est la représentation graphique de la fonction définie sur chaque intervalle ]ai ; ai+1 ], 1  i  p
par :

i−1
x − ai
f (x) = fj + fi .
ai+1 − ai
j=1

Exemple : vous allez mettre en application ces trois définitions sur la variable masse du
fichier Mesures. Vous allez commencer par tracer l’histogramme avec la fonction hist
que vous avez déjà utilisée dans le paragraphe précédent.

> hist(Mesures$masse)

Vous constatez que le titre du graphique et les noms des axes sont écrits en anglais. Il est
possible de les modifier ainsi :

> histo<-hist(Mesures$masse,ylab="Effectif",xlab="Masse",
+ main="Histogramme des masses")
3.5 Représentations graphiques d’une série statistique 131

Voilà le résultat :

Figure 3.17

Vous pouvez aussi obtenir les résultats numériques qui ont permis de tracer cet histo-
gramme. Vous les avez déjà obtenus précédemment quand vous avez établi la distribution
statistique groupée de la variable masse du fichier Mesures en tapant les lignes de
commande suivantes :
© Dunod – La photocopie non autorisée est un délit.

> histo<-hist(Mesures$masse)
> histo

$breaks
[1] 0 5 10 15 20 25 30 35 40 45 50

$counts
[1] 82 58 51 23 16 12 4 2 1 3

$intensities
[1] 0.0650793521 0.0460317460 0.0404761905 0.0182539683
[5] 0.0126984127 0.0095238095 0.0031746032 0.0015873016
[9] 0.0007936508 0.0023809524
132 3 • Statistiques descriptives univariées

$density
[1] 0.0650793521 0.0460317460 0.0404761905 0.0182539683
[5] 0.0126984127 0.0095238095 0.0031746032 0.0015873016
[9] 0.0007936508 0.0023809524

$mids
[1] 2.5 7.5 12.5 17.5 22.5 27.5 32.5 37.5 42.5 47.5

$xname
[1] "Mesures$masse"

$equidist
[1] TRUE

attr(,"class")
[1] "histogram"

Maintenant, comment déchiffrez-vous la sortie ci-dessus donnée par R ?


– $breaks donne les bornes des classes de l’histogramme.
– $counts renvoie l’effectif de chaque classe de l’histogramme.
– $intensities renvoie les mêmes valeurs que density.
– $density donne la densité de chaque classe de l’histogramme.
– $mids renvoie le milieu de chaque classe de l’histogamme.
– $xname donne le nom du fichier utilisé pour l’histogramme.
– $equidist renvoie une valeur logique (TRUE ou FALSE) qui définit si les classes de
l’histogramme sont équidistantes ou ne le sont pas.

Remarque : par défaut, la fonction hist réalise des classes équidistantes.


Il faut maintenant préciser quelques arguments de la fonction hist qui peuvent vous être
utiles :
– breaks permet de spécifier :
• soit la règle servant à déterminer le nombre de classes que l’histogramme compor-
tera,
• soit directement les bornes des classes à l’aide d’un vecteur, comme vous le verrez
en exercice à la fin de ce chapitre.
– freq permet de tracer :
• soit l’histogramme des effectifs qui s’obtient en tapant freq=TRUE. Attention au mot
frequency en anglais qui signifie effectif. C’est cette option par défaut qu’utilise R,
• soit l’histogramme des proportions qui s’obtient en tapant freq=FALSE.
3.5 Représentations graphiques d’une série statistique 133

– include.lowest ferme la borne de l’intervalle de la première classe, c’est-à-dire


transforme l’intervalle ]a; b] en l’intervalle [a; b]. Pour obtenir cette transformation,
vous devez taper comme argument include.lowest=TRUE.
– right permet de choisir :
• soit des intervalles de la forme ]a; b] en spécifiant right=TRUE,
• soit des intervalles de la forme [a; b[. Par défaut, c’est cette forme que R utilise.
– col permet de choisir la couleur pour remplir les barres.
– plot peut être très utile lorsque vous ne souhaitez pas directement le graphe mais
seulement les résultats numériques, dont certains d’entre eux peuvent vous servir pour
faire des calculs. En effet, si plot=FALSE, l’histogramme n’apparaît pas et la fonction
hist renvoie les bornes des classes, les effectifs, les densités, le milieu des classes.
Vous pourriez souhaiter un histogrammme de la variable masse en fonction des quatre
espèces :
– les bignones,
– les glycines blanches,
– les glycines violettes,
– les lauriers roses.
Pour réaliser cet histogramme, il vous faut utiliser la bibliothèque lattice. Vous l’avez
sans doute déjà téléchargée au paragraphe précédent sinon faites-le maintenant en exécu-
tant la commande install.packages("lattice").
> library(lattice)

puis tapez la ligne de commande suivante :


> histogram(~masse|espece,data=Mesures)
© Dunod – La photocopie non autorisée est un délit.

Remarque : la présence du ~ n’est pas une erreur et signifie que vous vous intéres-
sez à la répartition de la masse en fonction des espèces.
Le résultat a été reproduit à la figure 3.18.
Maintenant, pour tracer le polygone des effectifs de la variable masse, tapez les lignes de
commande suivantes :
> histo<-hist(Mesures$masse,ylab="Effectif",xlab="Masse",
+ main="Polygone des effectifs des masses")
> lines(histo$mids,histo$counts,lwd=2)
> points(histo$mids,histo$counts,cex=1.2,pch=19)

Le résultat a été reproduit à la figure 3.19.


134 3 • Statistiques descriptives univariées

0 10 20 30 40 50

60

40

20
Pourcentage du total

60

40

20

0 10 20 30 40 50

Masse Figure 3.18

Figure 3.19
3.5 Représentations graphiques d’une série statistique 135

Pour terminer, vous allez tracer le polygone des effectifs cumulés. Pour cela, tapez les
lignes de commande suivantes :
> histo<-hist(Mesures$masse,plot=FALSE)
> barplot<-barplot(cumsum(histo$counts),ylab="Effectif",
+ xlab="Masse",main="Polygone des effectifs cumulés des masses")
> lines(barplot,cumsum(histo$counts),lwd=2)
> points(barplot,cumsum(histo$counts),cex=1.2,pch=19)

Voici le résultat :
© Dunod – La photocopie non autorisée est un délit.

Figure 3.20

3.5.4 Autres représentations graphiques


a) Boîte à moustaches
Pour comprendre la construction de ce graphique, vous aurez peut-être besoin de lire, au préa-
lable, le paragraphe de ce même chapitre intitulé  Représentations numériques d’une série
statistique .
Définition 3.32 La boîte à moustaches est un graphique sur lequel sont représentées de nom-
breuses caractéristiques de position et de dispersion.
136 3 • Statistiques descriptives univariées

En fait, la boîte à moustaches est un moyen rapide de figurer le profil essentiel d’une série
statistique quantitative.
Sur la boîte à moustaches, vous verrez apparaître la médiane, le premier et le troisième
quartiles, l’étendue, l’étendue interquartile ainsi que, s’il y en a, des valeurs atypiques par
rapport au reste de la distribution.

Remarque : la boîte à moustaches peut être aussi appelée boîte de distribution ou box-
plot.

Une question que vous vous posez est désormais :  Comment cette boîte à moustaches
est-elle construite ? . Il en existe plusieurs versions, mais une telle boîte comprend le plus
souvent :
– une échelle des valeurs présente sur l’axe vertical,
– la valeur du premier quartile, noté Q 1 , qui est le trait inférieur de la boîte,
– la valeur du troisième quartile, noté Q 3 , qui est le trait supérieur de la boîte,
– la valeur de la médiane, notée Q 2 , (Q 2 est aussi le deuxième quartile, vous reverrez cela
au paragraphe suivant) représentée par un trait horizontal au sein de la boîte,
– les moustaches inférieure et supérieure représentées par des pointillés (c’est cette repré-
sentation qu’utilise R) ou des traits pleins verticaux de chaque côté de la boîte et qui se
terminent par des traits horizontaux,
– les valeurs atypiques représentées chacune soit par un cercle (c’est cette représentation
qu’utilise R) soit par une étoile.

Remarque : parfois d’autres caractéristiques sont représentées comme la moyenne.

Définition 3.33 Une valeur aberrante est une valeur qu’il est impossible d’avoir observé pen-
dant l’expérience car elle est en totale contradiction avec votre connaissance du contexte
expérimental. Une valeur aberrante peut être due à une erreur de mesure, de relevé, de saisie
ou à une défaillance d’un appareil de mesure.

Ne confondez pas valeur atypique et valeur aberrante.

Une dernière question que vous pouvez vous poser est :  Comment ces deux moustaches
sont-elles construites ? .
Il existe plusieurs façons de construire les moustaches mais le plus souvent les valeurs des
moustaches inférieure et supérieure sont calculées ainsi :
– moustache inférieure : valeur de la série immédiatement supérieure à la frontière basse,
avec la frontière basse qui vaut : Q 1 − 1, 5 × (Q 3 − Q 1 ),
3.5 Représentations graphiques d’une série statistique 137

– moustache supérieure : valeur de la série immédiatement inférieure à la frontière haute,


avec la frontière haute qui vaut : Q 3 + 1, 5 × (Q 3 − Q 1 ).
Une construction alternative des moustaches est :
– moustache inférieure : premier décile,
– moustache supérieure : neuvième décile.
Une boîte utilisant cette convention est le plus souvent appelée boîte à pattes.
Enfin une dernière possibilité, qui est beaucoup moins utilisée que les deux précédentes,
est :
– moustache inférieure : minimum,
– moustache supérieure : maximum.

Exemple :
> boxplot(Mesures$masse)
> title("Bo^
ıte à moustaches de la variable masse")

Remarque : la fonction boxplot de R calcule les quartiles qui servent de limites à la


boîte de manière légèrement différente à celle qui sera exposée au § 3.6.1.
© Dunod – La photocopie non autorisée est un délit.

Figure 3.21
138 3 • Statistiques descriptives univariées

Enfin, sachez que vous pouvez récupérer, avec la fonction boxplot.stats, les valeurs
numériques qui ont permis de construire cette boîte à moustaches en tapant la ligne de commande
suivante :

> boxplot.stats(Mesures$masse)

$stats
[1] 1.0 4.5 8.4 14.6 29.6

$n
[1] 252

$conf
[1] 7.39474 9.40526

$out
[1] 32.0 35.5 32.5 40.0 49.2 46.0 42.2 48.4 31.7 33.7

Comment interprétez-vous cette sortie ?


– $stats donne l’extrêmité inférieure de la moustache inférieure, le premier quartile, la
médiane, le troisième quartile et l’extrémité supérieure de la moustache supérieure.
– $n est la taille de l’échantillon représenté.
– $conf donne un intervalle de confiance approximatif pour la médiane.
– $out donne les observations atypiques.
Les boîtes à moustaches sont des résumés graphiques efficaces des données et sont donc très
utilisées pour comparer les distributions d’un groupe à l’autre. Contrairement à un histogramme
qui pourrait sembler plus précis, elles ne nécessitent pas de regrouper les observations en classes.
Ceci est un avantage car le choix des classes est une opération qui est subjective et qui influence
fortement l’allure de l’histogramme construit à partir de celles-ci.
Exemple : si vous voulez construire une boîte à moustaches des masses pour chacune des
espèces, vous pouvez utiliser l’instruction suivante :

> boxplot(Mesures$masse~Mesures$espece)

Le résultat a été reproduit à la figure 3.22.


3.5 Représentations graphiques d’une série statistique 139

50
40
30
20
10
0

bignone glycine blanche glycine violette laurier rose

Figure 3.22

Pour colorier chacune des boîtes avec une couleur différente, il suffit d’utiliser l’argument
col que vous pouvez combiner avec la fonction rainbow que vous avez vue dans le paragraphe
consacré à la construction du diagramme circulaire :

> boxplot(Mesures$masse~Mesures$espece,col=rainbow(4))

La fonction bwplot de la bibliothèque lattice permet également de construire des boîtes à


© Dunod – La photocopie non autorisée est un délit.

moustaches par groupe, soit sur le même graphique, soit sur des panneaux différents à la manière
dont vous aviez obtenu des histogrammes et des diagrammes en bâtons précédemment :

> bwplot(masse~espece,data=Mesures,pch="|")
> bwplot(~masse|espece,data=Mesures,pch="|")

Remarque : vous trouverez en ligne des graphiques similaires réalisés avec la biblio-
thèque ggplot2.

b) Le diagramme tige-feuilles
Le diagramme tige-feuilles, encore appelé histogramme de Tukey, fournit des informations
encore plus précises que celles d’un histogramme. En effet, il permet non seulement de montrer
la fréquence de certaines classes mais aussi de représenter les valeurs des données ce qui autorise
140 3 • Statistiques descriptives univariées

le calcul direct de la médiane, des premier et troisième quartiles, du minimum et du maximum


ainsi que le repérage d’éventuels ex æquo ou de groupes parmi l’échantillon.
Plusieurs fonctions de R permettent d’obtenir ce même graphique :
– stem,
– stem.leaf
des bibliothèques RCMDR ou QCAGUI par exemple.
Remarque : parfois, ce diagramme peut porter le nom de  stem and leaf . D’ailleurs la
fonction sous R pour tracer ce graphe s’appelle stem.

Exemple :

> stem(Mesures$masse)

The decimal point is 1 digit(s) to the right of the |

0 | 0455
2 | 12445667777999990222223333444444455566688899
4 | 00111233444455556677777778888999002333333445556788888
6 | 01122333456677901123469
8 | 0267880002346677
10 | 123366779999333555777
12 | 00024458899234555688
14 | 000223466025799
16 | 444668922338
18 | 02218
20 | 046614568
22 | 445669
24 | 152
26 | 01246
28 | 679026
30 | 7
32 | 057
34 | 5
36 |
38 |
40 | 0
42 | 2
44 |
46 | 0
48 | 42
3.6 Représentations numériques d’une série statistique 141

3.5.5 Quelques remarques concernant les graphiques sous R


– Lorsque vous travaillez sous R, il peut être intéressant de conserver les graphiques de vos
analyses. Le plus simple est de les enregistrer dans un document word à l’aide du copier /
coller. Pour ce faire, vous allez dans le menu  File  ou  Fichier  et vous sélectionnez
 Copy to the clipboard   as a Bitmap .

– Il est à noter que les graphes produits par R peuvent être réduits ou agrandis sans déforma-
tion.

3.6 REPRÉSENTATIONS NUMÉRIQUES D’UNE SÉRIE STATISTIQUE


3.6.1 Caractéristiques de position

Définition 3.34 Un mode, Mo(x), d’une distribution statistique discrète est l’une des valeurs
x1 , x2 , . . . , x p dont la fréquence est maximale.

Ne confondez pas le mode d’une série statistique et la fonction mode de R.

Pour calculer le mode d’une série statistique discrète, il vous faut utiliser la fonction table.

Définition 3.35 Une classe modale, Mo(x), d’une distribution statistique groupée, est une
classe de densité, c’est-à-dire de rapport fréquence/longueur, maximale.

Définition 3.36 La distribution est unimodale si elle a un seul mode. Si elle en a plusieurs, elle
est plurimodale (bimodale, trimodale . . . ).

Pour calculer la classe modale d’une série statistique continue, l’histogramme de la variable
© Dunod – La photocopie non autorisée est un délit.

étudiée peut-être un bon moyen d’y accéder comme vous allez le voir ci-dessous avec l’exemple
traité.
Exemple : vous souhaitez déterminer la classe ou les classes modale(s) de la variable
masse du fichier Mesures par exemple. Vous pourriez également la ou les chercher sur
la variable taille du même tableau de données. Pour déterminer la classe ou les classes
modales sur une variable quantitative, vous avez deux manières de procéder :
1. soit de manière graphique,
2. soit de manière numérique.
Première méthode : graphiquement.
Vous tracez l’histogramme de la variable masse du jeu de données Mesures. Pour cela,
vous tapez la ligne de commande suivante :
142 3 • Statistiques descriptives univariées

> hist(Mesures$masse,ylab="Effectif",xlab="Masse",
+ main="Histogramme des masses")

Figure 3.23

À partir de la lecture de l’histogramme, représenté à la figure 3.23, vous en déduisez que


la distribution de la variable masse est unimodale et que la classe modale est égale à
[0; 5].
Deuxième méthode : numériquement.
Vous stockez l’histogramme et vous faites afficher à R les deux résultats numériques qui
vous intéressent, à savoir breaks et counts qui sont les deux premières lignes de la sortie
numérique d’un histogramme. Cette sortie a été donnée auparavant dans son intégralité
lorsque l’histogramme a été introduit. Pour cela, vous tapez les trois lignes de commande
suivantes :
> histo<-hist(Mesures$masse,plot=FALSE)
> classes<-histo$breaks
> classes

[1] 0 5 10 15 20 25 30 35 40 45 50
3.6 Représentations numériques d’une série statistique 143

puis les deux lignes de commande suivantes :


> effectifs<-histo$counts
> effectifs

[1] 82 58 51 23 16 12 4 2 1 3

Maintenant il vous faut interpréter ces lignes de sortie : vous recherchez dans la sortie de
counts (qui signifie dénombrements) la plus grande valeur. Il s’agit de 82. Ensuite, vous
regardez à quel intervalle 82 appartient et vous concluez que la classe modale est égale à
[0; 5].
Remarque : vous pourriez retrouver ce résultat autrement en tapant la ligne de commande
suivante :

> which(histo$density==max(histo$density))

[1] 1

Ce résultat indique que c’est la première classe qui est la classe modale, c’est-à-dire la
classe [0; 5].

Définition 3.37 Soit m et d les parties entière et décimale de (N + 1)/2. La médiane, notée
Q2 (x) ou Q0,5 (x), d’une série statistique est définie par Q2 (x) = x(m) + d(x(m+1) − x(m) ), où x(m)
signifie la m-ième valeur lorsque la série statistique est classée par ordre croissant. x(m) est
aussi appelée la m-ième statistique d’ordre.
Remarque :
1. Il existe beaucoup de définitions pour la médiane. Celle qui est présentée ici, est celle
© Dunod – La photocopie non autorisée est un délit.

utilisée par le logiciel R.


2. La médiane est aussi appelée parfois le deuxième quartile.

Exemple : vous allez calculer la médiane de la variable masse du fichier Mesures. Pour
cela, vous tapez la ligne de commande suivante :
> median(Mesures$masse)

[1] 8.4

Remarque : il existe aussi une autre ligne de commande qui vous rend le même résultat :

> quantile(Mesures$masse,0.5,type=6)
144 3 • Statistiques descriptives univariées

50%
8.4

Vous voyez apparaître la fonction quantile qui est aussi une caractéristique de position.

Définition 3.38 Pour tout nombre a ∈]0; 1[, soit m et d les parties entière et décimale de
a(N + 1). Le quantile d’ordre a, noté Qa (x), d’une série statistique est défini par : Qa (x) =
x(m) + d(x(m+1) − x(m) ).
Définition 3.39 Soit m et d les parties entière et décimale de (N + 1)/4. Le premier quartile,
noté Q1 (x) ou Q0,25 (x), d’une série statistique est défini par Q1 (x) = x(m) + d(x(m+1) − x(m) ).

Exemple : pour calculer le premier quartile de la variable masse du fichier Mesures, vous
tapez la ligne de commande suivante :
> quantile(Mesures$masse,0.25,type=6)

25%
4.5

Définition 3.40 Soit m  et d  les parties entière et décimale de 3(N +1)/4. Le troisième quartile,
noté Q3 (x) ou Q0,75 (x), d’une série statistique est défini par Q3 (x) = x(m  ) + d  (x(m  +1) − x(m  ) ).

Exemple : pour calculer le troisième quartile de la variable masse du fichier Mesures,


vous tapez la ligne de commande suivante :
> quantile(Mesures$masse,0.75,type=6)

75%
14.6

Remarque :
1. Vous pourriez aussi avoir envie d’afficher les trois quartiles. Pour cela, vous tapez la
ligne de commande suivante :
> quantile(Mesures$masse,c(0.25,0.5,0.75),type=6)

25% 50% 75%


4.5 8.4 14.6
3.6 Représentations numériques d’une série statistique 145

2. Vous pourriez aussi avoir envie d’afficher les cinq quartiles. Pour cela, vous tapez la
ligne de commande suivante :
> quantile(Mesures$masse,type=6)

0% 25% 50% 75% 100%


1.0 4.5 8.4 14.6 49.2

3. Ne confondez pas quartile et quantile. Ce ne sont pas les mêmes quantités comme vous
venez de le voir.

Définition 3.41 Pour une distribution statistique, discrète ou continue, non groupée, la
moyenne arithmétique, notée m(x), est le nombre réel défini par :


p
1 
p
m(x) = xi f i = xi n i .
N
i=1 i=1

Pour une distribution statistique groupée, la moyenne arithmétique, notée m(x), se calcule
par :
 p
ai + ai+1
m(x) = fi .
2
i=1

Cette moyenne peut aussi se calculer sur des données issues d’un échantillon.
Définition 3.42 Pour un échantillon non groupé, la moyenne arithmétique, notée x n , est
définie par :
1
n
xn = xi .
n
© Dunod – La photocopie non autorisée est un délit.

i=1

Pour un échantillon groupé, la moyenne arithmétique, notée x n , se calcule par :

1
q
xn = xi n i ,
n
i=1

où q est le nombre de classes associées à l’échantillon.

Remarque :
1. Dans la définition de la moyenne arithmétique d’un échantillon, une notation a été
introduite x n . Certains ouvrages et auteurs l’utilisent et la réservent uniquement pour la
moyenne arithmétique d’un échantillon, comme cela sera fait dans cet ouvrage. Parfois,
vous pouvez aussi trouver une abréviation de cette notation qui est : x.
146 3 • Statistiques descriptives univariées

2. La moyenne arithmétique est très souvent appelée la moyenne, tout simplement.


3. Il existe plusieurs façons de calculer une moyenne. Voici quelques exemples :
– la moyenne arithmétique,
– la moyenne géométrique,
– la moyenne harmonique,
– la moyenne quadratique.
Vous n’utiliserez dans ce livre que celle qui a été définie ci-dessus. Mais posez-vous la
question quand même :  Quelle est la moyenne que calcule le logiciel dont je me sers,
ou que calcule la calculatrice que j’utilise ? .
Sachez que la fonction mean de R calcule la moyenne arithmétique.
4. Il faut savoir que la moyenne arithmétique est très sensible aux valeurs extrêmes.
D’ailleurs, Benjamin Dereca a illustré parfaitement cette caractéristique de la moyenne
en déclarant :  un statisticien est une personne qui peut avoir la tête dans un four et
les pieds pris dans la glace et dire qu’en moyenne il se sent bien .

Exemple : pour calculer la moyenne arithmétique de la variable masse du jeu de données


Mesures, vous utiliserez la fonction mean et vous taperez la ligne de commande suivante :
> mean(Mesures$masse)

[1] 11.13056

Il existe une fonction de R qui peut vous donner en une seule fois toutes ces informations et
même plus (la valeur minimale et la valeur maximale de la variable) : la fonction summary. Mais
attention, les quartiles (1er quartile, médiane, 3e quartile) sont calculés avec le type 7 qui est
l’option par défaut du langage R ! Ce qu’il faut savoir c’est que la différence est faible entre
les valeurs calculées par le type 6 et le type 7. Vous pouvez donc sans inquiétude utiliser la
fonction summary.

> summary(Mesures$masse)

Min. 1st Qu. Median Mean 3rd Qu. Max.


1.00 4.50 8.40 11.13 14.60 49.20

3.6.2 Caractéristiques de dispersion


Il faudra distinguer les caractéristiques de dispersion calculées sur une population et celles
calculées sur un échantillon.
3.6 Représentations numériques d’une série statistique 147

Définition 3.43 L’étendue, notée e(x), est la différence entre la plus grande et la plus petite des
valeurs prises par la série statistique, donc e(x) = max(x) − min(x).

Exemple : pour calculer l’étendue de la variable masse du jeu de données Mesures, il y


a deux façons de procéder :
– Première façon : soit vous utilisez les fonctions max et min et vous tapez la ligne de
commande suivante :

> max(Mesures$masse)-min(Mesures$masse)

qui vous donne le résultat suivant :

[1] 48.2

– Deuxième façon : soit vous utilisez la fonction range qui vous donne le minimum et
le maximum de la série et vous appliquez ensuite la fonction diff sur range. Ce qui
donne la ligne de commande suivante :

> diff(range(Mesures$masse))

et qui donne toujours le même résultat, à savoir :

[1] 48.2

Remarque : il n’y a pas de fonction sous R qui calcule l’étendue.

Définition 3.44 L’étendue interquartile, notée EIQ(x), est la différence entre le troisième
© Dunod – La photocopie non autorisée est un délit.

quartile Q3 (x) et le premier quartile Q1 (x), donc EIQ(x) = Q3 (x) − Q1 (x).

Exemple : pour calculer l’étendue interquartile de la variable masse du fichier Mesures,


vous tapez la ligne de commande suivante :
> IQR(Mesures$masse,type=6)

[1] 10.1

Remarque : IQR pour  InterQuartile Range . De plus cette caractéristique est plus
sensible aux valeurs atypiques que l’étendue.
148 3 • Statistiques descriptives univariées

Définition 3.45 Pour une distribution statistique, discrète ou continue, non groupée, la variance,
notée Var (x), est le nombre réel positif défini par :

p
1 
p
Var (x) = s (x) =
2
(xi − m(x)) f i =
2
(xi − m(x))2 n i .
N
i=1 i=1

Pour une distribution statistique groupée en classes d’amplitudes égales à a, la variance, notée
Var (x), se calcule généralement en utilisant la correction de Sheppard. Elle est égale au
nombre réel positif défini par :

p
a2 1 
p
a2
Var (x) = s (x) =
2
(xi − m(x)) f i −
2
= (xi − m(x))2 n i − ·
12 N 12
i=1 i=1

Remarque :
1. La variance est une moyenne arithmétique qui s’ignore. En effet, la variance est la
moyenne des carrés des écarts à la moyenne arithmétique.
2. Vous pouvez aussi calculer la variance d’une autre manière, en utilisant la Formule de
Huygens :  
s2 (x) = m x 2 − m2 (x),
 
où m x 2 est la moyenne du carré des valeurs de la distribution. Cette formule est
parfois préférée et conseillée car elle ne fait intervenir qu’une fois la moyenne qui
parfois est une valeur arrondie et non la valeur exacte. Donc cela implique moins
d’erreurs de calcul.

Cette variance peut aussi se calculer sur des données issues d’un échantillon. Elle se définit
ainsi.
Définition 3.46 Pour un échantillon non groupé, la variance empirique, notée s 2 (x), est définie
par :
1
n
s 2 (x) = (xi − x n )2 .
n
i=1
Pour un échantillon groupé, la variance empirique, notée s 2 (x), se calcule par :
1
q
2
s (x) = (xi − x n )2 n i .
n
i=1

Pour un échantillon, il existe une autre variance, la variance corrigée.


Définition 3.47 Pour un échantillon non groupé, la variance corrigée, notée sc2 (x), est définie
par :
1 
n
n 2
sc2 (x) = (xi − x n )2 = s (x).
n−1 n−1
i=1
3.6 Représentations numériques d’une série statistique 149

Pour un échantillon groupé, la variance corrigée, notée sc2 (x), se calcule par :

1 
q
sc2 (x) = (xi − x n )2 n i .
n−1
i=1

Remarque :
1. Parfois certains auteurs nomment cette variance, la variance estimée ou la variance
de l’échantillon par opposition à la variance de la population, notée s2 (x).
2. Pourquoi existe-t-il deux formules pour calculer la variance ? Parce qu’il y a une
formule qui calcule la variance lorsque toutes les unités statistiques sont présentes :
c’est le calcul de la variance dans la population s2 (x) et une autre qui calcule la
variance dans un échantillon : c’est la variance corrigée. Vous comprendrez davantage
l’existence de ces deux formules dans le chapitre 6.

Exemple :
> var(Mesures$masse)

[1] 81.0281

Remarque : vous pouvez vous poser la question :  Quelle variance R calcule-t-il ? . La
réponse est que R, comme tout bon logiciel de statistique, calcule la variance corrigée
car c’est celle-là qu’il faut calculer lorsque les données qui sont traitées sont issues d’un
échantillon.
Il est alors facile de calculer la variance non corrigée. Il suffit de multiplier la variance
corrigée
n−1
– soit par le coefficient si vous travaillez sur un échantillon,
n
© Dunod – La photocopie non autorisée est un délit.

N −1
– soit par le coefficient si vous travaillez sur la population.
N

> (var(Mesures$masse)*(length(Mesures$masse))
+ /(length(Mesures$masse)-1))

[1] 81.35093

Remarque : nous rappelons que le signe « + » est là pour indiquer une nouvelle ligne et
non à intégrer dans la ligne de commande.

3.48 Pour une distribution statistique discrète ou continue, l’écart-type, noté s(x),
Définition
est égal à s2 (x).
150 3 • Statistiques descriptives univariées

Cet écart-type peut aussi se calculer sur des données issues d’un échantillon. Il se définit
ainsi.

Définition 3.49 Pour un échantillon, l’écart-type empirique, noté s(x), est égal à s 2 (x).

Pour un échantillon, il existe un autre écart-type, l’écart-type corrigé.



Définition 3.50 Pour un échantillon, l’écart-type corrigé, noté sc (x), est égal à sc2 (x).

Remarque :
1. Devez-vous écrire écart-type ou écart type ? Pour répondre à cette question, vous
pourrez consulter l’article de deux pages intitulé  Écart ? type  de Jacques Goupy,
paru dans la Revue MODULAD, numéro 35, en 2006 et téléchargeable depuis l’adresse
suivante : http://www-rocq.inria.fr/axis/modulad/archives.htm.
2. Pourquoi existe-t-il deux formules pour calculer un écart-type ? Comme auparavant
pour la variance, il y a une formule pour un écart-type calculé à partir de données
issues d’une population et une formule pour un écart-type calculé à partir de données
issues d’un échantillon. Vous pourrez aussi consulter l’article de quatre pages intitulé
 Quelle est la  bonne  formule de l’écart-type ?  d’Emmanuel Grenier, paru dans

la Revue MODULAD, numéro 37, en 2007 et téléchargeable depuis l’adresse suivante :


http://www-rocq.inria.fr/axis/modulad/archives.htm.

Exemple :
> sd(Mesures$masse)

[1] 9.001561

Remarque :
1. sd est l’abréviation de  Standard Deviation .
2. Vous pouvez vous poser la même question que précédemment :  Quel écart-type R
calcule-t-il ? . La réponse est que R, comme tout bon logiciel de statistique, calcule
l’écart-type corrigé car c’est celui-là qu’il faut calculer lorsque les données qui sont
traitées sont issues d’un échantillon.

Définition 3.51 La médiane des écarts absolus à la médiane, notée MAD(x) (pour Median
Absolute Deviation), d’une série statistique est le nombre réel défini par :
  
MAD(x) = Q2 |xi − Q2 (x)| 1iN .

Remarque : la médiane des écarts absolus à la médiane est également utilisée pour
estimer l’écart-type au sein de la population à partir d’un échantillon.
3.6 Représentations numériques d’une série statistique 151

Exemple :

> mad(Mesures$masse,constant=1)

[1] 6.74583

L’option constant=1 est nécessaire pour que le langage R calcule la valeur du MAD d’une série
statistique définie comme en 3.51.

Remarque : mad pour  Median Absolute Deviation .

Le mad évalue la dispersion autour de la médiane de la série statistique ou de l’échantillon. Si


vous souhaitez utiliser une autre valeur de référence que celle-ci, vous pouvez utiliser l’option
center. Par exemple pour utiliser une définition alternative de la médiane (plus petite des deux
valeurs centrales) comme référence :

> mad(Mesures$masse,quantile(Mesures$masse,type=1,probs=.5),constant=1)

[1] 4.6

Vérification en utilisant des fonctions élémentaires.

> median(abs(Mesures$masse-quantile(Mesures$masse,type=1,probs=.5)))

[1] 4.6
© Dunod – La photocopie non autorisée est un délit.

Lors du calcul de la médiane des valeurs absolues des écarts à la valeur de référence, la
fonction mad utilise par défaut la définition de la médiane implémentée dans la fonction median
de R : valeur centrale de la série ou de l’échantillon dans le cas d’un effectif impair ou moyenne
des deux valeurs centrales dans le cas d’un effectif pair. Les options low et high permettent
d’utiliser deux autres définitions alternatives : la plus petite ou la plus grande des deux valeurs
centrales dans le cas d’un effectif pair, la définition restant inchangée dans le cas d’un effectif
impair !

> mad(Mesures$masse,constant=1,low=TRUE)

[1] 4.5
152 3 • Statistiques descriptives univariées

Vérification en utilisant des fonctions élémentaires :

> quantile(abs(Mesures$masse-median(Mesures$masse)),type=1,probs=.5)

50%
4.5

Il est possible de combiner les deux options :

> mad(Mesures$masse,quantile(Mesures$masse,type=1,probs=.5),constant=1,low=TRUE)

[1] 4.6

Vérification en utilisant des fonctions élémentaires :

> quantile(abs(Mesures$masse-quantile(Mesures$masse,type=1,probs=.5)),
+ type=1,probs=.5)

50%
4.6

Définition 3.52 Le coefficient de variation, noté CV(x), d’une série statistique est défini par le
rapport de l’écart-type avec la moyenne arithmétique. Pour un échantillon, il s’agit du rapport
de l’écart-type corrigé avec la moyenne arithmétique.

Remarque :
1. Le CV(x) est défini pour des variables positives.
2. Ce coefficient n’a pas d’unité. Il permet de comparer des séries statistiques entre elles
qui n’ont pas les mêmes unités.

Exemple : comparer les températures dans différents pays, puisque plusieurs unités
coexistent.
3. Pour calculer le coefficient de variation, vous pouvez utiliser la bibliothèque BioStatR.

Exemple :
> library(BioStatR)
> cvar(Mesures$masse)

[1] 80.87253
3.6 Représentations numériques d’une série statistique 153

Remarque : ici ce qui est calculé est sur un échantillon.

3.6.3 Caractéristiques d’asymétrie

Définition 3.53 Le moment centré d’ordre r d’une distribution statistique discrète est égal à :


p

m m r (x) = (xi − m(x))r f i .


i=1

Définition 3.54 Le coefficient d’asymétrie de Fisher d’une série statistique est la quantité
g1 (x) définie par :
m m 3 (x) m m 3 (x)
g1 (x) = = ·
s3 (x) (m m 2 (x))3/2

Définition 3.55 Le coefficient d’asymétrie de Pearson d’une série statistique est la quantité
b1 (x) définie par :
(m m 3 (x))2 (m m 3 (x))2
b1 (x) = = = g21 (x).
(s2 (x))3 (m m 2 (x))3

Pour un échantillon, il existe un coefficient d’asymétrie de Fisher corrigé.

Définition 3.56 Le coefficient d’asymétrie de Fisher corrigé d’un échantillon est la quantité
g1,c (x) définie par :

n  3
n xi − x n
© Dunod – La photocopie non autorisée est un délit.

g1,c (x) =
(n − 1)(n − 2) sc
i=1
⎡ ⎤
1
n

√ ⎢ (xi − x n )3 ⎥

n(n − 1) ⎢ n ⎥
i=1 ⎥
⎢ 3/2 ⎥
n − 2 ⎢ 
= .
n ⎥
⎣ 1 ⎦
(xi − x n )2
n
i=1
154 3 • Statistiques descriptives univariées

3.6.4 Caractéristiques d’aplatissement

Définition 3.57 Le coefficient d’aplatissement de Fisher d’une série statistique est la quantité
g2 (x) définie par :
m m 4 (x)
g2 (x) = − 3.
(m m 2 (x))2

Pour un échantillon, il existe un coefficient d’aplatissement de Fisher corrigé.

Définition 3.58 Le coefficient d’aplatissement de Fisher corrigé d’un échantillon est la quan-
tité g2,c (x) définie par : ⎡ ⎤

n

⎢ (xi − x n ) 4

⎢ i=1 ⎥
⎥ − 3 (n − 1)
2
(n + 1)n ⎢
g2,c (x) =
(n − 1)(n − 2)(n − 3) ⎢
⎣ sc4 ⎥
⎦ (n − 2)(n − 3)

n−1
= ((n + 1)g2,ech (x) + 6),
(n − 2)(n − 3)

où :
1
n
(xi − x n )4
n
i=1
g2,ech (x) = 2 − 3.
1 n
(xi − x n )2
n
i=1

Définition 3.59 Le coefficient d’aplatissement de Pearson d’une série statistique est la quan-
tité b2 (x) définie par :
m m 4 (x) m m 4 (x)
b2 (x) = = ·
(m m 2 (x))2 s4 (x)

Exemple : nous considérons dans un premier temps que l’ensemble des masses est un
échantillon. Par conséquent nous cherchons à évaluer le coefficient d’asymétrie corrigé
g1,c (x) et d’aplatissement corrigé g2,c (x). Pour calculer ces deux caractéristiques de
forme corrigées, téléchargeons la bibliothèque agricolae.

> kurtosis(Mesures$masse)

[1] 3.080963
3.6 Représentations numériques d’une série statistique 155

> detach(package:agricolae)
> library(e1071)
> skewness(Mesures$masse,type=1)

[1] 1.630072

> kurtosis(Mesures$masse,type=1)

[1] 2.996456

> skewness(Mesures$masse,type=2)

[1] 1.639849

L’option type2 donne le même résultat que la bibliothèque agricolae.

> kurtosis(Mesures$masse,type=2)

[1] 3.080963

Remarque :
1. Le  skewness  mesure l’asymétrie de la distribution d’une variable quantitative.

2. Le  kurtosis  mesure l’aplatissement de la distribution d’une variable quantitative.


156 3 • Statistiques descriptives univariées

EN RÉSUMÉ

Commande Description
head("data") Affiche les 6 premières lignes de data.
tail("data") Affiche les 6 dernières lignes de data.
str("objet") Affiche la structure de objet.
levels("factor") Affiche les niveaux de factor.
table("vector") Affiche la table des effectifs de vector.
cumsum("vector") Cumule l’une après l’autre les coordonnées de vector.
sum("vector") Calcule la somme des coordonnées de vector.
prop.table("vector") Affiche la table des fréquences de vector.
min("vector") Calcule la valeur minimale de vector.
max("vector") Calcule la valeur maximale de vector.
tapply(x,grp,fonct) Applique la fonction fonct aux groupes constitués à partir
du vecteur x grâce aux modalités du facteur grp.
as.data.frame("matrix") Transforme matrix en un tableau de données.
rownames("matrix") Affiche le nom des lignes de matrix.
rownames("dframe") Affiche le nom des lignes de dframe.
colnames("matrix") Affiche le nom des colonnes de matrix.
colnames("dframe") Affiche le nom des colonnes de dframe.
Commandes pour les représentations graphiques
plot(x,y) Trace le nuage de points de y en fonction de x.
barchart(...) Trace un diagramme.
barplot(x) Trace un diagramme en bâtons de x.
pie(x) Trace un diagramme circulaire de x.
hist() Trace un histogramme, avec des options pour définir les classes :
• nclass=... pour fixer un nombre de classes
• br=c(...,...,...) pour donner les bornes des classes.
Attention de ne pas utiliser nclass et br en même temps.
boxplot(x) Trace une boîte à moustaches de x.
boxplot(x~fac) Trace une boîte à moustaches pour chaque groupe de valeurs de
x défini par un niveau de fac.
Commandes pour les caractéristiques de position
summary(vector) Donne certaines caractéristiques de position de vector.
summary(dframe) Donne certaines caractéristiques de position pour chaque
colonne de dframe.
mean(vector) Calcule la moyenne de vector.
range(vector) Calcule les valeurs minimale et maximale de vector.
median(vector) Calcule la médiane de vector.
quantile(vector,probs,type) Calcule les quantiles de vector de niveau les valeurs
de probs de type « type ». Par défaut « type=7 »
et probs=c(0,.25,.5,.75,1).
Exercices 157

Commande Description
Commandes pour les caractéristiques de dispersion
var(vector) Calcule la variance corrigée de vector.
sd(vector) Calcule l’écart-type corrigé de vector.
Commandes pour les caractéristiques de forme
kurtosis(vector) Calcule l’aplatissement de vector.
skewness(vector) Calcule l’asymétrie de vector.
Commandes pour manipuler les données
make.groups(x,y,...) Empile les vecteurs x, y,. . . dans un tableau de données
en créant un facteur pour identifier chacun des groupes.

EXERCICES

Exercice 3.1 Fonction factor

Dans cet exercice, vous allez découvrir comment fonctionne la fonction factor qui a été
évoquée dans les rappels de cours.

Sur trois variétés de pommes notées 1, 2 et 3, la jutosité de chaque pomme est relevée. La
jutosité est un indice compris entre 0 et 10. Il y a quatre pommes par variété qui ont été testées.
La variété 1 est la Golden Delicious, la variété 2 est la pomme Calville et la variété 3 est la Belle
de Boskoop. Vraisemblablement, la question que vous pourriez vous poser serait :  Quelle est
© Dunod – La photocopie non autorisée est un délit.

la variété de pomme la plus juteuse ? . Vous ne chercherez pas à répondre à cette question ici.
En effet, il s’agit d’une application d’une technique statistique connue sous le nom d’analyse
de la variance que vous ne connaissez pas encore. Le but de cet exercice est de vous montrer
comment vous servir de la fonction factor. Les résultats obtenus sont inscrits dans le tableau
suivant.
Variété de pomme Jutosité Variété de pomme Jutosité
1 4 2 7
1 6 2 6
1 3 3 8
1 5 3 6
2 7 3 5
2 8 3 6
158 3 • Statistiques descriptives univariées

1) Rentrez les données sous R en introduisant deux variables :


– une première variable que vous noterez Variete,
– et une seconde variable que vous noterez Jutosite.
À l’issue de cette opération, construisez un data.frame dont le nom est Pommes.
2) Donnez la structure du jeu de données Pommes que vous venez de construire à la question
précédente. Que constatez-vous ?
Il faut donc transformer la variable Variete en un factor.
3) Pour transformer un vecteur de type numérique ou entier, vous pouvez utiliser la fonction
factor. Ainsi pour transformer la variable Variete qui est pour l’instant de mode numeric,
vous tapez la ligne de commande suivante :

> Variete<-factor(Variete)

puis :

> Pommes<-data.frame(Variete,Jutosite)
> rm(Variete)
> rm(Jutosite)

Quelle est la nature du jeu de données Pommes ? Quels sont les modes des deux variables qui
constituent le jeu de données Pommes ?

Remarque :

rm pour  remove .

4) Vous auriez pu procéder autrement. Cette seconde façon est beaucoup plus rapide et vous
êtes invité à vous en servir dès que vous savez qu’une variable dans votre jeu de données est un
facteur.
Tapez les lignes de commande suivantes :

> Variete<-factor(c(rep(1,4),rep(2,4),rep(3,4)))
> Jutosite<-c(4,6,3,5,7,8,7,6,8,6,5,6)
> Pommes<-data.frame(Variete,Jutosite)

Qu’obtenez-vous ? Avez-vous le même résultat qu’auparavant, c’est-à-dire la même structure


pour le jeu de données Pommes ?
Exercices 159

5) Il vous est conseillé, au moins dans les premiers temps de votre apprentissage de la statistique,
de ne pas utiliser des nombres pour les niveaux de votre facteur, mais plutôt des lettres. Pour
cela, vous utiliserez l’option labels dans la fonction factor.
Vous allez donner un label aux valeurs numériques 1, 2 et 3, à savoir 1 devient V1, 2 devient V2
et 3 devient V3, V pour Variete. Pour cela, tapez les lignes de commande suivantes :

> Variete<-factor(c(rep(1,4),rep(2,4),rep(3,4)),labels=c("V1","V2","V3"))
> Jutosite<-c(4,6,3,5,7,8,7,6,8,6,5,6)
> Pommes<-data.frame(Variete,Jutosite)

Qu’obtenez-vous ? Il y a quelque chose qui a changé. Pouvez-vous dire quoi ?


6) Enfin, il existe une fonction as.factor qui permet d’arriver au même résultat.
Tapez les lignes de commande suivantes :

> Variete<-as.factor(c(rep(1,4),rep(2,4),rep(3,4)))
> Jutosite<-c(4,6,3,5,7,8,7,6,8,6,5,6)
> Pommes<-data.frame(Variete,Jutosite)

Vérifiez bien que vous obtenez le même résultat qui est attendu.
7) Calculez les moyennes pour chacun des groupes défini par la variable Variete en utilisant la
fonction tapply :

> tapply(Jutosite,Variete,mean)

Procédez de même pour obtenir l’écart-type, les quantiles ou appliquer la fonction summary à
chacun des groupes défini par le facteur Variete.
© Dunod – La photocopie non autorisée est un délit.

Exercice 3.2 Comment grouper des données ?

Vous allez vous intéresser ici à la variable masse du jeu de données Mesures. Dans les
rappels de cours, vous avez vu comment grouper ces données automatiquement à l’aide de
l’une des trois règles dues à Sturges, Scott et Freedman-Diaconis. Vous allez voir comment
grouper des données suivant différents critères.

1) Groupez les données en 5 classes à l’aide de l’option breaks=5 de la fonction hist. Que se
passe-t-il si vous cherchez à en obtenir seulement 4 ?
2) Groupez les données en utilisant les classes suivantes [0; 5], ]5; 10], ]10; 15], ]15; 20] et
]20; 50] à l’aide de l’option breaks=c(0,5,10,15,20,50) de la fonction hist.
160 3 • Statistiques descriptives univariées

3) Comparez le résultat obtenu avec :

> brk<-c(0,5,10,15,20,50)
> table(cut(Mesures$masse,brk))
> data.frame(table(cut(Mesures$masse,brk)))

4) Si vous cherchez à créer des groupes dont les effectifs sont équilibrés, vous pouvez par
exemple utiliser la fonction cut2 de la bibliothèque Hmisc. Après avoir téléchargé et installé
cette bibliothèque, commentez les lignes de code suivantes et en particulier le rôle des options g
et m.

> library(Hmisc)
> brk<-c(0,5,10,15,20,50)
> res<-cut2(Mesures$masse,brk)
> table(res)
> table(cut2(Mesures$masse,g=10))
> table(cut2(Mesures$masse,m=50))

Exercice 3.3 Fonctions attach et detach

Le but de cet exercice est d’introduire les fonctions attach et detach qui permettent
d’accéder plus facilement aux variables contenues dans un tableau de données.

1) Exécutez les deux lignes de commande l’une après l’autre :

> head(Mesures$masse)
> head(masse)

Que constatez-vous ?
2) Vous allez utiliser les deux fonctions attach et detach. Pour cela, tapez les deux lignes de
commande :

> attach(Mesures)
> head(masse)

puis les suivantes :

> detach(Mesures)
> head(masse)

Que se passe-t-il maintenant ?


Problème 161

Exercice 3.4 Jeu de données Europe

Le but de cet exercice est de calculer des résumés numériques et de tracer une boîte à
moustaches.

1) Affichez les six premières lignes de ce jeu de données qui est disponible dans la bibliothèque
BioStatR.
2) De quoi est constitué ce jeu de données ? C’est-à-dire : combien de variables composent
ce jeu de données ? quelle est la nature de ces variables ? combien d’unités statistiques sont
présentes dans ce jeu de données ?
3) Quelles sont la classe et la taille de ce jeu de données ?
4) Donnez la moyenne, la valeur minimale, la valeur maximale, la médiane et la ou les classes
modales de la variable Duree.
5) Donnez l’écart-type corrigé, le coefficient de variation et l’étendue de la variable Duree.
6) Tracez la boîte à moustaches de la variable Duree en mettant un label pour l’axe vertical qui
est  Durée en heures . Représentez sur cette même boîte la moyenne.
7) Sauvegardez la boîte à moustaches au format .pdf et au format .ps en utilisant les fonctions
pdf et postscript.

PROBLÈME
© Dunod – La photocopie non autorisée est un délit.

Problème 3.1 Données brutes ou groupement en classes

Lorsque vous étudiez une série statistique sur un caractère quantitatif qui comporte un grand
nombre de valeurs, il est suggéré de la grouper par classes puis ensuite remplacer chaque
classe par son milieu. Mais les résultats en sont légèrement modifiés, ce que vous pouvez
imaginer. D’ailleurs, comme nous l’avons vu précédemment, il existe des corrections pour
certaines des caractéristiques. Nous avons donné celles pour la variance, l’asymétrie et
l’aplatissement.
Le but de ce problème est d’illustrer un groupement en classes défini préalablement par
l’utilisateur.
162 3 • Statistiques descriptives univariées

Le jeu de données ci-dessous est extrait du livre de F. Couty, J. Debord et D. Fredon, Mini
Manuel de Probabilités et statistique, Dunod, 2007.
Considérez une série statistique de 60 taux d’hémoglobine dans le sang, exprimés en g/L et
mesurés chez des adultes présumés en bonne santé. La série est rangée par valeurs croissantes et
l’ordre dans lequel les données ont été observées n’a pas été conservé.

Femmes 105 110 112 112 118 119 120 120 125 126
127 128 130 132 133 134 135 138 138 138
138 142 145 148 148 150 151 154 154 158
Hommes 141 144 146 148 149 150 150 151 153 153
153 154 155 156 156 160 160 160 163 164
164 165 166 168 168 170 172 172 176 179

1) Créez deux vecteurs : un vecteur Femmes et un vecteur Hommes qui contiennent chacun les
données brutes.
2) Considérez le groupement en classes suivant :
[104; 114], ]114; 124], ]124; 134], ]134; 144], ]144; 154], ]154; 164],
]164; 174], ]174; 184].
Pour chacune des deux séries : femmes et hommes, déterminez les effectifs et les fréquences de
chaque classe.
3) Effectuez une représentation graphique adaptée des deux distributions groupées en classe de
la question 2).
4) Calculez les moyennes pour chacune des trois distributions initiales : ensemble, femmes,
hommes.
5) Calculez les moyennes des trois distributions (ensemble, femmes, hommes) après le groupe-
ment en classes de la question 2), en remplaçant chaque classe par son milieu.
6) Calculez les médianes pour chacune des trois distributions initiales : ensemble, femmes,
hommes.
7) Calculez l’écart interquartile pour chacune des trois distributions initiales : ensemble, femmes,
hommes.
8) Calculez les variances et les écarts-types des trois distributions initiales : ensemble, femmes,
hommes.
9) Pour la distribution des femmes, calculez les caractéristiques de forme de Fisher.
Du mal à démarrer 163

DU MAL À DÉMARRER

➩ Exercice 3.1
1) Utilisez la fonction c et la fonction data.frame.
2) Utilisez la fonction str et la fonction class.
3) Utilisez la fonction str et la fonction class.
4) Utilisez la fonction str.
5) Utilisez la fonction str.
6) Utilisez la fonction str.
7) Utilisez la fonction tapply avec les arguments mean, sd, quantile et summary.

➩ Exercice 3.2
1) Utilisez la fonction hist avec l’option breaks. Pensez à l’option plot=FALSE qui
vous permet d’éviter l’affichage du graphique.
2) Utilisez à nouveau la fonction hist avec les options breaks et plot=FALSE.
3) Utilisez la fonction cut et la fonction table en même temps. Puis utilisez à nouveau
la fonction cut avec la fonction head.
4) Utilisez la fonction cut2 avec les options g et m. N’oubliez pas de télécharger la
bibliothèque Hmisc pour pouvoir utiliser cette fonction. Utilisez également la fonction
table.
© Dunod – La photocopie non autorisée est un délit.

➩ Exercice 3.4
1) Utilisez la fonction head.
2) Utilisez la fonction str.
3) Utilisez la fonction class et la fonction dim.
4) Utilisez la fonction summary et la fonction hist.
5) Utilisez la fonction sd et la fonction cvar.
6) Utilisez la fonction boxplot et points pour représenter la moyenne.
7) Consultez l’aide de la fonction pdf et de la fonction postscript.

➩ Problème 3.1
1) Utilisez la fonction c.
164 3 • Statistiques descriptives univariées

2) Utilisez la fonction hist avec l’option breaks. Récupérez les dénombrements,


counts, de l’objet obtenu à la question 2.
3) Utilisez la fonction hist avec les options breaks, main, xlab et ylab.
4) Utilisez la fonction mean.
5) Utilisez la fonction sum.
6) Utilisez la fonction quantile.
7) Utilisez la fonction IQR.
8) Utilisez les fonctions var et sd et adaptez les résultats car vous travaillez avec une
population.
9) Utilisez les fonctions skewness et kurtosis de la bibliothèque e1071 car vous
travaillez avec une population.

SOLUTION DES EXERCICES

Exercice 3.1
1)

> Variete<-c(rep(1,4),rep(2,4),rep(3,4))
> Variete

[1] 1 1 1 1 2 2 2 2 3 3 3 3

> Jutosite<-c(4,6,3,5,7,8,7,6,8,6,5,6)
> Jutosite

[1] 4 6 3 5 7 8 7 6 8 6 5 6

> Pommes<-data.frame(Variete,Jutosite)
> Pommes
Solution des exercices 165

Variete Jutosite
1 1 4
2 1 6
3 1 3
4 1 5
5 2 7
6 2 8
7 2 7
8 2 6
9 3 8
10 3 6
11 3 5
12 3 6

2)

> str(Pommes)

’data.frame’: 12 obs. of 2 variables:


$ Variete : num 1 1 1 1 2 2 2 2 3 3 ...
$ Jutosite: num 4 6 3 5 7 8 7 6 8 6 ...

> class(Pommes$Variete)

[1] "numeric"

Vous notez que les deux variables Variete et Jutosite sont quantitatives puisqu’elles sont
© Dunod – La photocopie non autorisée est un délit.

toutes les deux de classe numérique. Il faut donc changer la classe de la variable Variete.
Variete doit devenir un facteur.
3)

> str(Pommes)

’data.frame’: 12 obs. of 2 variables:


$ Variete : Factor w/ 3 levels "1","2","3": 1 1 1 1 2 2 2 2 3 3 ...
$ Jutosite: num 4 6 3 5 7 8 7 6 8 6 ...

Vous constatez à partir de cette sortie de R que la variable Variete est désormais un facteur.
Vous pouvez aussi retrouver ce résultat en tapant :
166 3 • Statistiques descriptives univariées

> class(Pommes$Variete)

qui vous renvoie comme résultat :

[1] "factor"

La variable Jutosite a gardé sa classe de variable numérique. Vous obtenez le même tableau
que précédemment. En effet, si vous tapez la ligne de commande suivante :
> Pommes

Variete Jutosite
1 1 4
2 1 6
3 1 3
4 1 5
5 2 7
6 2 8
7 2 7
8 2 6
9 3 8
10 3 6
11 3 5
12 3 6

4)

> str(Pommes)

’data.frame’: 12 obs. of 2 variables:


$ Variete : Factor w/ 3 levels "1","2","3": 1 1 1 1 2 2 2 2 3 3 ...
$ Jutosite: num 4 6 3 5 7 8 7 6 8 6 ...

Et vous obtenez encore la même structure qu’auparavant, à savoir la variable Variete est un
facteur et la variable Jutosite est une variable quantitative.
5)
> Pommes

Variete Jutosite
1 V1 4
Solution des exercices 167

2 V1 6
3 V1 3
4 V1 5
5 V2 7
6 V2 8
7 V2 7
8 V2 6
9 V3 8
10 V3 6
11 V3 5
12 V3 6

Ce qui a changé c’est la colonne Variete. En effet, ce ne sont plus 1, 2, 3 qui apparaissent
mais V1, V2, V3.

> str(Pommes)

’data.frame’: 12 obs. of 2 variables:


$ Variete : Factor w/ 3 levels "V1","V2","V3": 1 1 1 1 2 2 2 2 3 3 ...
$ Jutosite: num 4 6 3 5 7 8 7 6 8 6 ...

Ce qui a changé, c’est sur la deuxième ligne de cette sortie, ce ne sont plus 1, 2 et 3 qui sont
entre guillemets mais V1, V2 et V3.
6)
> Pommes

Variete Jutosite
© Dunod – La photocopie non autorisée est un délit.

1 1 4
2 1 6
3 1 3
4 1 5
5 2 7
6 2 8
7 2 7
8 2 6
9 3 8
10 3 6
11 3 5
12 3 6

> str(Pommes)
168 3 • Statistiques descriptives univariées

’data.frame’: 12 obs. of 2 variables:


$ Variete : Factor w/ 3 levels "1","2","3": 1 1 1 1 2 2 2 2 3 3 ...
$ Jutosite: num 4 6 3 5 7 8 7 6 8 6 ...

7) Il suffit d’exécuter la ligne de commande indiquée dans l’énoncé puis de remplacer la fonction
mean par les fonctions sd, quantile et summary.

> tapply(Jutosite,Variete,mean)

1 2 3
4.50 7.00 6.25

> tapply(Jutosite,Variete,sd)

1 2 3
1.2909944 0.8164966 1.2583057

> tapply(Jutosite,Variete,quantile,type=6)

$‘1‘
0% 25% 50% 75% 100%
3.00 3.25 4.50 5.75 6.00

$‘2‘
0% 25% 50% 75% 100%
6.00 6.25 7.00 7.75 8.00

$‘3‘
0% 25% 50% 75% 100%
5.00 5.25 6.00 7.50 8.00

Pour spécifier que la fonction quantile doit utiliser l’option type=6, il suffit de l’ajouter
après la fonction quantile, comme option de la fonction tapply. Il est possible de préciser
ainsi plusieurs options.

> tapply(Jutosite,Variete,summary)
Solution des exercices 169

$‘1‘
Min. 1st Qu. Median Mean 3rd Qu. Max.
3.00 3.75 4.50 4.50 5.25 6.00

$‘2‘
Min. 1st Qu. Median Mean 3rd Qu. Max.
6.00 6.75 7.00 7.00 7.25 8.00

$‘3‘
Min. 1st Qu. Median Mean 3rd Qu. Max.
5.00 5.75 6.00 6.25 6.50 8.00

Vous remarquez que lorsque la fonction à appliquer à chacun des sous-groupes renvoie plusieurs
valeurs, la fonction tapply crée une liste formée par les résultats obtenus sur chacun de ces
sous-groupes, le nom de chaque élément de la liste étant celui du sous-groupe associé.
Enfin, vous noterez qu’il y a une différence entre les premiers et troisièmes quartiles calculés
par la fonction quantile et l’option type=6 et la fonction summary, qui elle calcule des
quantiles de type=7.

Exercice 3.2
1) L’option plot=FALSE permet d’éviter l’affichage du graphique puisque seule la distribution
vous intéresse. Vous obtenez cinq classes d’amplitude égale à 10 et d’extrémités 0, 10, 20, 30,
40, 50.

> hist(Mesures$masse,breaks=5,plot=FALSE)
© Dunod – La photocopie non autorisée est un délit.

$breaks
[1] 0 10 20 30 40 50

$counts
[1] 140 74 28 6 4

$intensities
[1] 0.05556 0.02937 0.01111 0.00238 0.00159

$density
[1] 0.05556 0.02937 0.01111 0.00238 0.00159

$mids
[1] 5 15 25 35 45
170 3 • Statistiques descriptives univariées

$xname
[1] "Mesures$masse"

$equidist
[1] TRUE

attr(,"class")
[1] "histogram"

Par contre, lorsque vous demandez quatre classes au logicel R à l’aide de la fonction hist et de
l’option breaks=4, vous obtenez un résultat identique au précédent et de ce fait une distribution
groupée en cinq classes. Ainsi il faut savoir que la fonction hist de R peut ne pas construire
exactement le nombre de classes demandées par l’utilisateur.
2) Exécutez la commande suggérée dans l’énoncé de la question :

> hist(Mesures$masse,breaks=c(0,5,10,15,20,50),plot=FALSE)

$breaks
[1] 0 5 10 15 20 50

$counts
[1] 82 58 51 23 38

$intensities
[1] 0.06508 0.04603 0.04048 0.01825 0.00503

$density
[1] 0.06508 0.04603 0.04048 0.01825 0.00503

$mids
[1] 2.5 7.5 12.5 17.5 35.0

$xname
[1] "Mesures$masse"

$equidist
[1] FALSE

attr(,"class")
[1] "histogram"

Vous constatez que les limites des classes sont conformes à celles attendues.
Solution des exercices 171

3)

> brk <- c(0,5,10,15,20,50)


> table(cut(Mesures$masse,brk))

(0,5] (5,10] (10,15] (15,20] (20,50]


82 58 51 23 38

La fonction cut construit un vecteur dont les éléments sont les classes auxquelles les données
initiales appartiennent.
La fonction head permet d’avoir un aperçu des six premiers éléments de ce vecteur :

> head(cut(Mesures$masse,brk))

[1] (20,50] (20,50] (20,50] (20,50] (20,50] (20,50]


Levels: (0,5] (5,10] (10,15] (15,20] (20,50]

L’instruction suivante permet de transformer le résultat de la fonction table en un tableau de


données qu’il sera possible de réutiliser par la suite :

> data.frame(table(cut(Mesures$masse,brk)))

[1] (20,50] (20,50] (20,50] (20,50] (20,50] (20,50]


Levels: (0,5] (5,10] (10,15] (15,20] (20,50]

4) Pour télécharger la bibliothèque Hmisc, il est possible d’utiliser le menu packages ou la


© Dunod – La photocopie non autorisée est un délit.

commande install.packages("Hmisc"). Cette opération n’est à réaliser qu’une fois par


ordinateur. Pour accéder aux fonctions de la bibliothèque, il faut taper library(Hmisc). Il faut
le faire à chaque utilisation de R.

> brk <- c(0,5,10,15,20,50)


> res <- cut2(Mesures$masse, brk)
> head(res)

[1] [20,50] [20,50] [20,50] [20,50] [20,50] [20,50]


Levels: [ 0, 5) [ 5,10) [10,15) [15,20) [20,50]

Les instructions précédentes permettent donc d’obtenir la distribution groupée recherchée. Cal-
culez maintenant l’effectif de chaque classe à l’aide de la ligne de commande suivante :
172 3 • Statistiques descriptives univariées

> table(res)

res
[0,5) [5,10) [10,15) [15,20) [20,50]
80 60 50 23 39

L’option g=10 permet de constituer 10 groupes d’effectifs équilibrés :

> table(cut2(Mesures$masse, g=10))

[1.0,3.3) [3.3,4.2) [4.2,4.9) [4.9,6.0) [6.0,8.6)


26 27 24 24 25
[8.6,11.3) [11.3,13.6) [13.6,16.9) [16.9,23.9) [23.9,49.2]
26 26 24 25 25

L’option m=50 permet de constituer des groupes d’effectifs de l’ordre de 50 :

> table(cut2(Mesures$masse, m=50))

[1.0,4.2) [4.2,6.0) [6.0,11.3) [11.3,16.9) [16.9,49.2]


53 48 51 50 50

Exercice 3.3
1) En tapant les deux lignes de commande suivantes :

> library(BioStatR)
> head(Mesures$masse)

voici le résultat que vous obtenez :

[1] 28.6 20.6 29.2 32.0 24.5 29.0

En tapant la ligne de commande suivante :

> head(masse)

vous obtenez :

Erreur dans head(masse) : objet ’masse’ introuvable


Solution des exercices 173

La variable masse du tableau de données Mesures n’est pas directement accessible : il faut
indiquer à R où la trouver.
2)

> attach(Mesures)
> head(masse)

[1] 28.6 20.6 29.2 32.0 24.5 29.0

La fonction attach a indiqué à R de rechercher les objets qu’il ne trouvait pas en mémoire
parmi les variables du tableau de données Mesures.

> detach(Mesures)
> head(masse)

Erreur dans head(masse) : objet ’masse’ introuvable

La fonction detach a indiqué à R d’arrêter de rechercher les objets qu’il ne trouvait pas en
mémoire parmi les variables du tableau de données Mesures. Si un objet a été attaché k fois, il
faudra le détacher k fois.

Exercice 3.4
1) Pour afficher les six premières lignes de ce jeu de données, il vous suffit de taper la ligne de
commande suivante :
© Dunod – La photocopie non autorisée est un délit.

> head(Europe)

Pays Duree
1 Allemagne 41.7
2 Autriche 44.1
3 Belgique 41.0
4 Chypre 41.8
5 Danemark 40.5
6 Espagne 42.2

2) Pour répondre à cette question, tapez la ligne de commande suivante :

> str(Europe)
174 3 • Statistiques descriptives univariées

’data.frame’: 25 obs. of 2 variables:


$ Pays : Factor w/ 25 levels "Allemagne","Autriche",..: 1 2 3 4 5...
$ Duree: num 41.7 44.1 41 41.8 40.5 42.2 41.5 40.5 41 44.1 ...

Ce jeu de données est constitué de deux variables :


– la variable Pays qui est un facteur, donc une variable qualitative,
– et la variable Duree qui est numérique, donc une variable quantitative continue.
Ces deux variables ont été mesurées sur 25 pays européens. Les 25 pays européens représentent
ici les unités statistiques.
3) La classe de ce jeu de données est un data.frame. Vous avez obtenu cette information en
tapant la ligne de commande suivante :

> class(Europe)

[1] "data.frame"

Ce jeu de données est un tableau de 25 lignes et de 2 colonnes. Vous obtenez cette information
en tapant la ligne de commande suivante :

> dim(Europe)

[1] 25 2

4) Vous allez pouvoir répondre à cette question en tapant la ligne de commande suivante :

> summary(Europe$Duree)

Min. 1st Qu. Median Mean 3rd Qu. Max.


39.8 41.0 41.5 41.7 42.5 44.1

– La moyenne est égale à 41,7 heures.


– La valeur minimale est égale à 39,8 heures.
– La valeur maximale est égale à 44,1 heures.
– La médiane est égale à 41,5 heures.
Pour la ou les classes modales, vous pouvez faire comme dans les rappels de cours :
– soit regarder directement sur l’histogramme,
– soit à partir des résultats numériques qui ont permis de construire l’histogramme.
Solution des exercices 175

Première méthode : à partir de l’histogramme. Construisez l’histogramme en tapant la ligne


de commande suivante :

> histo<-hist(Europe$Duree,xlab="Durée en heures",ylab="Nombre de pays",


+ main="Histogramme de la variable Duree")

Vous obtenez le résultat suivant :


Duree

Figure 3.24
© Dunod – La photocopie non autorisée est un délit.

En regardant l’histogramme, vous constatez qu’avec ce groupement par classes automatique que
R fait, vous obtenez deux classes modales qui sont : ]40; 41] et ]41; 42]. Vous en déduisez que la
distribution de la variable Duree est bimodale.
Seconde méthode : à partir des résultats numériques de l’histogramme. Vous avez besoin
que R vous donne les résultats et que vous les stockiez. Pour cela, vous tapez les lignes de
commande suivantes, en spécifiant que vous ne voulez que la première ligne de la sortie de
l’histogramme :

> histo<-hist(Europe$Duree)
> classe<-histo$breaks
> classe

[1] 39 40 41 42 43 44 45
176 3 • Statistiques descriptives univariées

> which(histo$density==max(histo$density))

[1] 2 3

Donc, il y a deux classes modales qui sont : ]40; 41] et ]41; 42]. La distribution de la variable
Duree est donc bimodale.
5)

> sd(Europe$Duree)

[1] 1.113358

L’écart-type corrigé pour la variable Duree est égal à 1,11 heure.

> cvar(Europe$Duree)

[1] 2.669668

Le coefficient de variation pour la variable Duree est environ égal à 2,67 %.


Remarque : ce coefficient est sans unité et exprimé en pour cent !

> diff(range(Europe$Duree))

[1] 4.3

L’étendue pour la variable Duree est égale à 4,3 heures.


6) Pour tracer la boîte à moustaches de la variable Duree avec le label demandé, voici la ligne
de commande à taper :

> boxplot(Europe$Duree,ylab="Durée en heures")

Il faut représenter la moyenne, qui n’est pas mentionnée par défaut. Pour cela, tapez la ligne de
commande suivante :

> points(1,mean(Europe$Duree),pch=1)
Solution des exercices 177

Remarque :
1. Le 1 dans la ligne de commande ci-dessus indique la valeur de l’abscisse où R doit se
positionner.
2. pch est une option graphique qui définit le symbole qui représente graphiquement le
paramètre que vous souhaitez voir sur le graphique.

Figure 3.25

Notez que R ne met pas de titre par défaut sur les boîtes à moustaches, alors que sur les
histogrammes, un titre par défaut est toujours mentionné, même si celui-ci est en anglais !

7) Les lignes de commande pour sauvegarder la boîte à moustaches au format .pdf sont les
suivantes :

> pdf(file="boxplot.pdf")
> boxplot(Europe$Duree,ylab="Durée en heures")
> points(1,mean(Europe$Duree),pch=1)
> dev.off()

windows
2
178 3 • Statistiques descriptives univariées

Remarque :
1. Cette dernière ligne de sortie vous indique que vous êtes retourné dans la fenêtre
graphique de R qui porte le numéro 2. Il ne faut surtout pas oublier d’exécuter la
commande dev.off() ! En effet, la commande pdf(file="boxplot.pdf") redirige
l’affiche des graphiques vers le fichier boxplot.pdf tant que vous n’indiquez pas à
R de revenir à l’affichage par défaut dans une fenêtre graphique classique. Pour cette
même raison, le fichier boxplot.pdf ne sera complété et donc lisible qu’après avoir
exécuté la commande dev.off().
2. Il faut absolument taper dev.off() sinon plus aucun graphique ne sera affiché. Si
vous rencontrez ce problème, essayez d’exécuter cette commande plusieurs fois de
suite.

Les lignes de commande pour sauvegarder la boîte à moustaches au format .ps sont les
suivantes :

> postscript(file="boxplot.ps")
> boxplot(Europe$Duree,ylab="Durée en heures")
> points(1,mean(Europe$Duree),pch=1)
> dev.off()

windows
2

Là encore, il ne faut surtout pas oublier d’exécuter la commande dev.off() !

SOLUTION DU PROBLÈME

Problème 3.1
1)

> Femmes<-c(105,110,112,112,118,119,120,120,125,126,127,128,130,132,133,134,
+ 135,138,138,138,138,142,145,148,148,150,151,154,154,158)
> Femmes
Solution du problème 179

[1] 105 110 112 112 118 119 120 120 125 126 127 128 130 132 133 134 135
[18] 138 138 138 138 142 145 148 148 150 151 154 154 158

> Hommes<-c(141,144,146,148,149,150,150,151,153,153,153,154,155,156,156,160,
+ 160,160,163,164,164,165,166,168,168,170,172,172,176,179)
> Hommes

[1] 141 144 146 148 149 150 150 151 153 153 153 154 155 156 156 160 160
[18] 160 163 164 164 165 166 168 168 170 172 172 176 179

2) Vous allez commencer par traiter les données sur les femmes :

> histo.fem<-hist(Femmes,breaks=c(104,114,124,134,144,154,164,174,184))
> effectif.fem<-histo.fem$counts
> effectif.fem

[1] 4 4 8 6 7 1 0 0

Remarque : vous pouvez vérifier que vous n’avez pas perdu de données en tapant la ligne
de commande suivante :

> sum(effectif.fem)

qui vous renvoie l’effectif de l’échantillon des femmes :

[1] 30
© Dunod – La photocopie non autorisée est un délit.

Remarque : la première ligne de commande :

> histo.fem<-hist(Femmes,breaks=c(104,114,124,134,144,154,164,174,
+ 184))

vous donne directement le tracé de l’histogramme qui vous servira pour la question
suivante.

> frequence.fem<-effectif.fem/sum(effectif.fem)
> print(frequence.fem,digits=3)
180 3 • Statistiques descriptives univariées

[1] 0.1333 0.1333 0.2667 0.2000 0.2333 0.0333 0.0000 0.0000

Donc le tableau des effectifs et des fréquences pour les femmes se présente de la façon suivante :

Classe [104; 114] ]114; 124] ]124; 134] ]134; 144]


Effectif 4 4 8 6
Fréquence 0, 133 0, 133 0, 267 0, 200
Classe ]144; 154] ]154; 164] ]164; 174] ]174; 184]
Effectif 7 1 0 0
Fréquence 0, 233 0, 033 0 0

Vous terminerez par le traitement des données sur les hommes. Les commandes sont les mêmes,
il suffit simplement de remplacer femmes par hommes.

> histo.hom<-hist(Hommes,breaks=c(104,114,124,134,144,154,164,174,184))
> effectif.hom<-histo.hom$counts
> effectif.hom

[1] 0 0 0 2 10 9 7 2

Remarque : la première ligne de commande :

> histo.hom<-hist(Hommes,breaks=c(104,114,124,134,144,154,164,174,184)

vous donne directement le tracé de l’histogramme qui vous servira pour la question
suivante.

> frequence.hom<-effectif.hom/sum(effectif.hom)
> print(frequence.hom,digits=3)

[1] 0.0000 0.0000 0.0000 0.0667 0.3333 0.3000 0.2333 0.0667


Solution du problème 181

Donc le tableau des effectifs et des fréquences pour les hommes se présente de la façon suivante :

Classe [104; 114] ]114; 124] ]124; 134] ]134; 144]


Effectif 0 0 0 2
Fréquence 0, 0000 0, 0000 0, 0000 0, 0667
Classe ]144; 154] ]154; 164] ]164; 174] ]174; 184]
Effectif 10 9 7 2
Fréquence 0, 3333 0, 3000 0, 2333 0, 0667

3) La représentation graphique adaptée est l’histogramme pour les deux distributions groupées
suivant la répartition proposée à la question 2).

> histo<-hist(Femmes,breaks=c(104,114,124,134,144,154,164,174,184),
+ main="Histogramme de la variable taux d’hémoglobine pour les Femmes",
+ xlab="Taux d’hémoglobine",ylab="Effectif")

Histogramme de la variable taux d’hémoglobine pour les Femmes


8
6
Effectif
© Dunod – La photocopie non autorisée est un délit.

4
2
0

120 140 160 180

Taux d'hémoglobine

Figure 3.26
182 3 • Statistiques descriptives univariées

> histo<-hist(Hommes,breaks=c(104,114,124,134,144,154,164,174,184),
+ main="Histogramme de la variable taux d’hémoglobine pour les Hommes",
+ xlab="Taux d’hémoglobine",ylab="Effectif")

Histogramme de la variable taux d’hémoglobine pour les Hommes


10
8
6
Effectif

4
2
0

120 140 160 180

Taux d'hémoglobine

Figure 3.27

Il est possible de représenter ces deux histogrammes sur le même graphique en utilisant la
fonction histogram de la bibliothèque lattice. Vous devez commencer par créer un tableau
de données formé de deux colonnes, la première contenant les taux d’hémoglobine, la seconde
contenant le sexe de l’individu :

> library(lattice)
> Ensemble.df <- make.groups(Femmes,Hommes)
> colnames(Ensemble.df) <- c("Taux","Sexe")

Deux dispositions différentes des deux histogrammes sont possibles :

> histogram(~Taux|Sexe,xlab="Taux d’hémoglobine",data=Ensemble.df,


+ breaks=c(104,114,124,134,144,154,164,174,184),layout=c(1,2))
Solution du problème 183

Figure 3.28

> histogram(~Taux|Sexe,xlab="Taux d’hémoglobine",data=Ensemble.df,


+ breaks=c(104,114,124,134,144,154,164,174,184))
© Dunod – La photocopie non autorisée est un délit.

Figure 3.29
184 3 • Statistiques descriptives univariées

4) Pour calculer la moyenne de l’ensemble des données, il faut d’abord créer un fichier qui
rassemble à la fois les données sur les femmes et les données sur les hommes. Pour cela, tapez
la ligne de commande suivante :

> Ensemble<-c(Femmes,Hommes)
> Ensemble

[1] 105 110 112 112 118 119 120 120 125 126 127 128 130 132 133 134 135
[18] 138 138 138 138 142 145 148 148 150 151 154 154 158 141 144 146 148
[35] 149 150 150 151 153 153 153 154 155 156 156 160 160 160 163 164 164
[52] 165 166 168 168 170 172 172 176 179

Puis maintenant, vous pouvez calculer la moyenne, en tapant la ligne de commande suivante :

> mean(Ensemble)

[1] 145.9

Pour calculer la moyenne sur les données des femmes, tapez la ligne de commande suivante :

> mean(Femmes)

[1] 132.9333

Pour calculer la moyenne sur les données des hommes, tapez la ligne de commande suivante :

> mean(Hommes)

[1] 158.8667

5) Pour calculer la moyenne sur l’ensemble des données, c’est-à-dire les données des femmes et
des hommes après le groupement en classes, tapez la ligne de commande suivante :

> histo.ens<-hist(Ensemble,breaks=c(104,114,124,134,144,154,164,174,184))
> sum(histo.ens$counts*histo.ens$mids)/length(Ensemble)

[1] 145.3333
Solution du problème 185

Pour calculer la moyenne sur les données des femmes après le groupement en classes, tapez la
ligne de commande suivante :

> sum(histo.fem$counts*histo.fem$mids)/length(Femmes)

[1] 132.6667

Pour calculer la moyenne sur les données des hommes après le groupement en classes, tapez la
ligne de commande suivante :

> sum(histo.hom$counts*histo.hom$mids)/length(Hommes)

[1] 158

6) Pour calculer la médiane sur l’ensemble des données, tapez la ligne de commande suivante :

> quantile(Ensemble,0.50,type=6)

50%
149.5

Pour calculer la médiane sur les données des femmes, tapez la ligne de commande suivante :

> quantile(Femmes,0.50,type=6)
© Dunod – La photocopie non autorisée est un délit.

50%
133.5

Pour calculer la médiane sur les données des hommes, tapez la ligne de commande suivante :

> quantile(Hommes,0.50,type=6)

50%
158

Remarque : vous auriez pu utiliser la fonction median qui vous aurait donné les mêmes
résultats.
186 3 • Statistiques descriptives univariées

7) Pour calculer l’écart interquartile sur l’ensemble des données, vous tapez la ligne de com-
mande suivante :

> IQR(Ensemble,type=6)

[1] 26.25

Pour calculer l’écart interquartile sur les données des femmes, vous tapez la ligne de commande
suivante :

> IQR(Femmes,type=6)

[1] 25.75

Pour calculer l’écart interquartile sur les données des hommes, vous tapez la ligne de commande
suivante :

> IQR(Hommes,type=6)

[1] 15.75

8) Pour calculer la variance sur l’ensemble des données, vous tapez la ligne de commande
suivante :

> var(Ensemble)*(length(Ensemble)-1)/length(Ensemble)

[1] 315.3567

Pour calculer la variance sur les données des femmes, vous tapez la ligne de commande suivante :

> var(Femmes)*(length(Femmes)-1)/length(Femmes)

[1] 201.2622

Pour calculer la variance sur les données des hommes, vous tapez la ligne de commande
suivante :

> var(Hommes)*(length(Hommes)-1)/length(Hommes)
Solution du problème 187

[1] 93.18222

Pour calculer l’écart-type corrigé sur l’ensemble des données, tapez la ligne de commande
suivante :

> sd(Ensemble)*sqrt(length(Ensemble)-1)length(Ensemble)

[1] 17.75828

Pour calculer l’écart-type corrigé sur les données des femmes, tapez la ligne de commande
suivante :

> sd(Femmes)*sqrt(length(Femmes)-1)length(Femmes)

[1] 14.18669

Pour calculer l’écart-type corrigé sur les données des hommes, tapez la ligne de commande
suivante :

> sd(Hommes)*sqrt(length(Hommes)-1)length(Hommes)

[1] 9.653094

9) Pour calculer les caractéristiques de forme de Fisher pour la distribution des femmes, tapez
les lignes de commande suivantes après avoir mis en mémoire la bibliothèque e1071.

> skewness(Femmes,type=1)
© Dunod – La photocopie non autorisée est un délit.

[1] -0.09996127

et :

> kurtosis(Femmes,type=1)

[1] -0.9140576

Comme le coefficient d’asymétrie (-0,09996127) est strictement négatif, la distribution est étalée
vers la gauche. Comme le coefficient d’aplatissement (-0,9140576) est strictement négatif, la
distribution est plus aplatie que celle d’une loi normale réduite.
Chapitre 4

Lois de probabilités usuelles

Le calcul des probabilités est appuyé sur cette supposition, que toutes les combinaisons
différentes d’un même effet sont également possibles. 

De Jean le Rond d’Alembert (1717-1783).

Objectifs de ce chapitre
➤ connaître les principales lois discrètes qui sont nécessaires soit pour modéliser des phéno-
mènes naturels, soit pour réaliser des tests
➤ maîtriser les propriétés essentielles de la loi normale
➤ se familiariser avec les principales lois continues qui sont nécessaires soit pour construire
des intervalles de confiance soit pour réaliser des tests
➤ présenter les approximations de lois par d’autres lois qui peuvent être utiles lors de calculs
fastidieux
➤ présenter les commandes sous R pour calculer, les quantiles, les densités de probabilité
dans le cas discret, les densités et les fonctions de répartition dans le cas continu

Remarque : les variables aléatoires sont notées avec des lettres majuscules et les quanti-
tés déterministes avec des lettres minuscules.
4.1 Variable aléatoire - Variable aléatoire discrète - Variable aléatoire continue 189

4.1 VARIABLE ALÉATOIRE - VARIABLE ALÉATOIRE DISCRÈTE -


VARIABLE ALÉATOIRE CONTINUE
4.1.1 Variable aléatoire

Définition 4.1 Soit (V, F , P) un espace probabilisé1 . Une variable aléatoire réelle (v.a.r.) est
une application de V dans R ayant la propriété suivante : pour tout intervalle I de R, l’ensemble
X −1 (I ) = {v ∈ V|X (v) ∈ I } est un événement de F.

4.1.2 Fonction de répartition


La fonction de répartition est un objet mathématique indispensable pour manipuler une variable
aléatoire réelle.
Définition 4.2 Soit X une v.a.r. définie sur (V, F , P). La fonction de répartition de la v.a.r.
X est la fonction numérique réelle FX définie par :
∀x ∈ R, FX (x) = P (X  x) .

Remarque :
1. ∀x ∈ R, FX (x) ∈ [0; 1],
2. FX est une fonction croissante sur R,
3. lim FX (x) = 0 et lim FX (x) = 1 et FX est continue à droite et admet une limite
x→−∞ x→+∞
à gauche en tout point de R,
4. pour tous réels a et b, P (a < X  b) = FX (b) − FX (a).
© Dunod – La photocopie non autorisée est un délit.

4.1.3 Variable aléatoire discrète

Définition 4.3 Soit X une v.a.r. définie sur (V, F , P). Elle est appelée variable aléatoire dis-
crète (v.a.d.) X si l’ensemble de ses valeurs X (V) est au plus dénombrable1 .
Définition 4.4 Soit X une v.a.r. définie sur (V, F , P). La loi de la variable aléatoire X est la
donnée d’une suite numérique (P(X = k) = p X (k))k∈X (V) telle que :
1. ∀k ∈ X (V), p X (k)  0,

2. p X (k) = 1,
k∈X (V)

1. Cette notion ne sera pas rappelée dans ce livre. Vous pourrez consulter l’ouvrage Mathématiques L1/L2 : Statistique
et Probabilités en 30 fiches de D. Fredon, M. Maumy-Bertrand et F. Bertrand, Dunod, 2009, pour de plus amples
détails.
190 4 • Lois de probabilités usuelles

 
3. pour tout réel x, P (X  x) = p X (k) où désigne la sommation sur l’ensemble des
kx kx
k ∈ X (V) inférieurs ou égaux à x.

Remarque : la fonction de répartition F


 X de la variable aléatoire
 discrète X s’exprime
de la manière suivante : P (X  x) = P(X = k) où désigne la sommation sur
kx kx
l’ensemble des k ∈ X (V) inférieurs ou égaux à x.

4.1.4 Variable aléatoire réelle

Définition 4.5 Soit X une v.a.r. définie sur (V, F, P). Elle est appelée variable aléatoire conti-
nue s’il existe une fonction f X définie sur R telle que :
1. f X (t)  0 pour tout t ∈ R,
2. l’ensemble des points de discontinuité de f X est fini et ces discontinuités sont de première
espèce (i.e. la limite à gauche et à droite en chaque point existe),
3. pour tout x réel la fonction de répartition FX de la v.a.r. X est donnée par :
 x
FX (x) = f X (t) dt.
−∞

La fonction f X est appelée densité de la loi de probabilité de la v.a.r. X ou encore une densité
de probabilité de X.

4.2 VARIABLES ALÉATOIRES DISCRÈTES : CAS FINI


4.2.1 Loi de Bernoulli de paramètre p – B(1; p)

Définition 4.6 Soit p ∈ [0; 1]. Une variable aléatoire X est dite suivre la loi de Bernoulli de
paramètre p, notée B(1; p), si la variable aléatoire X prend la valeur 1 avec la probabilité p
et la valeur 0 avec la probabilité 1 − p = q.

Remarque :
1. Le terme de variable aléatoire de Bernoulli est synonyme de celui de variable aléatoire
indicatrice qui indique la réalisation éventuelle d’un événement de probabilité p.
2. Une variable de Bernoulli est définie par les deux valeurs 0 et 1 et celles-là seulement.
Toute autre paire de valeurs ne permet plus l’appellation de variable de Bernoulli.
3. La figure 4.1 montre le graphe de la densité de probabilité pour différentes valeurs du
paramètre p.
4.2 Variables aléatoires discrètes : cas fini 191

Proposition 4.7 L’espérance et la variance d’une variable aléatoire X suivant la loi de Ber-
noulli de paramètre p sont égales respectivement à :
E(X ) = p et Var (X ) = p(1 − p) = pq où q = 1 − p.

4.2.2 Loi uniforme discrète

Définition 4.8 Soit n ∈ N∗ . Une variable aléatoire X est dite suivre une loi uniforme discrète
si la variable aléatoire X prend n valeurs possibles k1 , k2 , . . . , kn avec la probabilité égale à
1/n pour n’importe quelle valeur ki . En particulier une variable aléatoire X est dite suivre la
loi uniforme discrète sur [[a; b]], où a, b ∈ Z et a  b, si la variable aléatoire X prend comme
valeurs possibles {a, a + 1, . . . , b} avec la probabilité égale à 1/(b − a + 1) pour n’importe
laquelle de ces valeurs.

Remarque :
1. La loi uniforme discrète sur [[1; n]] peut s’appliquer à toute situation aléatoire à n
issues équiprobables dès que celles-ci peuvent être associées aux nombres 1, 2, . . . , n.
L’espérance et la variance sont alors égales respectivement à :
n+1 n2 − 1
E(X ) = et Var (X ) = ·
2 12
2. La figure 4.2 montre le graphe de la densité de probabilité de la loi uniforme discrète
sur [[1; n]] pour différentes valeurs du paramètre n.
© Dunod – La photocopie non autorisée est un délit.

Figure 4.1 Densités de probabilité Figure 4.2 Densités de probabilité

Proposition 4.9 L’espérance et la variance d’une variable aléatoire X suivant la loi uniforme
discrète sur [[a; b]] sont égales respectivement à :
a+b (b − a)(b − a + 2)
E(X ) = et Var (X ) = ·
2 12
192 4 • Lois de probabilités usuelles

4.2.3 Loi binomiale de paramètres n et p – B(n; p)

Définition 4.10 Soient n un entier naturel non nul et p ∈ [0; 1]. Une variable aléatoire X est
dite suivre la loi binomiale de paramètres  p, notée B(n; p), si la variable aléatoire X
n et
n k
prend la valeur k avec la probabilité égale à p (1 − p)n−k . qest le nombre égal à 1 − p.
k
Remarque :
1. Pour n = 1, ce n’est rien d’autre que la loi de Bernoulli B(1; p).
2. La loi binomiale modélise toutes les situations qui s’apparentent à un tirage avec
remise.
3. La loi binomiale sera utilisée dans les approximations.
4. La figure 4.3 montre le graphe de la densité de probabilité pour différentes valeurs du
paramètre n, le paramètre p étant égal à 0,5.
5. La figure 4.4 montre le graphe de la densité de probabilité pour différentes valeurs du
paramètre p, le paramètre n étant égal à 20.

Figure 4.3 Densités de probabilité Figure 4.4 Densités de probabilité

Proposition 4.11 Si X 1 , . . . , X m sont m variables aléatoires mutuellement indépendantes et si,


pour tout entier k ∈ [[1; m]], X k suit
⎛ la loi B(n X⎞ k
; p) (respectivement B(1; p)) alors la variable
 
aléatoire X k suit la loi B ⎝ n X k ; p ⎠ (respectivement B(m; p)). Il en va de même
1km 1km
pour les variables de Bernoulli.

Proposition 4.12 Si la v.a. X suit la loi B(n X ; p) et la v.a. Y la loi B(n Y ; p), et si X et Y sont
indépendantes alors la v.a. (X + Y ) suit la loi B(n X + n Y ; p).
4.2 Variables aléatoires discrètes : cas fini 193

Proposition 4.13 L’espérance et la variance d’une variable aléatoire X suivant la loi binomiale
de paramètres n et p sont égales respectivement à :
E(X ) = np et Var (X ) = np(1 − p) = npq.

4.2.4 Loi hypergéométrique de paramètres N, n, p – H(N; n; p)

Définition 4.14 Soient N et n deux entiers naturels non nuls tels que n  N et p ∈ [0; 1]
tel que N p soit entier. Une variable aléatoire X est dite suivre la loi hypergéométrique de
paramètres N, n et p, notée H(N
 ; n; p), si la variable aléatoire X prend la valeur k avec la
Np N −N p
k
probabilité égale à  N n−k
 ·
n
Remarque :
1. La loi hypergéométrique modélise toutes les situations qui s’apparentent à un tirage
sans remise.
2. La loi hypergéométrique prend les valeurs entières comprises entre max(0, n − N + N p)
et min(N p, n).
3. La loi hypergéométrique permet d’estimer des tailles de population et en particulier
elle intervient dans les processus de capture-recapture.
4. La figure 4.5 montre le graphe de la densité de probabilité pour différentes valeurs du
paramètre N , avec n = 10 et p = 0,5.
5. La figure 4.6 montre le graphe de la densité de probabilité pour différentes valeurs du
paramètre n, avec N = 20 et p = 0,5.

Exemple : La méthode de capture-recapture est souvent utilisée lorsque le nombre de


poissons dans un étang doit être connu (estimé) sans pour autant assécher l’étang2 !
© Dunod – La photocopie non autorisée est un délit.

Proposition 4.15 L’espérance et la variance d’une variable aléatoire X suivant la loi hypergéo-
métrique de paramètres N , n, p sont égales respectivement à :
N −n N −n
E(X ) = np et Var (X ) = np(1 − p) = npq , où q = 1 − p.
N −1 N −1
Remarque :
1. L’espérance de la loi hypergéométrique H(N ; n; p) est égale à l’espérance de la loi
binomiale B(n; p).

2. Vous pourrez consulter l’ouvrage Mathématiques L1/L2 : Statistique et Probabilités en 30 fiches de D. Fredon, M.
Maumy-Bertrand et F. Bertrand, Dunod, 2009, et plus particulièrement l’exercice  Capture-recapture  de la fiche
11 pour de plus amples détails sur cette procédure.
194 4 • Lois de probabilités usuelles

Figure 4.5 Densités de probabilité Figure 4.6 Densités de probabilité

2. La variance de la loi hypergéométrique H(N ; n; p) est égale à la variance de la loi


binomiale B(n; p) au facteur multiplicatif NN −n
−1 près. Dans un contexte statistique, ce
facteur s’appelle le facteur d’exhaustivité. Il est toujours inférieur ou égal à 1.

4.3 VARIABLES ALÉATOIRES DISCRÈTES : CAS INFINI


4.3.1 Loi géométrique de paramètre p – G(p)

Définition 4.16 Soit p ∈]0; 1[. Une variable aléatoire X est dite suivre la loi géométrique de
paramètre p, notée G( p), si la variable aléatoire X prend la valeur k  1 avec la probabilité
égale à (1 − p)k−1 p.

Remarque :
1. Cette loi est aussi appelée loi de Pascal.
2. Cette loi sert généralement lorsque vous vous intéressez au temps d’attente du premier
succès, c’est-à-dire au nombre d’essais nécessaires pour obtenir un succès, lors d’une
succession d’expériences aléatoires indépendantes n’ayant que deux issues possibles :
le succès avec une probabilité p et l’échec avec une probabilité 1 − p.
3. La loi géométrique est parfois utilisée pour modéliser des durées de vie. Par exemple,
la loi géométrique est le modèle discret de la mort d’une particule radioactive. La loi
géométrique est la version discrète d’une loi absolument continue : la loi exponentielle
que vous allez rencontrer par la suite dans ce chapitre.
4. La figure 4.7 montre le graphe de la densité de probabilité pour différentes valeurs du
paramètre p.
4.3 Variables aléatoires discrètes : cas infini 195

Proposition 4.17 L’espérance et la variance d’une variable aléatoire X suivant la loi géomé-
trique de paramètre p sont égales respectivement à :

1 1− p
E(X ) = et Var (X ) = ·
p p2

4.3.2 Loi de Poisson de paramètre l – P(l)

Définition 4.18 Soit l > 0. Une variable aléatoire X est dite suivre la loi de Poisson de
paramètre l, notée P(l), si la variable aléatoire X prend la valeur k avec la probabilité égale
lk
à : exp(−l) ·
k!
Remarque :
1. La loi de Poisson est utilisée pour décrire plusieurs types de phénomènes comme le
nombre d’appels reçus par un standard téléphonique pendant une période donnée, etc.
2. La loi de Poisson est encore utilisée lorsque vous étudiez le nombre d’apparitions de
certains phénomènes rares.
3. Cette loi est aussi utilisée dans les approximations. En particulier, la loi binomiale sera
approchée par la loi de Poisson.
4. La figure 4.8 montre le graphe de la densité de probabilité pour différentes valeurs du
paramètre l.

Proposition 4.19 L’espérance et la variance d’une variable aléatoire X suivant la loi de Poisson
de paramètre l sont égales respectivement à :
© Dunod – La photocopie non autorisée est un délit.

E(X ) = l et Var (X ) = l.

Remarque : c’est une loi discrète qui a son espérance égale à sa variance.

Proposition 4.20 Si la v.a. X suit la loi P(l X ) et la v.a. Y la loi P(lY ), et si X et Y sont
indépendantes alors la v.a. (X + Y ) suit la loi P(l X + lY ).
Plus généralement, si X 1 , . . . , X n sont n variables aléatoires mutuellement indépendantes
 et si,
pour tout entier k ∈ [[1; n]], X k suit la loi P(l X k ) alors la variable aléatoire X k suit la
⎛ ⎞ 1kn

loi P ⎝ lXk ⎠ .
1kn
196 4 • Lois de probabilités usuelles

Figure 4.7 Densités de probabilité Figure 4.8 Densités de probabilité

4.4 VARIABLES ALÉATOIRES CONTINUES


4.4.1 La loi normale centrée et réduite – N (0; 1)

Définition 4.21 Une variable aléatoire X à valeurs dans R suit la loi normale centrée et
réduite, notée N (0; 1), si X est une variable continue et admet pour densité de probabilité la
fonction f X suivante :
 2
1 t
f X (t) = √ exp − , pour tout t ∈ R.
2p 2

Proposition 4.22
1. Le graphe de f X a l’allure d’une courbe en cloche assez aplatie. Voir la courbe noire de
la figure 4.9.
2. La fonction de répartition de la loi normale N (0; 1), notée généralement F, est égale à :
 x  2
1 t
F(x) = √ exp − dt, pour tout x ∈ R.
2p −∞ 2

Le graphe de F a l’allure d’une courbe en S assez étalée et √ est symétrique par rapport au
point (0; 1/2) et la pente de la tangente en ce point est 1/ 2p. Voir la courbe noire de la
figure 4.10.
3. Soit X une variable aléatoire qui suit la loi normale N (0; 1). Son espérance est égale à
E(X ) = 0 et sa variance à Var (X ) = 1. C’est la raison pour laquelle cette loi est appelée
centrée et réduite et est notée N (0; 1).
4. En particulier, le coefficient d’asymétrie de la loi normale N (0; 1) est nul et le coefficient
d’aplatissement de Pearson de la loi normale N (0; 1) est égal à 3.
4.4 Variables aléatoires continues 197

Figure 4.9 Densités Figure 4.10 Fonctions de répartition

4.4.2 La loi normale de paramètres m et s – N (m; s)

Définition 4.23 Soient m ∈ R et s > 0. Une variable aléatoire X à valeurs dans R suit la loi
normale de paramètres m et s, notée N (m; s), si X est une variable continue et admet pour
densité de probabilité la fonction f m,s suivante :
 2 
1 1 t −m
f m,s (t) = √ exp − , pour tout t ∈ R.
2ps2 2 s

Il est à noter que la loi normale est notée dans cet ouvrage N (m; s) et non N (m; s2 ). En effet,
en statistique, il est préférable d’avoir des quantités comparables et par conséquent d’utiliser
l’écart-type s et non la variance s2 . Ainsi les deux paramètres sont exprimés dans la même
unité. Il faudra donc que vous fassiez attention à la notation utilisée dans les autres livres et
dans les logiciels que vous utiliserez pour faire vos analyses. Sachez que R utilise aussi la
même convention, à savoir c’est l’écart-type qu’il faut renseigner et non la variance.

Figure 4.11 Densités Figure 4.12 Fonctions de répartition


198 4 • Lois de probabilités usuelles

Proposition 4.24
1. Le graphe de f m,s a l’allure d’une courbe en cloche symétrique par rapport à x = m, très
pointue pour s petit, très aplatie pour s grand. Voir la figure 4.9 pour s = 1 et différentes
valeurs de m et la figure 4.11 pour m = 0 et différentes valeurs de s.
2. La fonction de densité de la loi normale N (m; s) vérifie :

f m,s (m + u) = f m,s (m − u).

3. La fonction de répartition de la loi normale N (m; s) est égale à :



x −m
Fm,s (x) = P(X  x) = F ·
s
Son graphe a l’allure d’une courbe en S, très pentue pour s petit, très étirée pour s grand.
Voir la figure 4.10 pour s = 1 et différentes valeurs de m et la figure 4.12 pour m = 0 et
différentes valeurs de s.
4. La fonction de répartition de la loi normale N (m; s) vérifie :

Fm,s (m − x) = 1 − Fm,s (m + x).

Remarque : cette propriété est mise à profit dans les tables de la loi normale centrée et
réduite où elle permet de ne mentionner que les valeurs de FX correspondant aux valeurs
positives de x.

5. Soit X une variable aléatoire qui suit la loi normale N (m; s). L’espérance et la variance
sont égales respectivement à :

E(X ) = m et Var (X ) = s2 .

6. Si X 1 et X 2 sont deux variables aléatoires indépendantes de lois respectives N (m1 ; s1 ) et


N (m2 ; s2 ), avec m1 , m2 des réels et s1 > 0, s2 > 0, alors la somme X = X 1 + X 2 suit la
loi normale N (m; s) où m = m1 + m2 , s > 0 et s2 = s21 + s22 .

4.4.3 La loi du Khi-deux à p degrés de liberté – x2 (p)

Définition 4.25 Soit p un entier positif. Une variable aléatoire X suit la loi de Pearson ou loi
du Khi-deux à p degrés de liberté, notée x2 ( p), si X est une variable continue et admet pour
densité de probabilité la fonction f X suivante :
⎧  t p
⎨ 1
p  
p exp − t 2 −1 pour t  0
f X (t) = 2 G 2
2 2

0 pour t < 0
4.4 Variables aléatoires continues 199

 +∞
où : G(r ) = t r−1 exp(−t) dt est la fonction gamma d’Euler.
0

Remarque : la figure 4.13 montre le graphe de la densité de probabilité f X pour diffé-


rentes valeurs du paramètre p.

Figure 4.13 Densités Figure 4.14 Fonctions de répartition

Remarque : la fonction de répartition ne s’explicite pas. Cependant, il existe des tables


de la fonction de répartition ou une fonction ad hoc dans les logiciels statistiques. La
figure 4.14 montre le graphe de la fonction de répartition pour différentes valeurs du
paramètre p.

Proposition 4.26
1. Soit X une variable aléatoire qui suit la loi du Khi-deux x2 ( p). L’espérance et la variance
sont égales respectivement à :
© Dunod – La photocopie non autorisée est un délit.

E(X ) = p et Var (X ) = 2 p.

2. Si la v.a. X 1 suit la loi du Khi-deux x2 (n 1 ) et la v.a. X 2 suit indépendamment de X 1 la loi


du Khi-deux x2 (n 2 ), alors la v.a. (X 1 + X 2 ) suit la loi du Khi-deux x2 (n 1 + n 2 ).
3. Plus généralement, si X 1 , . . . , X n est une suite de v.a. 
indépendantes et identiquement
n
distribuées qui suit la loi normale N (0; 1), alors la v.a. i=1 X i2 suit la loi du Khi-deux
x2 (n).

4.4.4 La loi de Student à n degrés de liberté – t(n)

Définition 4.27 Soit n un entier positif. Une variable aléatoire X suit la loi de Student à n
degrés de liberté, notée t(n), si X est une variable continue et admet pour densité de probabilité
200 4 • Lois de probabilités usuelles

la fonction f X suivante :

n+1
G
1 2 1
f X (t) = √ n   n+1 , pour t ∈ R,
np G t2 2
2 1+
n

où la fonction G a déjà été définie (cf. page précédente).

Remarque :
1. Ce résultat est dû à W.S. Gosset en 1908, qui a pris le pseudonyme de Student.
2. La figure 4.15 montre le graphe de la densité de probabilité f X pour différentes valeurs
du paramètre n.

Remarque : la fonction de répartition ne s’explicite pas. Cependant, il existe des tables


de la fonction de répartition ou une fonction ad hoc dans les logiciels statistiques. La
figure 4.16 montre le graphe de la fonction de répartition pour différentes valeurs du
paramètre n.

Proposition 4.28
1. Soit X une variable aléatoire qui suit la loi de Student t(n). L’espérance et la variance
sont égales respectivement à :

si n  2 E(X ) = 0,
n
si n  3 Var (X ) = ·
n−2

Figure 4.15 Densités Figure 4.16 Fonctions de répartition


4.4 Variables aléatoires continues 201

Remarque :
1. Le fait que l’espérance mathématique est nulle, lorsque n est supérieur ou égal à 2,
est évident puisque la densité de probabilité f X est une fonction paire.
2. La variance n’est définie que si n est supérieur ou égal à 3. Elle vaut 3 lorsque n = 3
et tend vers 1 quand n → +∞.

2. Pour être plus précis, l’allure de la loi de Student est similaire à celle de la loi normale
centrée et réduite avec un étalement un peu plus fort.
3. Soit une v.a. U qui suit la loi normale N (0; 1) et X une v.a. qui suit indépendamment de
U la loi du Khi-deux x2 (n). Alors la variable aléatoire Tn = √U suit la loi de Student
X /n
t(n).
4. Pour n = 1, la loi est la loi de Cauchy. La loi de Cauchy est en fait la loi du rapport de
deux variables qui suivent chacune indépendamment la loi normale N (0; 1).

4.4.5 La loi de Fisher-Snedecor à n et p degrés de liberté – F(n; p)

Définition 4.29 Soient n et p deux entiers positifs. Une variable aléatoire X suit la loi de
Fisher-Snedecor à n et p degrés de liberté, notée F(n; p), si X est une variable continue et
admet pour densité de probabilité la fonction f X suivante :
⎧ n + p

⎪ G  n2 n−2

⎪ n t 2
⎨ n  2  p  n+2 p pour t  0
f X (t) = G G p n .

⎪ 2 2 1+ t

⎪ p

0 pour t < 0

Remarque :
1. Pour faire bref, la loi de Fisher-Snedecor est abrégée en loi de Fisher.
2. Les figures 4.17 et 4.19 montrent le graphe de la densité de probabilité f X pour diffé-
rentes valeurs des paramètres n et p.
202 4 • Lois de probabilités usuelles

Figure 4.17 Densités Figure 4.18 Fonctions de répartition

Figure 4.19 Densités Figure 4.20 Fonctions de répartition

Remarque : la fonction de répartition ne s’explicite pas. Cependant, il existe des tables


de la fonction de répartition ou des fonctions ad hoc dans les logiciels statistiques. Les
figures 4.18 et 4.20 montrent le graphe de la fonction de répartition pour différentes
valeurs des paramètres n et p.

Proposition 4.30
1. Soit X une variable aléatoire qui suit la loi de Fisher F(n; p). L’espérance et la variance
sont égales respectivement à :

p
si p  3 E(X ) =
p−2
2 p 2 (n + p − 2)
si p  5 Var (X ) = ·
n( p − 2)2 ( p − 4)
4.4 Variables aléatoires continues 203

2. Soient X et Y étant deux variables aléatoires suivant indépendamment les lois du x2 à n


et p degrés de liberté respectivement. Alors la variable aléatoire YX//np suit la loi de Fisher-
Snedecor à n degrés de liberté au numérateur et p degrés de liberté au dénominateur.

4.4.6 La loi exponentielle de paramètre l – E(l)

Définition 4.31 Soit l > 0. Une variable aléatoire X à valeurs dans [0; +∞[ suit la loi
exponentielle de paramètre l, notée E(l), si X est une variable continue et admet pour densité
de probabilité la fonction f X , représentée à la figure 4.21, suivante :
 −lt
le pour t  0
f X (t) = .
0 pour t < 0

Proposition 4.32
1. La fonction de répartition d’une loi exponentielle E(l) est égale à :

1 − exp (−lx) si x  0
FX (x) = .
0 si x  0
Par exemple, la figure 4.22 montre le graphe de la fonction de répartition de lois exponen-
tielles.

Remarque : il est préférable de travailler avec la fonction de survie qui est définie par :
r (x) = 1 − FX (x) = P (X > x) .

2. Soit X une variable aléatoire qui suit la loi exponentielle E(l). L’espérance et la variance
de X sont égales respectivement à :
1 1
E(X ) = et Var (X ) = 2 ·
l l
© Dunod – La photocopie non autorisée est un délit.

Figure 4.21 Densités Figure 4.22 Fonctions de répartition


204 4 • Lois de probabilités usuelles

4.5 APPROXIMATIONS
4.5.1 Approximation de la loi hypergéométrique par la loi binomiale

Proposition 4.33 Soit E un ensemble de N éléments, dont une proportion p de type A. n tirages
sont effectués sans remise dans E. Soit X N le nombre d’éléments de type A obtenus. La variable
aléatoire X N suit alors la loi hypergéométrique H(N ; n; p). Alors la suite (X N ) N 1 converge
en loi vers une variable aléatoire de loi binomiale B(n; p).

Remarque : ainsi, lorsque le nombre total d’éléments N devient très grand, n et p restant
fixes, effectuer des tirages sans remise revient à effectuer des tirages avec remise.

En pratique : la loi hypergéométrique H(N ; n; p) peut être approchée par la loi binomiale
B(n; p) lorsque N  10n.

4.5.2 Approximation de la loi binomiale par la loi de Poisson

Proposition 4.34 Soit l un nombre réel fixé dans R+ . Soit (X n )n1 une suite de variables
aléatoires de loi binomiale B(n; pn ) telle que lim npn = l.
n→+∞
Alors la suite (X n )n1 converge en loi vers une variable aléatoire de loi de Poisson P(l).

En pratique : la loi binomiale B(n; p) peut être approchée par la loi de Poisson P(np)
lorsque :

⎨ n  30
p  0, 1

np < 15

ou lorsque d’autres conditions précisées dans les énoncés des exercices sont vérifiées.

Remarque : dans certains cas, l’astuce sera d’approcher la loi binomiale B(n; 1 − p) et
non la loi binomiale B(n; p).

4.5.3 Approximation de la loi binomiale par la loi normale

Proposition 4.35 Soit (X n )n1 une suite de variables aléatoires indépendantes de loi de Ber-
n
noulli B(1; p), où p ∈]0; 1[. Sn =
 k=1 X k suit la loi binomiale B(n; p). Alors la suite
−np
√S n
np(1− p)
converge en loi vers une variable aléatoire de loi normale N (0; 1).
n1
4.5 Approximations 205

En
 pratique
√ : la loi binomiale B(n; p) peut être approchée par la loi normale
N np; np(1 − p) lorsque :

⎨ n  30
np  15

np(1 − p) > 5

ou lorsque d’autres conditions données par l’énoncé de l’exercice sont vérifiées.


Remarque : les conditions changent suivant les auteurs.

Correction de continuité
Si la variable aléatoire X suit la loi binomiale B(n; p), alors la variable aléatoire X prend des
valeurs
 entières positives
√  entre 0 et n. Remplacer la loi binomiale B(n; p) par la loi normale
N np; np(1 − p) revient à considérer la variable aléatoire X comme une variable qui prend
donc toutes les valeurs réelles.
L’intervalle [k − 0, 5; k + 0, 5[ est l’ensemble des nombres réels qui s’arrondissent à k, c’est-à-
dire pour k ∈ [[1; n−1]], alors dans ce cas P(X = k) est remplacée par P(k−0, 5  X < k+0, 5).

Remarque : pour que la somme des valeurs approchées des P(X = k), k variant de 0
à n, soit égale à 1, P(X = 0) est alors remplacée par P(X < 0, 5) et P(X = n) par
P(n − 0, 5  X ).

EN RÉSUMÉ

Nom de la distribution Nom sous R Paramètres Valeurs par défaut


Binomiale binom size, prob
© Dunod – La photocopie non autorisée est un délit.

Exponentielle exp 1/mean 1


Fisher f df1, df2
Géométrique geom prob
Hypergéométrique hyper m, n, k
Khi-deux chisq df
Normale norm mean, sd 0, 1
Poisson pois lambda
Student t df
Uniforme unif min, max 0, 1
Commande Description
curve(f(x), from, to) Trace la fonction f de x=from
à x=to.
206 4 • Lois de probabilités usuelles

Pour chacune de ces distributions, vous disposez de quatre commandes préfixées par une des
lettres d, p, q, r et suivi du nom de la distribution :
• dnomdist : il s’agit de la fonction de densité ( f X (x)) pour une distribution de probabilité
continue et de la fonction de probabilité (P[X = k]) pour une distribution de probabilité
discrète,
x
• pnomdist : il s’agit de la fonction de répartition (P[X  x] = −∞ f X (t)dt) pour une

distribution de probabilité continue et de la fonction (P[X  x] = kx P[X = k]) pour
une distribution de probabilité discrète,
• qnomdist : il s’agit de la fonction des quantiles, c’est-à-dire la valeur pour laquelle la
fonction de répartition atteint une certaine probabilité ; dans le cas discret, cette fonction
renvoie le plus petit entier u tel que FX (u)  p où FX est la fonction de répartition de la
distribution considérée,
• rnomdist : génère des réalisations aléatoires indépendantes de la distribution nomdist.

EXERCICES

Exercice 4.1 Les figures de ce chapitre

Cet exercice a un double but : vous faire manipuler à nouveau les lignes de commande qui
réalisent les graphiques et utiliser les fonctions de R qui calculent les densités de probabilité
dans le cas des variables discrètes, les fonctions de densité et les fonctions de répartition dans
le cas des variables continues. Pour représenter des densités, vous pourrez utiliser la fonction
curve. La fonction supply vous sera certainement utile.

1) Reproduisez au mieux la figure 4.3.


2) Reproduisez au mieux la figure 4.5.
3) Reproduisez au mieux la figure 4.14.
4) Reproduisez au mieux la figure 4.15.

Exercice 4.2 Quelques lignes de commande

Le but de cet exercice est de vous faire manipuler les fonctions de R les plus utiles dans le
calcul de probabilités que vous serez amené à effectuer par la suite.
Exercices 207

1) Avant de taper ces lignes de commande avec R, essayez de trouver ce qu’elles renvoient.
2) Ouvrez R et tapez-les. Indiquez ce que R vous retourne à chaque ligne de commande.

> dnorm(0)
> pnorm(2.58)
> qnorm(0.975)
> rnorm(50)
> rnorm(20,mean=10,sd=2)
> x=seq(-5,5,0.1) ;pdf=dnorm(x) ;plot(x,pdf,type="l",main="Densité de la loi
+ normale centrée et réduite")
> library(ggplot2)
> ggplot(data.frame(x=c(-5,5)),aes(x))+stat_function(fun=dnorm)+
+ ggtitle("Densité d’une loi normale centrée et réduite")+ylab("Densité")
> runif(10)
> rt(10,20)

Exercice 4.3 Les micro-ordinateurs

Le but de cet exercice est de mettre en œuvre la loi binomiale et d’utiliser les différentes
lignes de commande de R qui sont associées à cette loi.

D’après le livre de F. Couty, J. Debord et D. Fredon, Mini Manuel de Probabilités et


statistique, Dunod, 2007.

2 % des micro-ordinateurs d’un type donné tombent en panne par mois d’utilisation. Aucun
© Dunod – La photocopie non autorisée est un délit.

ordinateur ne tombe deux fois en panne dans le même mois.


Une entreprise décide d’acquérir 150 micros de ce type.
1) Calculez la probabilité des événements :
– le nombre mensuel de pannes est 5,
– le nombre mensuel de pannes est au plus égal à 3.
2) Déterminez le nombre minimum n tel que la probabilité de l’événement  le nombre de
pannes est au plus n  soit supérieure à 0,99.
208 4 • Lois de probabilités usuelles

Exercice 4.4 Les glycines blanches du Japon

Le but de cet exercice est de mettre en œuvre une fois de plus la loi binomiale et d’utiliser
les différentes lignes de commande de R qui sont associées à cette loi.

Des sachets de graines de glycine blanche du Japon dont la contenance est égale à 10 grammes
sont vendus dans le commerce. Dans un sachet, il y a en moyenne 15 graines de glycine blanche
et chaque graine donne lieu au plus à un pied de glycine blanche. Les glycines blanches ont en
effet une probabilité de germination égale à 0,85.
1) Quel est le nombre minimal de sachets que le jardinier doit acheter pour voir pousser au
moins 200 pieds de glycine blanche avec une probabilité supérieure ou égale à 0,95 ?
2) Le jardinier a un budget de 100 euros pour acheter des graines de glycine blanche. Un sachet
est vendu en moyenne 4,50 euros. Combien de pieds de glycine blanche le jardinier doit-il
s’attendre à voir pousser dans son jardin ?

Exercice 4.5 Les chrysanthèmes

Le but de cet exercice est de mettre en œuvre la loi normale et d’utiliser les différentes lignes
de commande de R qui sont associées à cette loi.

D’après le livre de F. Couty, J. Debord et D. Fredon, Mini Manuel de Probabilités et


statistique, Dunod, 2007.

La longueur des tiges de chrysanthèmes en fleurs coupées intervient dans le classement par
catégorie. Pour simplifier, vous supposerez par la suite que cette longueur sera le seul critère
de classement. Un chrysanthème sera classé en catégorie extra si la longueur de sa tige est
supérieure ou égale à 80 centimètres.
Au 1er décembre, la production d’une certaine serre est évaluée à 6 000 chrysanthèmes pour le
mois. À cette époque, les chrysanthèmes classés en catégorie extra sont payés au producteur
10 euros les dix, et les autres 6 euros les dix seulement.
La qualité de la production ayant été étudiée sur un échantillon de 100 tiges coupées de chrysan-
thèmes, nous en concluons que la longueur des tiges coupées est une variable aléatoire qui suit
la loi normale de moyenne 92 centimètres et d’écart-type 8 centimètres.
1) Quelle est la probabilité pour qu’une fleur soit classée en catégorie extra ?
Du mal à démarrer 209

2) Quelle est l’espérance mathématique du nombre de fleurs qui seront classées en catégorie
extra sur les 6 000 fleurs de la production de décembre ?
3) Quel est le mode du nombre de fleurs qui seront classées en catégorie extra sur les 6 000
fleurs de décembre ?

DU MAL À DÉMARRER

➩ Exercice 4.1 Avant de répondre à l’une des quatre questions, consultez l’aide de
la fonction curve, en tapant help(curve), et remarquez la présence d’une option
add=TRUE qui permet de superposer plusieurs courbes sur un même graphique.
1) Utilisez la fonction dbinom.
2) Utilisez la fonction dhyper.
3) Utilisez la fonction pchisq.
4) Utilisez la fonction dt.

➩ Exercice 4.2
1) Consultez l’aide de chacune des fonctions présentes dans les lignes de commande que
vous devez étudier et dont vous ignorez l’effet.
2) Exécutez les lignes de commande l’une après l’autre.

➩ Exercice 4.3
1) Pensez à une loi binomiale pour modéliser cette situation. Utilisez les fonctions dbinom
© Dunod – La photocopie non autorisée est un délit.

et pbinom pour évaluer numériquement les probabilités que vous devez calculer.
2) Utilisez la fonction qbinom.

➩ Exercice 4.4
1) Utilisez plusieurs fois la fonction qbinom pour trouver le bon n.
2) Quel est le nombre maximal de sachets que le jardinier peut acheter ? Calculez l’espé-
rance de la binomiale associée.

➩ Exercice 4.5
1) Utilisez la fonction pnorm.
2) Montrez que le nombre de fleurs classées extra suit une loi binomiale dont vous
déterminerez les paramètres. Calculez l’espérance de cette loi.
210 4 • Lois de probabilités usuelles

SOLUTION DES EXERCICES

Exercice 4.1 Le vecteur couleurs servira à spécifier la couleur ou le niveau de gris des
courbes de chaque graphique. L’utilisation des niveaux de gris, produits par la fonction gray,
permet de reproduire exactement les figures de ce chapitre.

> couleurs <- gray(c(0,.25,.5,.75))

Il suffit de changer le vecteur couleurs pour créer des figures en couleurs sans avoir à modifier
aucune des autres lignes de commande.

> couleurs<-c("black","red","green","blue")

Vous pouvez obtenir la liste des couleurs existantes en exécutant la commande colours() et
modifier le vecteur couleurs avec les couleurs que vous aurez choisies vous-même.
Les graphiques associés aux lois discrètes sont plus difficiles à obtenir.
1) La figure 4.3.

> fd<-function(x) {dbinom(x,5,0.5)}


> plot(cbind(0:5,sapply(0:5,fd)),xlim=c(0,20),ylim=c(0,.40),type="p",
+ ylab="",xlab="",pch=15,cex=2,lwd=3,col=couleurs[1],cex.axis=2)
> fd<-function(x) {dbinom(x,10,0.5)}
> points(cbind(0:10,sapply(0:10,fd)),xlim=c(0,20),ylim=c(0,.40),
+ type="p",ylab="",xlab="",pch=16,cex=2,lwd=3,col=couleurs[2],new=T)
> fd<-function(x) {dbinom(x,20,0.5)}
> points(cbind(0:20,sapply(0:20,fd)),xlim=c(0,20),ylim=c(0,.40),
+ type="p",ylab="",xlab="",pch=17,cex=2,lwd=3,col=couleurs[3],new=T)
> legtxt<-c(expression(paste(italic(n)," = 5",sep="")),expression(
+ paste(italic(n)," = 10",sep="")),expression(paste(italic(n)," = 20",
+ sep="")))
> legend("topright",legtxt,title=expression(paste(italic(p)," = 0,5",
+ sep="")),pch=c(15,16,17),col=c(couleurs[1],couleurs[2],
+ couleurs[3]),cex=2,bg="white",inset=.075)

2) La figure 4.5.
Solution des exercices 211

> dhypergeom<-function(x,N,n,p) (choose(N*p,x)*choose(N*(1-p),n-x)/


+ choose(N,n))
> fd<-function(x) {dhypergeom(x,14,10,0.5)}
> plot(cbind(0:10,sapply(0:10,fd)),xlim=c(0,10),ylim=c(0,.5),type="p",
+ ylab="",xlab="",pch=15,cex=2,lwd=3,col=couleurs[4],cex.axis=2)
> fd<-function(x) {dhypergeom(x,20,10,0.5)}
> points(cbind(0:10,sapply(0:10,fd)),xlim=c(0,10),ylim=c(0,.5),type="p",
+ ylab="",xlab="",pch=16,cex=2,lwd=3,col=couleurs[3],new=T)
> fd<-function(x) {dhypergeom(x,50,10,0.5)}
> points(cbind(0:10,sapply(0:10,fd)),xlim=c(0,10),ylim=c(0,.5),type="p",
+ ylab="",xlab="",pch=17,cex=2,lwd=3,col=couleurs[2],new=T)
> fd<-function(x) {dbinom(x,10,0.5)}
> points(cbind(0:10,sapply(0:10,fd)),xlim=c(0,10),ylim=c(0,.5),type="p",
+ ylab="",xlab="",pch=18,cex=2,lwd=3,col=couleurs[1],new=T)
> legtxt<-c(expression(paste(italic(N)," = 14",sep="")),expression(
+ paste(italic(N)," = 20",sep="")),expression(paste(italic(N)," = 50",
+ sep="")),expression(paste(italic(B),"(10;0,5)",sep="")))
> legend("topright",legtxt,title=expression(paste(italic(n)," = 10 et ",
+ italic(p)," = 0,5",sep="")),pch=c(15,16,17,18),col=c(couleurs[4],
+ couleurs[3],couleurs[2],couleurs[1]),cex=1.6,bg="white",inset=.0)

3) La figure 4.14.

> fr<-function(x) {pchisq(x,1)}


> curve(fr,from=-1,to=9,ylab="",xlab="",lty=1,lwd=3,col=couleurs[1],
+ type="n",cex.axis=2)
> curve(fr,from=-1,to=-0.000001,ylab="",xlab="",lty=5,lwd=3,add=T,
+ col=couleurs[1])
> curve(fr,from=0.000001,to=9,ylab="",xlab="",lty=5,lwd=3,add=T,
© Dunod – La photocopie non autorisée est un délit.

+ col=couleurs[1])
> fr<-function(x) {pchisq(x,3)}
> curve(fr,from=-1,to=-0.000001,ylab="",xlab="",lty=1,lwd=3,
+ col=couleurs[3],add=T)
> curve(fr,from=0.000001,to=9,ylab="",xlab="",lty=4,lwd=3,
+ col=couleurs[3],add=T)
> fr<-function(x) {pchisq(x,2)}
> curve(fr,from=-1,to=-0.000001,ylab="",xlab="",lty=2,lwd=3,add=T,
+ col=couleurs[2])
> curve(fr,from=0.000001,to=9,ylab="",xlab="",lty=2,lwd=3,add=T,
+ col=couleurs[2])
> fr<-function(x) {pchisq(x,6)}
> curve(fr,from=-1,to=-0.000001,ylab="",xlab="",lty=4,lwd=3,add=T,
+ col=couleurs[1])
> curve(fr,from=0.000001,to=9,ylab="",xlab="",lty=1,lwd=3,add=T,
212 4 • Lois de probabilités usuelles

+ col=couleurs[4])
> legtxt<-c(expression(paste(italic(p)," = 1",sep="")),expression(
+ paste(italic(p)," = 2",sep="")),expression(paste(italic(p)," = 3",
+ sep="")),expression(paste(italic(p)," = 6",sep="")))
> legend("bottomright",legtxt,lty=c(5,2,4,1),lwd=3,col=c(couleurs[1],
+ couleurs[2],couleurs[3],couleurs[4]),cex=2,bg="white",inset=.0375)

4) La figure 4.15.

> fd<-function(x) {dnorm(x)}


> curve(fd,from=-4,to=4,ylab="",xlab="",lty=5,lwd=3,add=F,col=
+ couleurs[1],cex.axis=2)
> fd<-function(x) {dt(x,1)}
> curve(fd,from=-4,to=4,ylab="",xlab="",lty=1,lwd=3,add=T,col=
+ couleurs[2])
> fd<-function(x) {dt(x,2)}
> curve(fd,from=-4,to=4,ylab="",xlab="",lty=2,lwd=3,add=T,col=
+ couleurs[3])
> fd<-function(x) {dt(x,5)}
> curve(fd,from=-4,to=4,ylab="",xlab="",lty=4,lwd=3,add=T,col=
+ couleurs[4])
> legtxt<-c(expression(paste(italic(n)," = 1",sep="")),expression(
+ paste(italic(n)," = 2",sep="")),expression(paste(italic(n)," = 5",
+ sep="")),expression(paste(italic(N),"(0,1)",sep="")))
> legend("topleft",legtxt,lty=c(1,2,4,5),lwd=3,col=c(couleurs[2],
+ couleurs[3],couleurs[4],couleurs[1]),cex=1.6,bg="white",inset=.0375)

La fonction curve et l’option add=TRUE qui permet de tracer les représentations de plusieurs
B fonctions sur le même graphique.
S
U

Exercice 4.2 dnorm(0) se traduit par : quelle est la valeur de f m,s (0) ? Rappelez-vous que
la formule de la densité de probabilité pour la loi normale centrée et réduite a été énoncée dans
1 1
le cours et par conséquent que f 0,1 (0) = √ exp(0) = √ ·
2×p 2p

> dnorm(0)

[1] 0.3989423
Solution des exercices 213

1
Remarque : si vous cherchez à calculer √ avec R, tapez la ligne de commande
2×p
suivante :

> 1/sqrt(2*pi)

vous obtenez le même résultat que précédemment, à savoir :

[1] 0.3989423

pnorm(2.58) se traduit par : quelle est la valeur de la probabilité suivante : P (X  2, 58) ?

> pnorm(2.58)

[1] 0.99506

qnorm(0.975) se traduit par : quelle est la valeur de x de telle sorte que : P (X  x) = 0, 975 ?

> qnorm(0.975)

[1] 1.959964

rnorm(50) va vous donner 50 réalisations issues d’une variable aléatoire qui suit la loi normale
centrée et réduite.
Remarque : ces 50 valeurs étant tirées au hasard selon la loi normale centrée et réduite,
celle que vous avez obtenues sont différentes de celles reproduites dans ce livre.

> rnorm(50)

[1] 0.22616085 0.54439760 0.20792583 -0.84969905 0.59129339


[6] 1.00647682 -0.76642796 0.35480893 -0.59672491 0.89013890
[11] -0.47080837 -1.46227843 -0.58124238 -2.01414048 -0.10893624
[16] 0.07832618 0.73412125 0.17872663 -1.93728326 -1.92525284
[21] -1.92588851 1.42857189 0.99267132 -0.06068365 -0.12528343
[26] 1.76619151 0.42449471 -0.45541895 0.41251797 -0.25589229
[31] 0.14828559 -1.39177251 0.26532239 0.07359925 -0.07751911
[36] -0.07074250 0.38184813 0.75228069 0.29687170 0.44164531
[41] -0.31921382 1.67792911 0.50664537 0.03382967 -1.84133601
[46] 0.41406216 -0.01726455 1.72044911 0.96749867 -1.25708385

> rnorm(20,mean=10,sd=2)
214 4 • Lois de probabilités usuelles

[1] 11.737278 7.466230 10.399588 10.091933 11.956426 11.930942


[7] 10.622849 9.983517 11.565074 11.524900 6.637971 10.353174
[13] 10.942667 12.104503 11.554737 9.420496 8.473915 8.894143
[19] 9.820253 8.355736

Remarque : là encore ces 20 valeurs sont tirées au hasard, celles que vous avez obtenues
sont encore différentes de celles du livre.

> x=seq(-5,5,0.1) ;pdf=dnorm(x) ;plot(x,pdf,type="l",main="Densité de la loi


normale centrée et réduite")

Figure 4.23

Vous auriez également pu exécuter la commande curve(dnorm(x),-5,5,main="Densité


de la loi normale centrée et réduite") pour tracer cette densité.

> runif(10)

Remarque : ces 10 valeurs ayant été tirées aléatoirement, celles que vous avez obtenues
sont différentes de celles du livre.
Solution des exercices 215

[1] 0.11438818 0.92192149 0.50410850 0.48086485 0.46358088


[6] 0.70378630 0.51356784 0.76443408 0.08591431 0.46097983

> rt(10,20)

[1] 1.74896997 -1.01728193 0.01956809 0.55233790 0.02114784


[6] 1.81404691 0.10148217 0.08921119 0.90599022 0.56271386

Remarque : ces 10 valeurs ayant été tirées aléatoirement, celles que vous avez obtenues
sont différentes de celles du livre.

Les fonctions dnorm, pnorm, qnorm, rnorm, runif et rt.


B
S
U

Exercice 4.3 Soit X le nombre mensuel de pannes. Comme aucun ordinateur ne tombe deux
fois en panne dans le même mois, X suit la loi binomiale de paramètres n = 150 et p = 0, 02.
1)
– Calculez la probabilité que le nombre mensuel de pannes est égal à 5. Pour cela il faut
déterminer P(X = 5). Vous allez calculer cette probabilité avec R. Pour cela, vous utilisez
la fonction dbinom, d pour la fonction de probabilité, dans le cas d’une loi discrète, et
binom car le nombre de pannes X suit une loi binomiale comme cela a été mentionné
ci-dessus.

> dbinom(5,150,0.02)

[1] 0.1011484

Remarque : ce calcul est très difficilement réalisable à la main. D’ailleurs, F. Couty, J.


Debord et D. Fredon, dans le livre Mini Manuel de Probabilités et de statistique, Dunod,
2007, se sont servis de l’approximation de la loi binomiale par la loi de Poisson. Ils
obtiennent comme valeur approchée 0, 101 avec cette approximation.

– Calculez la probabilité que le nombre mensuel de pannes est au plus égal à 3. Pour cela, il
faut déterminer P (X  3). Vous allez calculer cette probabilité avec R. Pour cela, il faut
utiliser la fonction pbinom, car ici il faut cumuler les probabilités de 0 à 3.
216 4 • Lois de probabilités usuelles

> pbinom(3,150,0.02)

[1] 0.6472395

Remarque : ce calcul est très difficilement réalisable à la main. D’ailleurs, F. Couty, J.


Debord et D. Fredon, dans le livre Mini Manuel de Probabilités et de statistique, Dunod,
2007, se sont encore servis de l’approximation de la loi binomiale par la loi de Poisson.
Ils obtiennent comme valeur approchée 0, 647 avec cette approximation.

2) Déterminez le nombre minimum n tel que la probabilité de l’événement  le nombre de pannes


est au plus n  soit supérieure à 0,99. Pour cela, il faut donc trouver n tel que P (X  n)  0, 99.
Ici n joue le rôle du k du cours. Vous allez calculer ce nombre n avec R. Pour cela, il faut utiliser
la fonction qbinom, q pour la fonction des quantiles, car dans cette question il faut trouver n.

> qbinom(0.99,150,0.02)

[1] 8

Remarque : F. Couty, J. Debord et D. Fredon, dans le livre Mini Manuel de Probabilités


et de statistique, Dunod, 2007, cherchaient  à la main  ce n et faisaient donc des calculs
de proche en proche. Ils mentionnent également qu’il existe des tables adaptées. Mais
dans votre cas R remplace les tables et vous donne directement le résultat en une ligne de
commande.

Les fonctions dbinom, pbinom et qbinom.


B
S
U

Exercice 4.4 Soit N le nombre de pieds de glycine blanche qui fleurissent. N suit la loi
binomiale de paramètres n ici inconnu et p égal à 0,85.
1) Vous devez déterminer le nombre minimal de sachets que le jardinier doit acheter
pour voir pousser au moins 200 pieds de glycine dans son jardin avec une probabilité
supérieure ou égale à 0,95. En fait, vous cherchez non pas un k comme dans l’exercice
précédent, mais le plus petit paramètre n tel que P (N  200)  0, 95 ou de manière
équivalente, car la loi binomiale est discrète, P(N > 199)  0, 95. Pour cela, vous allez
procéder par tâtonnement. Il est certain que n doit être plus grand que 200. Donc, tapez la
commande qbinom(0.95,n,0.85,lower.tail=FALSE) en remplaçant n par des valeurs
plus grandes que 200. L’option lower.tail=FALSE permet de calculer la probabilité d’excès
Solution des exercices 217

P(N > x) = 1 − FN (x) ou le quantile d’ordre a associé et défini par le plus petit x tel que
P(N  x)  a. Ainsi vous cherchez le plus petit n tel que : qbinom(0.95,n,0.85).
Par exemple, en remplaçant n par 230 :

> qbinom(0.95,230,0.85,lower.tail=FALSE)

et vous obtenez :

[1] 186

ce qui est inférieur à 200. Ceci signifie que P(N  186)  0,95 et P(N  187) < 0,95 donc a
fortiori P(N  200) < 0,95. Il faut donc augmenter n. Vous recommencez avec :

> qbinom(0.95,240,0.85,lower.tail=FALSE)

et vous obtenez :

[1] 195

ce qui est inférieur à 200. Vous recommencez jusqu’à taper :

> qbinom(0.95,246,0.85,lower.tail=FALSE)

et vous obtenez :

[1] 200
© Dunod – La photocopie non autorisée est un délit.

Donc, le jardinier doit acheter 246 graines de glycine blanche, soit 17 sachets puisque 15*17 =
255.
Vous auriez également pu procéder graphiquement en exécutant les lignes de commande sui-
vantes :

> plot(230:250,qbinom(0.95,230:250,0.85,lower.tail=FALSE))
> abline(h=200)
> abline(v=246)

Avec les deux dernières lignes, vous tracez la ligne horizontale d’ordonnée 200 et la ligne
verticale d’abscisse 246. Vous devinez donc sur le graphique que 246 semble être la solution
de notre problème. Si vous voulez le confirmer, il faut faire le dernier calcul ci-dessus et vous
devrez exécuter la commande qbinom(0.95,246,0.85,lower.tail=FALSE).
218 4 • Lois de probabilités usuelles

2) Avec 100 euros, il peut acheter 22 sachets. En effet, 22 sachets à 4,50 euros donnent un
montant de 99 euros. Il restera au jardinier un euro. Avec ces 22 sachets, il a (22*15=) 330
graines de glycine à sa disposition. Comme N , qui représente le nombre de pieds de glycine
blanche qui fleurissent, suit la loi binomiale de paramètres n = 330 et p = 0, 85 , le jardinier
peut s’attendre à voir pousser une moyenne (une espérance) égale à (330*0,85=) 280,5 pieds de
glycine blanche ou encore 280 pieds de glycine blanche dans son jardin.
Si l’utilisation de la moyenne peut sembler pertinente, ce qui nous fait nous interroger dans ce
cas est la valeur non entière de 280,5 que nous obtenons et qui ne représente rien de réel car le
jardinier n’aura jamais 280,5 pieds de glycines fleuris dans son jardin. Lorsque nous cherchons
à prédire une seule valeur d’une variable, une information plus pertinente est apportée par le
ou les modes de la loi de cette variable. En effet, un mode d’une variable aléatoire correspond
à une valeur que cette variable aura le plus de chances de prendre (soit la probabilité la plus
élevée pour une variable aléatoire discrète, soit la densité de probabilité la plus élevée pour une
variable aléatoire continue). Pour déterminer le ou les modes de la loi binomiale de paramètres
n = 330 et p = 0,85, exécutons la commande suivante qui donne l’indice du vecteur contenant
les valeurs de densité P(X = k) de la loi binomiale de paramètres n = 330 et p = 0,85 pour k
allant de 0 à 330.

> which.max(dbinom(0:330,330,.85))

[1] 282

Il faut alors faire attention car les valeurs de k vont de 0 à 330 et celles des indices du
vecteur vont de 1 à 331. Par conséquent, l’élément à l’indice 282 correspond à une valeur de
k = 282 − 1 = 281. Le mode de la distribution est 281 : le nombre de pieds de glycines fleuris
que le jardinier a la plus grande probabilité d’observer est donc 281.
Les deux lignes de commande suivantes permettent d’obtenir ce résultat par une lecture
graphique.

> plot(0:330,dbinom(0:330,330,.85),xlab="n",ylab="Probabilité",lwd=2)
> plot(270:285,dbinom(270:285,330,.85),xlab="n",ylab="Probabilité",lwd=2)
> abline(v=281)
Solution des exercices 219

Figure 4.24

La fonction qbinom.
B
S
U

Exercice 4.5
1) Soit X la variable aléatoire égale à la longueur en cm de la tige d’un chrysanthème pris
au hasard. La fleur est classée en catégorie extra si X  80. Comme X suit la loi normale
d’espérance m = 92 et d’écart-type s = 8, vous devez calculer P (X  80). Pour cela, vous
allez utiliser R en vous rappelant que R ne calcule que des probabilités égales à P (X  x). Vous
allez donc faire la transformation classique qui consiste à écrire que :

∀x ∈ R, P (X > x) = 1 − P (X  x) .

Vous allez donc taper la ligne de commande suivante pour obtenir le résultat souhaité :

> 1-pnorm(80,92,8)

[1] 0.9331928

La probabilité pour qu’une fleur soit classée en catégorie extra est égale à 0, 9331928.
2) Vous devez déterminer l’espérance mathématique du nombre de fleurs qui seront classées en
catégorie extra sur les 6 000 fleurs de la production de décembre. Soit N le nombre de fleurs
220 4 • Lois de probabilités usuelles

classées extra qui suit la loi binomiale de paramètres n = 6 000 et p = 0, 9331928. L’espérance
mathématique de N est donc égale à :

6 000 ∗ 0, 9331928 = 5599, 157.

Vous tapez la ligne de commande suivante afin d’être certain de ne pas commettre d’erreur
d’arrondi :

> (1-pnorm(80,92,8))*6000

qui donne comme résultat :

[1] 5599.157

La fonction pnorm. Il est possible que vous ayez à calculer le paramètre p d’une loi binomiale
B à partir d’une autre distribution. Par exemple, lorsque vous transformez une caractéristique
S
U
continue, la taille, en une qualité binaire, dépasser une taille de référence ou non.

3) Pour déterminer le ou les modes de la loi binomiale de paramètres n = 6 000 et p =


0,9331928, exécutons la commande suivante qui donne l’indice du vecteur contenant les valeurs
de densité P(X = k) de la loi binomiale de paramètres n = 6 000 et p = 0,9331928 pour k
allant de 0 à 6 000.

> which.max(dbinom(0 :6000,6000,.9331928))

[1] 5601

Il faut alors faire attention car les valeurs de k vont de 0 à 6 000 et celles des indices du
vecteur vont de 0 à 6 001. Par conséquent, l’élément à l’indice 5 601 correspond à une valeur
de k = 5 601 − 1 = 5 600. Le mode de la distribution est 5 600 : le nombre de fleurs que le
jardinier a la plus grande probabilité d’observer est donc 5 600.
Les lignes de commande suivantes permettent d’obtenir ce résultat par une lecture graphique
puis par une évaluation des probabilités pour k = 5 599 et k = 5 600 car celles-ci sont
indiscernables sur le graphique :

> plot(0:6000,dbinom(0:6000,6000,.9331928),xlab="n",ylab="Probabilité"
+ ,lwd=2)
> plot(5500:5700,dbinom(5500:5700,6000,.9331928),xlab="n",
+ ylab="Probabilité",lwd=2)
> plot(5590:5610,dbinom(5590:5610,6000,.9331928),xlab="n",
+ ylab="Probabilité",lwd=2)
> dbinom(5599,6000,.9331928)
Solution des exercices 221

[[1] 0.02061832

> dbinom(5600,6000,.9331928)

[1] 0.02062328

Figure 4.25
Chapitre 5

Statistiques descriptives bivariées

Do not put your faith in what statistics say until you have carefully considered what they do


not say. 
De William W. Watt.

Objectifs de ce chapitre
➤ décrire une série statistique à double entrée
➤ faire des représentations graphiques d’une série statistique à double entrée
➤ donner des résumés numériques d’une série statistique à double entrée
➤ présenter les différents types de liaison qui peuvent exister entre deux variables

5.1 PRÉSENTATION DES DONNÉES


Soit (X , Y ) une distribution statistique d’un couple de caractères sur une population d’ef-
fectif N . Notons ((X 1 , Y1 ), (X 2 , Y2 ), . . . , (X N , Y N )) les données brutes et (x1 , x2 , . . . , x p ), et
(y1 , y2 , . . . , yq ) les valeurs distinctes observées pour X et Y ordonnées dans l’ordre croissant.
5.2 Distributions conjointe, marginale et conditionnelle 223

Concrètement, vous possédez le tableau de données brutes suivant :

X Y
Individu 1 X1 Y1
Individu 2 X2 Y2
... ... ...
Individu N XN YN

5.2 DISTRIBUTION CONJOINTE - DISTRIBUTION MARGINALE -


DISTRIBUTION CONDITIONNELLE
5.2.1 Distribution conjointe

Définition 5.1 L’effectif du couple (xi , y j ) est égal au nombre n i, j de couples de valeurs égaux
à (xi , y j ), c’est à dire le cardinal de (X , Y )−1 (xi , y j ).
n i, j
Définition 5.2 La fréquence du couple (xi , y j ) est égal au nombre f i, j = ·
N
   
Définition 5.3 (xi , y j ), n i, j i=1,..., p et (xi , y j ), f i, j i=1,..., p sont la distribution des effectifs
j=1,...,q j=1,...,q
et la distribution des fréquences du couple (X , Y ).
Définition 5.4 Le tableau de contingence est un tableau qui croise les différentes modalités
des deux variables.
X /Y y1 ... y j ... yq Total
x1 n 1,1 ... n 1, j ... n 1,q n 1,•
: : : : : : :
xi n i,1 ... n i, j ... n i,q n i,•
© Dunod – La photocopie non autorisée est un délit.

: : : : : : :
xp n p,1 ... n p, j ... n p,q n p,•
Total n •,1 ... n •, j ... n •,q N

Définition 5.5 Ce tableau exprimé en effectifs représente la distribution conjointe du couple


de variables (X , Y ).

La fonction table permet de créer facilement des tableaux de contingence.


B
S
U
Exemple : calculez le tableau de contingence pour les variables graines et espece du
jeu de données Mesures5. Pour cela, tapez la ligne de commande suivante :
> attach(Mesures5)
> table(graines,espece)
224 5 • Statistiques descriptives bivariées

espece
graines bignone glycine blanche glycine violette laurier rose
1 0 7 4 0
2 0 19 22 0
3 0 11 16 0
4 0 10 6 0
5 0 5 5 0
6 0 1 1 0
7 0 1 2 0

Avec R 3.4.0, des changements ont été apportés à la gestion des valeurs manquantes par la
fonction table. L’argument useNA permet de préciser à R s’il doit reporter le nombre de
valeurs manquantes. Si useNA="no" alors le nombre de valeurs manquantes n’est jamais
reporté ; si useNA="ifany" alors le nombre de valeurs manquantes est reporté s’il est
non nul, c’est-à-dire en présence de valeurs manquantes ; si useNA="always" alors les
valeurs manquantes sont toujours reportées. Par exemple dans notre cas :

> table(graines,espece,useNA="ifany")

espece
graines bignone glycine blanche glycine violette laurier rose
1 0 7 4 0
2 0 19 22 0
3 0 11 16 0
4 0 10 6 0
5 0 5 5 0
6 0 1 1 0
7 0 1 2 0
<NA> 70 0 0 72

Notez que vous avez utilisé ci-dessus la fonction attach que vous avez découverte dans
l’exercice 3 du chapitre 3. N’oubliez pas que lorsque vous utilisez cette commande,
vous mettez le fichier en mémoire dans R. Ensuite, pour l’annuler, il faut utiliser la
fonction detach, rencontrée elle aussi dans le même exercice.

Mais les deux colonnes où figurent les zéros sont inutiles. Donc pour les enlever, vous
devez procéder comme vous l’avez déjà fait dans le chapitre 2.

> (table.cont<-table(factor(graines),espece,dnn=c("nbr.graines",
+ "espece"),exclude=c("bignone","laurier rose")))
5.2 Distributions conjointe, marginale et conditionnelle 225

espece
nbr.graines glycine blanche glycine violette
1 7 4
2 19 22
3 11 16
4 10 6
5 5 5
6 1 1
7 1 2
<NA> 0 0

Le nombre de valeurs manquantes présentes apparaît dans cette sortie car nous avons
utilisé l’argument exclude qui par défaut les exclut. Pour les supprimer nous pouvons
soit ajouter l’argument useNA="no", soit ajouter NA au vecteur des niveaux qui doivent
être exclus de l’analyse exclude=c("bignone","laurier rose",NA).

> (table.cont<-table(factor(graines),espece,dnn=c("nbr.graines",
+ "espece"),exclude=c("bignone","laurier rose"),useNA="no"))

espece
nbr.graines glycine blanche glycine violette
1 7 4
2 19 22
3 11 16
4 10 6
5 5 5
6 1 1
7 1 2
© Dunod – La photocopie non autorisée est un délit.

Avec la bibliothèque ggplot2, vous pouvez construire ces graphiques ainsi :

> library(ggplot2)
> ggplot(Mesures,aes(x=masse,y=taille,color=espece))+geom_{}point(size=3,
+ shape=19)+ggtitle("Taille en fonction de la masse par espèce")
> ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_{}point()+
+ ggtitle("Taille en fonction de la masse par espèce")+theme_{}bw()
226 5 • Statistiques descriptives bivariées

Le résultat en noir et blanc est représenté à la figure 5.1A.

Espèce
Taille

Masse

Figure 5.1A

Vous pouvez ajouter les totaux des lignes et des colonnes dans les marges du tableau de
la manière suivante :
> addmargins(table.cont)

espece
nbr.graines glycine blanche glycine violette Sum
1 7 4 11
2 19 22 41
3 11 16 27
4 10 6 16
5 5 5 10
6 1 1 2
7 1 2 3
Sum 54 56 110
5.2 Distributions conjointe, marginale et conditionnelle 227

La fonction addmargins permettra d’ajouter à ce tableau, dans les marges, les totaux
B des fréquences de chaque ligne et de chaque colonne.
S
U

Pour calculer la distribution des fréquences et l’afficher avec une précision minimale de
trois chiffres, il suffit de taper la commande suivante :
> print(prop.table(table.cont),digits=3)

espece
nbr.graines glycine blanche glycine violette
1 0.06364 0.03636
2 0.17273 0.20000
3 0.10000 0.14545
4 0.09091 0.05455
5 0.04545 0.04545
6 0.00909 0.00909
7 0.00909 0.01818

5.2.2 Distribution marginale

(respectivement de y j ) est égal au nombre n i,• =


5.6 L’effectif marginalpde xi 
Définition
q

n i, j respectivement n •, j = n i, j et la fréquence marginale de xi (respectivement
j=1 i=1 
n i,•  
q p
n •, j
y j ) au nombre f i,• = = f i, j respectivement f •, j = = f i, j .
N N
j=1 i=1

Proposition 5.7 Les relations suivantes peuvent être établies :


© Dunod – La photocopie non autorisée est un délit.


p

p

q

q

p

q

I 
J
n i,• = n i, j = n i, j = n •, j = N et f i,• = f •, j = 1.
i=1 i=1 j=1 j=1 i=1 j=1 i=1 j=1

Définition 5.8 (xi , n i,• )i=1,..., p et (y j , n •, j ) j=1,...,q (respectivement (xi , f i,• )i=1,..., p et
(y j , f •, j ) j=1,...,q ) sont appelées les distributions marginales des effectifs (respectivement des
fréquences) de X et de Y .

Exemple : pour calculer les effectifs marginaux de la variable graines puis de la variable
espece du jeu de données Mesures5, vous allez utiliser la fonction margin.table.
Tapez donc la ligne de commande suivante :
> margin.table(table.cont,1)
228 5 • Statistiques descriptives bivariées

nbr.graines
1 2 3 4 5 6 7
11 41 27 16 10 2 3

> margin.table(table.cont,2)

espece
glycine blanche glycine violette
54 56

Pour obtenir les distributions marginales des fréquences de la variable graines puis de
la variable espece du jeu de données Mesures5, exécutez les deux lignes de commande
suivantes :

> margin.table(prop.table(table.cont),1)

nbr.graines
1 2 3 4 5
0.10000000 0.37272727 0.24545455 0.14545455 0.09090909
6 7
0.01818182 0.02727273

> margin.table(prop.table(table.cont),2)

espece
glycine blanche glycine violette
0.4909091 0.5090909

Dans le cas où vous observez des caractères quantitatifs, il peut s’avérer intéressant de résu-
mer l’information des distributions marginales à l’aide des caractéristiques usuels de position
(moyenne, médiane. . .) et de dispersion (écart-type, étendue. . .) d’une variable unidimension-
nelle.

Définition 5.9 Les moyennes marginales des variables X et Y sont les quantités respectivement
définies par :

1   1  
p p q q
m(X ) = n i,• xi = f i,• xi et m(Y ) = n •, j y j = f •, j y j .
N N
i=1 i=1 j=1 j=1
5.2 Distributions conjointe, marginale et conditionnelle 229

Définition 5.10 Les variances marginales des variables X et Y sont les quantités respective-
ment définies par :

1  
p p
2
s (X ) = n i,• (xi − m(X )) =
2
f i,• xi2 − m2 (X )
N
i=1 i=1

et :
1  
q q
s2 (Y ) = n •, j (y j − m(Y ))2 = f •, j y 2j − m2 (Y ).
N
j=1 j=1

5.2.3 Distribution conditionnelle

Définition 5.11 L’effectif de la sous-population Vi,• est égal à n i,• .


n i, j f i, j
Définition 5.12 La fraction = représente la fréquence conditionnelle de la valeur
n i,• f i,•
y j sachant que X = xi , notée f j|i .

Remarque : vous pouvez définir d’une manière analogue la fréquence conditionnelle de


la valeur xi sachant que Y = y j , notée f i| j .

f i, j
Définition 5.13 La distribution yj, est appelée la distribution conditionnelle
f i,• j=1,...,q
des fréquences de Y sachant que X = xi .

Remarque : vous pouvez définir d’une manière analogue la distribution conditionnelle


des fréquences de X sachant que Y = y j .
© Dunod – La photocopie non autorisée est un délit.

Exemple : en spécifiant 1 ou 2 à la fonction prop.table, vous obtenez les distributions


conditionnelles des lignes ou des colonnes.
> prop.table(table.cont,1)

espece
nbr.graines glycine blanche glycine violette
1 0.6363636 0.3636364
2 0.4634146 0.5365854
3 0.4074074 0.5925926
4 0.6250000 0.3750000
5 0.5000000 0.5000000
6 0.5000000 0.5000000
7 0.3333333 0.6666667
230 5 • Statistiques descriptives bivariées

> prop.table(table.cont,2)

espece
nbr.graines glycine blanche glycine violette
1 0.12962963 0.07142857
2 0.35185185 0.39285714
3 0.20370370 0.28571429
4 0.18518519 0.10714286
5 0.09259259 0.08928571
6 0.01851852 0.01785714
7 0.01851852 0.03571429

Pour chacune des distributions conditionnelles, vous pouvez avoir besoin, comme pour les
distributions marginales, de résumer l’information via les caractéristiques usuelles de position
et de dispersion d’un caractère unidimensionnel.
Définition 5.14 La moyenne conditionnelle et la variance conditionnelle de la variable X
sachant que Y = y j , sont les quantités respectivement définies par :

1  
p p
m j (X ) = n i, j xi = f i/ j xi ,
n •, j
i=1 i=1

et :
1  
p p
s2j (X ) = n i, j (xi − m j (X ))2 = f i/ j xi2 − m j (X )2 .
n •, j
i=1 i=1
Remarque : vous pouvez aussi définir la moyenne conditionnelle et la variance condi-
tionnelle de la variable Y sachant que X = xi .

5.3 REPRÉSENTATIONS GRAPHIQUES


5.3.1 Cas de deux caractères qualitatifs
– Distributions marginales
La représentation graphique d’une distribution marginale, lorsque vous croisez deux
variables qualitatives est réalisée à l’aide d’un diagramme à barres verticales (ou hori-
zontales) ou d’un diagramme circulaire.
– Distributions conditionnelles
La représentation graphique des distributions conditionnelles est réalisée à l’aide d’un
diagramme à barres juxtaposées ou d’un diagramme à barres empilées. Ce type de
représentation a pour avantage de pouvoir comparer rapidement les différentes distributions,
en particulier savoir si elles sont homogènes ou non.
5.3 Représentations graphiques 231

5.3.2 Cas d’un caractère quantitatif et d’un caractère qualitatif


– Distributions marginales
Pour la variable quantitative, la représentation graphique de la distribution marginale
est réalisée à l’aide d’un diagramme en bâtons ou d’un histogramme selon que la variable
est discrète ou continue.
Pour la variable qualitative, la représentation graphique de la distribution marginale
est réalisée à l’aide d’un diagramme à barres verticales (ou horizontales) ou d’un
diagramme circulaire.
– Distributions conditionnelles
Sachant les classes de la variable qualitative, la représentation graphique des distributions
conditionnelles est réalisée à l’aide de diagrammes en bâtons ou d’histogrammes selon
que la variable quantitative est discrète ou continue (vous pouvez représenter autant de
diagrammes que la variable qualitative possède de classes).
Sachant les classes de la variable quantitative, la représentation graphique des distributions
conditionnelles est réalisée à l’aide d’un diagramme à barres juxtaposées ou d’un
diagramme à barres empilées (vous pouvez représenter autant de diagrammes que la
variable quantitative possède de classes).

5.3.3 Cas de deux caractères quantitatifs


– Distributions marginales
La représentation graphique est réalisée à l’aide de diagrammes en bâtons ou
d’histogrammes selon que les variables sont quantitatives discrètes ou continues.
– Distributions conditionnelles
Comme ci-dessus, la représentation graphique est réalisée à l’aide de diagrammes en
bâtons ou d’histogrammes selon que les variables sont quantitatives discrètes ou conti-
nues.
© Dunod – La photocopie non autorisée est un délit.

– Distribution conjointe
Lorsque vous disposez d’un tableau de contingence, la représentation graphique de la loi
jointe est réalisée à l’aide d’un stéréogramme (représentation en 3D). Dans le cas de
données brutes, vous représentez le diagramme de dispersion : dans un repère cartésien,
chaque observation (xk ; yk ) est représentée par un point Mk de coordonnées (xk ; yk ).
Ce type de graphique est particulièrement important pour l’étude d’une éventuelle liaison
entre les deux variables.

Remarque : lorsque vous disposez d’un tableau de contingence croisant deux variables
quantitatives, il est possible de représenter le diagramme de dispersion.
Pour cela, vous remplacez les données brutes par les centres de classes, puis vous repré-
sentez, pour chaque point, un cercle coloré centré sur le point dont le diamètre est propor-
tionnel à la fréquence f i, j .
232 5 • Statistiques descriptives bivariées

La fonction plotcdf2, disponible dans la bibliothèque BioStatR, permet de construire des


B stéréogrammes.
S
U

5.4 INDÉPENDANCE STATISTIQUE

Définition 5.15 Deux variables aléatoires X et Y sont indépendantes si et seulement si pour


chaque 1  i  p et pour chaque 1  j  q les relations suivantes sont simultanément
vérifiées :
f i/ j = f i,• et f j/i = f •, j .
En d’autres mots, les variables aléatoires X et Y sont indépendantes si et seulement si les
distributions conditionnelles de Y sachant X (respectivement de X sachant Y ) sont égales à la
distribution marginale de Y (respectivement X ).
Proposition 5.16 Supposez que les deux variables aléatoires X et Y soient indépendantes. Alors,
pour chaque 1  i  p et 1  j  q, vous avez :

f i, j = f i,• × f •, j .

5.5 LIAISON ENTRE DEUX VARIABLES


5.5.1 Liaison entre deux variables quantitatives

Définition 5.17 La covariance du couple (X , Y ) est le nombre défini par la somme :



Cov(X , Y ) = (xi − m(X ))(y j − m(Y )) fi, j .
i, j

La fonction cov vous permet de calculer la covariance entre deux variables quantitatives.
B
S
U

Proposition 5.18 Cet opérateur vérifie les 6 propriétés suivantes :


1. Cov(X , Y ) = Cov(Y , X ) (symétrie de la Covariance),
2. Cov(X , X ) = Var(X ) et Cov(Y , Y ) = Var(Y ),
3. Var(X + Y ) = Var(X ) + 2 Cov(X , Y ) + Var(Y ),
4. Cov(a X + b, cY + d) = acCov(X , Y ), où a, b, c et d sont des réels,

5. Cov(X , Y ) = m(X Y ) − m(X )m(Y ) où m(X Y ) = xi y j f i, j ,
i, j

6. |Cov(X , Y )|  Var(X )Var(Y ).
5.5 Liaison entre deux variables 233

Proposition 5.19 Si les deux variables aléatoires X et Y sont indépendantes, alors la covariance
du couple (X , Y ) est nulle.

La réciproque de cette proposition est fausse. Il existe des exemples pour lesquels Cov(X, Y) = 0
sans que les variables aléatoires soient indépendantes. Par conséquent, la covariance n’est pas
une mesure de la dépendance. En fait, la covariance mesure uniquement la dépendance linéaire.
L’intensité de cette dépendance s’effectue via un nombre sans dimension : le coefficient de
corrélation linéaire.

Définition 5.20 Le coefficient de corrélation linéaire théorique, ou encore le coefficient de


Cov(X , Y )
Bravais-Pearson est le quotient r(X , Y ) = √ ·
Var(X )Var(Y )
Proposition 5.21 Cet opérateur vérifie l’inégalité suivante : |r(X , Y )|  1.

Définition 5.22 Le coefficient de corrélation linéaire observé est le nombre défini par :

n
(xi − x n )(yi − y n )
Cov(x, y) i=1
r (x, y) = =   n ·
s(x)s(y) 
 n 
(xi − x n )2 (yi − y n )2
i=1 i=1

Remarque : ce nombre est une réalisation de la variable aléatoire r(X , Y ).


La fonction cor vous permet de calculer la corrélation entre deux variables quantitatives.
B
S
U
Exemple : vous souhaitez calculer la covariance entre la variable masse et la variable
taille. Pour cela, tapez la ligne de commande suivante :
> cov(masse,taille)
© Dunod – La photocopie non autorisée est un délit.

[1] 24.80598

Vous souhaitez calculer la corrélation entre la variable masse et la variable taille. Pour
cela, tapez la ligne de commande suivante :
> cor(masse,taille)

[1] 0.7520708

Les fonctions cov et cor peuvent s’utiliser sur des objets de classe tableau de données ou
B matrice. Le résultat obtenu est alors la matrice des covariances, ou des corrélations, entre les
S
U
différentes variables prises deux par deux.
234 5 • Statistiques descriptives bivariées

5.5.2 Liaison entre une variable quantitative et une variable qualitative


Il existe un coefficient qui mesure le degré de liaison entre une variable quantitative et une
variable qualitative : c’est le rapport de corrélation.
Définition 5.23 Soient Y une variable quantitative et X une variable qualitative. La mesure, ici
non symétrique, de la liaison est le rapport de corrélation théorique, noté h2Y |X , défini par :
! "
Var E(Y |X )
h2Y |X = ·
Var (Y )

Proposition 5.24 Si les deux variables aléatoires X et Y sont indépendantes, alors le rapport
de corrélation théorique h2Y |X est nul.

La réciproque de cette proposition est fausse.

Remarque :
1. Ce coefficient est parfois appelé le rapport de corrélation théorique en opposition avec
le rapport de corrélation empirique qui va être défini ci-dessous.
2. Ne confondez pas ce coefficient avec le coefficient de corrélation linéaire théorique.

Définition 5.25 Soient X une variable qualitative à p modalités et n 1 , . . . , n p les effectifs


observés. Soient y 1 , . . . , y p les moyennes de Y pour chaque modalité et y la moyenne totale. Le
rapport de corrélation empirique est égal à :


p
 2
ni yi − y n
i=1
h2Y |X ,obs = ,
ns y2

où :

p # 2 $
ns y2 = ni yi − yn + si2
i=1

et les si2 sont les variances de la variable quantitative Y à l’intérieur de chaque modalité.

1 
p
2
Définition 5.26 n i y i − y n est appelée la variance inter-modalités (variance expli-
n
i=1
1 2
p
quée par la variable qualitative) et n i si est appelée la variance intra-modalités (variance
n
i=1
résiduelle).
5.5 Liaison entre deux variables 235

Remarque : si à chaque modalité i de X , vous attribuez une valeur numérique égale à


% à i valeurs, alors
y i ce qui revient à transformer X en une variable numérique, notée X
2 2 %
hY |X ,obs est égal au r (Y , X ).

Exemple : la fonction eta2 de la bibliothèque BioStatR permet de calculer le rapport


de corrélation empirique entre deux variables. Voici le résultat dans le cas des variables
taille et espece du tableau de données Mesures5 :

> eta2(Mesures5$taille,Mesures5$espece)

[1] 0.1195181

5.5.3 Liaison entre deux variables qualitatives


Il existe un coefficient qui mesure le degré de liaison entre deux variables qualitatives : c’est le
coefficient d’association.

Définition 5.27 Soient X et Y deux variables qualitatives. Le coefficient d’association, noté


x2 , se définit par :
 2
n i,• ×n •, j
 n i, j − n
x2 = n i,• ×n •, j ·
i, j n

Remarque :
1. Le coefficient d’association x2 a été défini ci-dessus dans le cas d’un échantillon. Il
© Dunod – La photocopie non autorisée est un délit.

peut bien sûr être défini dans le cas d’une population.


n i,• ×n •, j
2. Le coefficient d’association x2 est nul lorsque les effectifs théoriques n et les
effectifs observés n i, j sont égaux.

Une autre mesure de la dépendance est le coefficient d’association de Pearson.

Définition 5.28 Soient X et Y deux variables qualitatives. Le coefficient d’association de


x2
Pearson, noté f2 , est égal à .
n

Remarque : ce coefficient a une particularité intéressante. Il ne dépend plus de la taille n


lorsque vous étudiez un échantillon, ou de N lorsque vous étudiez une population.
236 5 • Statistiques descriptives bivariées

5.6 ET SI VOUS AVEZ PLUS QUE DEUX VARIABLES


Il est possible d’affecter une couleur ou un symbole à chacun des groupes afin de pouvoir les
identifier sur le nuage de points. Si vous utilisez votre graphique dans un document en couleurs,
vous pouvez procéder de la manière suivante en utilisant l’option col de la fonction plot :

> plot(taille~masse,col=rainbow(4)[espece],pch=19,data=Mesures)
> legend("bottomright",levels(Mesures$espece),pch=19,col=rainbow(4))
> title("Taille en fonction de la masse par espèce")

Dans un document en noir et blanc, il est préférable de distinguer les individus à l’aide de
symboles différents grâce à l’option pch de la fonction plot :

> plot(taille~masse,pch=1:4,data=Mesures)
> legend("bottomright",levels(Mesures$espece),pch=1:4)
> title("Taille en fonction de la masse par espèce")

Le résultat est représenté à la figure 5.1B.


Taille

Masse

Figure 5.1B
5.6 Et si vous avez plus que deux variables 237

La bibliothèque lattice permet d’obtenir cette même représentation ainsi que d’autres plus
complexes que vous allez découvrir maintenant. Les symboles et couleurs utilisés par défaut par
la bibliothèque lattice peuvent être affichés en exécutant les lignes de commande suivantes :

> library(lattice)
> show.settings()

Figure 5.2

Vous constatez que les graphiques qui sont réalisés par la bibliothèque lattice sont en couleurs.
© Dunod – La photocopie non autorisée est un délit.

Il est toutefois très facile de spécifier que la création des graphiques doit se faire en noir et blanc
en modifiant le thème utilisé par la bibliothèque lattice. Dans ce cas, les symboles et niveaux
de gris sont :

> show.settings(x=standard.theme(color=FALSE))

Le résultat est représenté à la figure 5.3.


La fonction lattice.options sert à modifier, pour toute la durée de votre session R, les options
définies par défaut pour la bibliothèque lattice et en particulier le thème actif. Pour passer à
l’affichage en noir et blanc, vous exécutez la ligne de commande suivante :

> lattice.options(default.theme=standard.theme(color=FALSE))
238 5 • Statistiques descriptives bivariées

Figure 5.3

Le retour à l’affichage en couleurs se fait grâce à la ligne de commande suivante :

> lattice.options(default.theme=NULL)

La fonction trellis.device permet de modifier le thème utilisé ou de spécifier un affichage


en noir et blanc ou en couleurs pour la prochaine fenêtre graphique. Ces spécifications seront
effectives jusqu’au moment où vous fermerez cette fenêtre graphique. L’utilisation du noir et
blanc peut être obtenu en modifiant le thème actif grâce à l’option theme.

> trellis.device(theme=standard.theme(color=FALSE))

ou simplement à l’aide de l’option color.

> trellis.device(color=FALSE)

Dans la suite de ce chapitre, les graphiques ont tous été créés en noir et blanc après l’exécution
de la commande :

> lattice.options(default.theme=standard.theme(color=FALSE))
5.6 Et si vous avez plus que deux variables 239

> xyplot(taille~masse,groups=espece,auto.key=list(corner=c(1,0)),
+ main="Taille en fonction de la masse par espèce",data=Mesures)

Le résultat est représenté à la figure 5.4.


Taille

Masse

Figure 5.4
© Dunod – La photocopie non autorisée est un délit.

Il est également possible de représenter séparément les nuages de points associé à chacune des
espèces.

> xyplot(taille~masse|espece,groups=espece,data=Mesures)

Le résultat est représenté à la figure 5.5.


L’option scales="free" permet d’utiliser une échelle différente pour chacun des graphiques
composant la figure.

> xyplot(taille~masse|espece,groups=espece,scales="free",data=Mesures)

Le résultat est représenté à la figure 5.6.


240 5 • Statistiques descriptives bivariées

Taille

Figure 5.5
Masse
Taille

Figure 5.6
Masse
5.6 Et si vous avez plus que deux variables 241

Pour vous faire une idée de la nature de la relation entre la taille et la masse pour chacune des
espèces, vous allez ajouter un nouvel élément1 à chacun des panneaux du graphique.

> xyplot(taille~masse|espece,data=Mesures,groups=espece,
+ prepanel=function(x,y) prepanel.loess(x,y,span=1),
+ panel=function(x,y,subscripts,groups) {
+ panel.grid(h=-1,v=2)
+ panel.xyplot(x,y,pch=groups[subscripts])
+ panel.loess(x,y,span=1,lwd=2,
+ pch=groups[subscripts])})

Le résultat est représenté à la figure 5.7.


Taille
© Dunod – La photocopie non autorisée est un délit.

Masse

Figure 5.7

Vous pouvez également laisser l’échelle de chacun des panneaux libre.

> xyplot(taille~masse|espece,data=Mesures,groups=espece,scales="free",
+ prepanel=function(x,y) prepanel.loess(x,y,span=1),
+ panel=function(x,y,subscripts,groups) {

1. Plus précisément, il s’agit d’une courbe de régression obtenue par une régression polynomiale locale.
242 5 • Statistiques descriptives bivariées

+ panel.grid(h=-1,v=2)
+ panel.xyplot(x,y,pch=groups[subscripts])
+ panel.loess(x,y,span=1,lwd=2,pch=groups[subscripts])})

Le résultat est représenté à la figure 5.8.


Taille

Masse

Figure 5.8

Enfin, voici comment représenter simultanément, en fonction d’une même variable, plusieurs
autres variables.

> xyplot(masse+masse_sec~taille|espece,data=Mesures5,scales="free",
+ layout=c(2,2),auto.key=list(x=-.01,y=.37,corner=c(0,0)))

Le résultat est représenté à la figure 5.9.


Il est possible de changer certains paramètres des graphiques comme vous le constaterez en
exécutant les lignes de commande suivantes :

> xyplot(masse+masse_sec~taille|espece,data=Mesures5,scales="free",
+ layout=c(2,2),auto.key=list(x=-.01,y=.37,points=FALSE,
+ col=c("black","grey50"),font=2,corner=c(0,0)),
+ panel=function(x,y,subscripts,groups) {
5.6 Et si vous avez plus que deux variables 243

+ panel.grid(h=-1,v= 2)
+ panel.xyplot(x,y,pch=19,col=c("black",
+ "grey50")[groups[subscripts]])})

Le résultat est représenté à la figure 5.10.


Les lignes de commande suivantes permettent de construire les figures précédentes en couleurs.

> dev.off()
> lattice.options(default.theme=NULL)

> xyplot(taille~masse,groups=espece,auto.key = list(corner = c(1, 0)),


+ main="Taille en fonction de la masse par espèce",data=Mesures)

> xyplot(taille~masse|espece,groups=espece,data=Mesures,pch=19)

> xyplot(taille~masse|espece,groups=espece,scales="free",data=Mesures
+ ,pch=19)

> xyplot(taille~masse|espece,data=Mesures,groups=espece,
+ prepanel=function(x,y) prepanel.loess(x,y,span=1),
+ panel=function(x,y,subscripts,groups) {
+ panel.grid(h=-1,v=2)
+ panel.xyplot(x,y,pch=19,col=groups[subscripts])
+ panel.loess(x,y,span=1,lwd=2,col=groups[subscripts])})

> xyplot(taille~masse|espece,data=Mesures,groups=espece,scales="free",
+ prepanel=function(x,y) prepanel.loess(x,y,span=1),
+ panel=function(x,y,subscripts,groups) {
+ panel.grid(h=-1,v=2)
© Dunod – La photocopie non autorisée est un délit.

+ panel.xyplot(x,y,pch=19,col=groups[subscripts])
+ panel.loess(x,y,span=1,lwd=2,col=groups[subscripts])})

> xyplot(masse+masse_sec~taille|espece,data=Mesures5,scales="free",
+ layout=c(2,2),auto.key=list(x=-.01,y=.37,corner=c(0,0)))

> xyplot(masse+masse_sec~taille|espece,data=Mesures5,scales="free",
+ layout=c(2,2),auto.key=list(x=-.01,y=.37,points=FALSE,
+ col=c("black","red"),corner=c(0,0)),
+ panel=function(x,y,subscripts,groups) {
+ panel.grid(h=-1,v= 2)
+ panel.xyplot(x,y,pch=19,col=groups[subscripts])})
244 5 • Statistiques descriptives bivariées

Masse + masse_sec

Figure 5.9
Taille
Masse + masse_sec

Figure 5.10
Taille
5.6 Et si vous avez plus que deux variables 245

Voici à titre d’exemple, les codes permettant de construire les figures précédentes avec la
bibliothèque ggplot2. Tout d’abord en noir et blanc.

> ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_point()+
+ ggtitle("Taille en fonction de la masse par espèce")+theme_bw()+
+ theme(legend.position="bottom")
> ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_point()+
+ ggtitle("Taille en fonction de la masse par espèce")+theme_bw()+
+ facet_wrap(~espece)
> ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_point()+
+ ggtitle("Taille en fonction de la masse par espèce")+theme_bw()+
+ facet_wrap(~espece,scales = "free")
> ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_point()+
+ ggtitle("Taille en fonction de la masse par espèce")+theme_bw()+
+ facet_wrap(~espece)+ stat_smooth(color="grey50")
> ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_point()+
+ ggtitle("Taille en fonction de la masse par espèce")+theme_bw()+
+ facet_wrap(~espece,scales = "free")+stat_smooth(color="grey50")
> ggplot(Mesures5,aes(x=taille,y=masse,shape=espece))+
+ geom_point(aes(x=taille,y=masse_sec),color="gray50")+geom_point()+
+ ggtitle("Taille en fonction de la masse par espèce")+theme_bw()+
+ facet_wrap(~espece,scales = "free")+stat_smooth(color="black")+
+ stat_smooth(aes(x=taille,y=masse_sec),color="grey50")

Remarque : notez que les deux orthographes de « grey » sont acceptées par R : grey ou
gray !

Pour faire apparaître les deux variables dans la légende en plus des groupes liés aux espèces,
utilisons la bibliothèque reshape.
© Dunod – La photocopie non autorisée est un délit.

> library(reshape)
> Mesures5.long <- melt(Mesures5, id = c("taille","espece"),
+ measure = c("masse", "masse_sec"))
> ggplot(Mesures5.long,aes(x=taille,y=value,shape=espece,
+ color=variable))+geom_point()+ggtitle("Taille en fonction de la
+ masse par espèce")+theme_bw()+facet_wrap(~espece,scales = "free")+
+ stat_smooth(aes(color=variable))+scale_color_grey(start=.1,end=.5)
246 5 • Statistiques descriptives bivariées

Figure 5.11

En couleur maintenant.

> ggplot(Mesures,aes(x=masse,y=taille,color=espece))+geom_point()+
+ ggtitle("Taille en fonction de la masse par espèce")+theme_bw()
> ggplot(Mesures,aes(x=masse,y=taille,color=espece))+geom_point()+
+ ggtitle("Taille en fonction de la masse par espèce")+theme_bw()+
+ facet_wrap(~espece)
> ggplot(Mesures,aes(x=masse,y=taille,color=espece))+geom_point()+
+ ggtitle("Taille en fonction de la masse par espèce")+theme_bw()+
+ facet_wrap(~espece,scales = "free")
> ggplot(Mesures,aes(x=masse,y=taille,color=espece))+geom_point()+
+ ggtitle("Taille en fonction de la masse par espèce")+theme_bw()+
+ facet_wrap(~espece)+stat_smooth()
> ggplot(Mesures,aes(x=masse,y=taille,color=espece))+geom_point()+
+ ggtitle("Taille en fonction de la masse par espèce")+theme_bw()+
+ facet_wrap(~espece,scales = "free")+stat_smooth()
> ggplot(Mesures5,aes(x=taille,y=masse,color=espece))+
+ geom_point(aes(x=taille,y=masse_sec,color=espece),shape=22)+
+ geom_point(shape=19)+ggtitle("Taille en fonction de la masse
+ par espèce")+theme_bw()+facet_wrap(~espece,scales = "free")+
+ stat_smooth()+stat_smooth(aes(x=taille,y=masse_sec))
Exercices 247

Pour faire apparaître les deux variables dans la légende en plus des groupes liés aux espèces,
utilisons la bibliothèque reshape.

> library(reshape)
> ggplot(Mesures5.long,aes(x=taille,y=value,color=variable,
+ shape=espece))+geom_point()+ggtitle("Taille en fonction de la
+ masse par espèce")+theme_bw()+facet_wrap(~espece,scales =
+ "free")+stat_smooth(aes(color=variable))

EN RÉSUMÉ

Commande Description
attach(s) Attache le tableau de données s en mémoire.
Les colonnes de s sont alors directement accessibles.
detach(s) Détache le tableau de données s en mémoire.
Les colonnes de s ne sont alors plus directement accessibles.
addmargins(s) Ajoute au tableau de contingence les distributions
marginales des effectifs.
margin.table(s) Calcule l’effectif total du tableau.
prop.table(s) Calcule la distribution des fréquences associée
au tableau de contingence.
margin.table(s, 1) Calcule la distribution marginale des effectifs
des lignes du tableau de contingence.
prop.table(s, 1) Calcule la distribution marginale des fréquences
des lignes du tableau de contingence.
margin.table(s, 2) Calcule la distribution marginale des effectifs
© Dunod – La photocopie non autorisée est un délit.

des colonnes du tableau de contingence.


prop.table(s, 2) Calcule la distribution marginale des fréquences
des colonnes du tableau de contingence.
cov(x, y) Calcule la covariance entre x et y.
cor(x, y) Calcule la corrélation linéaire entre x et y.
cov(s) Calcule les covariances entre toutes les variables
du tableau de données s.
cor(s) Calcule les corrélations linéaires entre toutes les variables
du tableau de données s.
xyplot(...) Réalise simplement des graphiques complexes.
plotcdf2(x, y) Dessine le stéréogramme de x et de y.
248 5 • Statistiques descriptives bivariées

EXERCICES

Exercice 5.1 Stéréogrammes

Le but de cet exercice est de vous faire tracer des stéréogrammes.

1) Utilisez la fonction plotcdf2 de la bibliothèque BioStatR pour construire le stéréogramme


de la variable masse et de la variable taille du tableau de données Mesures5.
2) Vous lancez deux dés à six faces équilibrés. Soit S la variable aléatoire associée à la somme
des deux dés et M celle associée à la valeur minimum des deux dés. Les différents résultats
possibles pour la variable S sont :

> outer(1:6,1:6,"+")

[,1] [,2] [,3] [,4] [,5] [,6]


[1,] 2 3 4 5 6 7
[2,] 3 4 5 6 7 8
[3,] 4 5 6 7 8 9
[4,] 5 6 7 8 9 10
[5,] 6 7 8 9 10 11
[6,] 7 8 9 10 11 12

Les différents résultats possibles pour la variable M sont :

> outer(1:6,1:6,pmin)

[,1] [,2] [,3] [,4] [,5] [,6]


[1,] 1 1 1 1 1 1
[2,] 1 2 2 2 2 2
[3,] 1 2 3 3 3 3
[4,] 1 2 3 4 4 4
[5,] 1 2 3 4 5 5
[6,] 1 2 3 4 5 6

La distribution des effectifs du couple (S, M) est la suivante :

> (effs<-table(outer(1:6,1:6,"+"),outer(1:6,1:6,pmin)))
Du mal à démarrer 249

1 2 3 4 5 6
2 1 0 0 0 0 0
3 2 0 0 0 0 0
4 2 1 0 0 0 0
5 2 2 0 0 0 0
6 2 2 1 0 0 0
7 2 2 2 0 0 0
8 0 2 2 1 0 0
9 0 0 2 2 0 0
10 0 0 0 2 1 0
11 0 0 0 0 2 0
12 0 0 0 0 0 1

Utilisez la fonction plotcdf2 de la bibliothèque BioStatR pour construire le stéréogramme du


couple (S, M).
3) Calculez les distributions marginales des effectifs et des fréquences.
4) Calculez les distributions conditionnelles des fréquences.

Exercice 5.2 Covariance, corrélation et valeurs manquantes

Le but de cet exercice est de vous faire calculer des covariances, des corrélations linéaires de
Bravais-Pearson entre des variables quantitatives.

1) Calculez les covariances et les corrélations linéaires de Bravais-Pearson entre toutes les
variables quantitatives du tableau de données Mesures5. Que constatez-vous ?
2) Ajoutez l’option na.rm=pairwise.complete.obs lorsque vous exécutez les fonctions cov
© Dunod – La photocopie non autorisée est un délit.

et cor. Que constatez-vous ?

DU MAL À DÉMARRER

➩ Exercice 5.1
1) Consultez l’aide de la fonction plotcdf2 en tapant help(plotcdf2).
2) Utilisez l’option f de la fonction plotcdf2.
3) Relisez l’utilisation de la fonction margin.table dans l’exemple du cours.
4) Relisez l’utilisation de la fonction prop.table dans l’exemple du cours.
250 5 • Statistiques descriptives bivariées

➩ Exercice 5.2
1) Appliquez les fonctions cov et cor aux quatre premières colonnes du tableau de
données.
2) Recommencez en suivant l’indication de l’énoncé.

SOLUTION DES EXERCICES

Exercice 5.1
1)

> plotcdf2(Mesures5$taille,Mesures5$masse,f=0,"taille","poids",theme="bw")
Po
ids

ill e
Ta

Figure 5.12
Solution des exercices 251

2) Le nombre total de résultats différents possibles est :

> margin.table(effs)

[1] 36

Pour obtenir le stéréogramme demandé, il suffit de taper :

> plotcdf2(2:12,1:6,f=effs/36,"somme des dés","valeur du plus petit",


+ theme="bw")
© Dunod – La photocopie non autorisée est un délit.

Va
le
ur
du
plu

dés
sp

d es
me
eti

Som
t

Figure 5.13

3) Les distributions marginales des effectifs sont :

> margin.table(effs,1)
252 5 • Statistiques descriptives bivariées

2 3 4 5 6 7 8 9 10 11 12
1 2 3 4 5 6 5 4 3 2 1

> margin.table(effs,2)

1 2 3 4 5 6
11 9 7 5 3 1

Les distributions marginales des fréquences sont :

> print(prop.table(margin.table(effs,1)),3)

2 3 4 5 6 7 8
0.0278 0.0556 0.0833 0.1111 0.1389 0.1667 0.1389
9 10 11 12
0.1111 0.0833 0.0556 0.0278

> print(prop.table(margin.table(effs,2)),3)

1 2 3 4 5 6
0.3056 0.2500 0.1944 0.1389 0.0833 0.0278

4)

> print(prop.table(effs,1),digit=3)

1 2 3 4 5 6
2 1.000 0.000 0.000 0.000 0.000 0.000
3 1.000 0.000 0.000 0.000 0.000 0.000
4 0.667 0.333 0.000 0.000 0.000 0.000
5 0.500 0.500 0.000 0.000 0.000 0.000
6 0.400 0.400 0.200 0.000 0.000 0.000
7 0.333 0.333 0.333 0.000 0.000 0.000
8 0.000 0.400 0.400 0.200 0.000 0.000
9 0.000 0.000 0.500 0.500 0.000 0.000
10 0.000 0.000 0.000 0.667 0.333 0.000
11 0.000 0.000 0.000 0.000 1.000 0.000
12 0.000 0.000 0.000 0.000 0.000 1.000
Solution des exercices 253

> print(prop.table(effs,2),digit=3)

1 2 3 4 5 6
2 0.091 0.000 0.000 0.000 0.000 0.000
3 0.182 0.000 0.000 0.000 0.000 0.000
4 0.182 0.111 0.000 0.000 0.000 0.000
5 0.182 0.222 0.000 0.000 0.000 0.000
6 0.182 0.222 0.143 0.000 0.000 0.000
7 0.182 0.222 0.286 0.000 0.000 0.000
8 0.000 0.222 0.286 0.200 0.000 0.000
9 0.000 0.000 0.286 0.400 0.000 0.000
10 0.000 0.000 0.000 0.400 0.333 0.000
11 0.000 0.000 0.000 0.000 0.667 0.000
12 0.000 0.000 0.000 0.000 0.000 1.000

La fonction plotcdf2 permet de construire des stéréogrammes. Vous pouvez modifier les
B couleurs du stéréogramme grâce aux options col et theme.
S
U

Exercice 5.2
1) Seules les quatre premières colonnes du tableau de données sont quantitatives.

> cov(Mesures5[,1:4])

masse taille graines masse_sec


© Dunod – La photocopie non autorisée est un délit.

masse 81.02811 24.80598 NA NA


taille 24.80598 13.42640 NA NA
graines NA NA NA NA
masse_sec NA NA NA NA

> cor(Mesures5[,1:4])

masse taille graines masse_sec


masse 1.0000000 0.7520708 NA NA
taille 0.7520708 1.0000000 NA NA
graines NA NA 1 NA
masse_sec NA NA NA 1
254 5 • Statistiques descriptives bivariées

Vous constatez que la présence de valeurs manquantes dans les variables graines et masse_sec
rend impossible le calcul des covariances et des corrélations linéaires avec ces variables.
2) L’option na.rm=pairwise.complete.obs demande à R de calculer les covariances et les
corrélations en ne considérant que les couples d’observations pour lesquels il n’y a pas de valeurs
manquantes.

> cov(Mesures5[,1:4],use="pairwise.complete.obs")

masse taille graines masse_sec


masse 81.02811 24.805983 10.028632 28.579414
taille 24.80598 13.426403 4.541877 8.089633
graines 10.02863 4.541877 1.892327 3.510584
masse_sec 28.57941 8.089633 3.510584 10.707880

> cor(Mesures5[,1:4],use="pairwise.complete.obs")

masse taille graines masse_sec


masse 1.0000000 0.7520708 0.8024751 0.9685758
taille 0.7520708 1.0000000 0.7812662 0.6731472
graines 0.8024751 0.7812662 1.0000000 0.8076360
masse_sec 0.9685758 0.6731472 0.8076360 1.0000000

L’option use des fonctions cov et cor permet d’indiquer à R comment tenir compte des valeurs
B manquantes présentes dans l’échantillon.
S
U
Chapitre 6

Échantillonnage.
Estimation d’un paramètre.
Estimation par intervalle de confiance

 There are three kinds of lies: lies, damned lies and statistics. 
De Benjamin Disraëli (1804-1881), premier ministre de la Reine Victoria.

Objectifs de ce chapitre
➤ introduire le vocabulaire de la théorie de l’échantillonnage
➤ présenter les principaux estimateurs de certaines caractéristiques ou de certains paramètres
comme la moyenne, la variance ou la proportion
➤ donner les formules des intervalles de confiance pour ces paramètres

Souvent, les analyses, en biologie par exemple, portent sur l’étude de caractères d’une popu-
lation donnée pour laquelle vous n’avez pas accès à toute l’information.
Exemple :
– Population étudiée : l’ensemble des manchots empereurs en Terre Adélie.
– Caractères étudiés : le nombre de plongeons quotidiens, la durée d’un plongeon, la
longueur du bec, la taille des ailes.

Vous allez donc souvent avoir recours au processus d’échantillonnage pour obtenir une
approximation des informations que vous cherchez.
256 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

6.1 ÉCHANTILLONNAGE
6.1.1 Introduction
Si vous procédez à plusieurs tirages dans la population, qui ne sont pas forcément réalisés
simultanément, vous disposerez de plusieurs échantillons de même taille notée n (souvent elle
sera fixée à l’avance) et les résultats que vous produirez varieront d’un échantillon à l’autre.
C’est ce qui est appelé, en statistique, les fluctuations d’échantillonnage. Il faut donc retenir
qu’à partir d’un unique échantillon (car souvent vous n’aurez accès qu’à un seul échantillon
pour des raisons faciles à comprendre), vous aurez une estimation du paramètre de la population
que vous étudiez et non pas de certitudes ! Il faut distinguer quatre types d’échantillonnage :
– l’échantillonnage aléatoire exhaustif,
– l’échantillonnage aléatoire non-exhaustif,
– l’échantillonnage non aléatoire exhaustif,
– l’échantillonnage non aléatoire non-exhaustif.

6.1.2 Les différents types d’échantillons

Définition 6.1 Un échantillon probabiliste est un échantillon qui est construit à partir d’une
méthode d’échantillonnage où chaque unité statistique de la population a une chance d’être
sélectionnée. Il est parfois nommé échantillon aléatoire1 en raison de la manière aléatoire dont
les unités statistiques sont choisies afin de garantir une représentation sans biais de l’ensemble
de la population.

Remarque : la propriété d’être  sans biais  sera détaillée par la suite dans ce chapitre.

Définition 6.2 Un échantillon non aléatoire est un échantillon sélectionné par une méthode
non probabiliste.

Exemple : les manchots empereurs en captivité ou d’un zoo donnerait un échantillon non
aléatoire.

Il est recommandé d’effectuer un tirage aléatoire pour produire un échantillon. Les méthodes
aléatoires existantes ne seront pas présentées ici. Il vous est conseillé de consulter des
ouvrages spécialisés sur la question pour de plus amples détails.

Définition 6.3 Un échantillon exhaustif est un échantillon pour lequel le tirage a été réalisé
sans remise.

1. Dans la suite de ce livre, le terme  échantillon aléatoire  a un autre sens que celui d’échantillon probabiliste. Ce
second sens est introduit à la définition 6.8.
6.2 Estimation d’un paramètre 257

Exemple : l’échantillon des 252  haricots  du jardinier est un échantillon exhaustif,

puisqu’une fois ramassé sur le terrain, le  haricot  a été numéroté et mis de côté.

Définition 6.4 Un échantillon non-exhaustif est un échantillon pour lequel le tirage a été
réalisé avec remise.

Remarque : dans la pratique, la taille de l’échantillon est très souvent petite devant la
taille de la population étudiée. C’est pour cela que les tirages effectués, en général sans
remise, vont être assimilés à des tirages avec remise.

L’échantillon que vous construirez doit suivre le principe de l’échantillon représentatif.


Définition 6.5 Un échantillon représentatif est un échantillon qui reproduit les caractéris-
tiques d’une population de manière à ce que les conclusions obtenues avec cet échantillon se
généralisent à la population.
Pour finir, les notions d’échantillons indépendants et appariés vont être présentées.
Par exemple, vous aurez besoin de comparer deux populations à l’aide de deux échantillons.
Une question délicate que vous vous poserez souvent est :  Ai-je à faire à deux échantillons
indépendants ou à deux échantillons appariés ? . Cette question est fondamentale dans la
théorie des tests d’hypothèse qui sera présentée au chapitre suivant.
Définition 6.6 Si les K  2 échantillons que vous étudiez sont composés de séries d’unités
statistiques différentes, il s’agit alors d’échantillons indépendants.
Exemple : si vous souhaitez comparer le nombre de gousses de glycine blanche avec le
nombre de gousses de glycine violette, vous êtes alors en présence de K = 2 échantillons
indépendants.

Définition 6.7 Si les K  2 échantillons que vous étudiez sont composés de la même série
© Dunod – La photocopie non autorisée est un délit.

d’unités statistiques, il s’agit alors d’échantillons appariés.


Exemple : si vous souhaitez comparer la température de sujets malades avant la prise d’un
médicament avec la température de ces mêmes sujets après la prise de ce médicament,
vous êtes alors en présence de K = 2 échantillons appariés. En effet, dans cette expé-
rience, ce sont les mêmes sujets qui ont été soumis successivement aux deux mesures de
température.

6.2 ESTIMATION D’UN PARAMÈTRE


6.2.1 Généralités
Pour estimer un paramètre, vous avez deux façons de faire :
258 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

– soit calculer un seul nombre, dans ce cas vous donnez une estimation ponctuelle du para-
mètre,
– soit proposer un ensemble de valeurs plausibles, dans ce cas vous donnez une estimation
ensembliste, par région de confiance, du paramètre.
Maintenant, la question que vous vous posez est :  Comment dois-je estimer ?  c’est-à-dire
 Quelle méthode vais-je choisir ? . Ce choix déterminera les formules que vous aurez à appli-

quer. La réponse n’est pas simple car il existe plusieurs méthodes statistiques pour estimer un
paramètre. Voici les plus connues :
– la méthode des moments,
– la méthode du maximum de vraisemblance,
– la méthode des moindres carrés ordinaires ou généralisés,
– l’estimation bayésienne.
Pour guider votre choix entre ces différentes méthodes, vous pouvez vous poser une nouvelle
question :  Quelles sont les propriétés que devrait posséder l’estimateur que je vais sélection-
ner ? . En fonction des propriétés recherchées, vous pouvez avoir à votre disposition plusieurs
estimateurs d’un même paramètre, c’est-à-dire devoir choisir entre plusieurs formules.

6.2.2 Échantillon aléatoire et statistique de l’échantillon

Définition 6.8 Un échantillon aléatoire d’effectif n, (X 1 , . . . , X n ), est défini par un ensemble


de n variables aléatoires indépendantes et de même loi appelée loi parente. Une réalisation,
(x1 , . . . , xn ), d’un échantillon aléatoire correspond à n répétitions indépendantes d’une même
expérience. Un échantillon aléatoire d’effectif n est souvent également appelé un n-échantillon.
Définition 6.9 Toute fonction T de l’échantillon aléatoire d’effectif n, (X 1 , . . . , X n ), est appelée
une statistique de l’échantillon.

6.2.3 Estimateur et estimation

Définition 6.10 Si (X 1 , . . . , X n ) est un échantillon aléatoire d’effectif n de loi parente la loi de


X , prélevé dans une population U alors un estimateur de u est toute fonction h n de l’échantillon
aléatoire (X 1 , . . . , X n ), noté &
un : &
un = h n (X 1 , . . . , X n ).
Définition 6.11 Une fois l’échantillon prélevé, vous disposez de n valeurs observées x 1 , . . . , x n ,
ce qui vous fournit une valeur h n (x1 , . . . , xn ) qui est une réalisation de l’estimateur &
un de u et
qui est appelée une estimation ponctuelle du paramètre u.

Observez les deux notations utilisées ci-dessus :


1. (X1 , . . . , Xn ) désigne l’échantillon aléatoire de taille n et les n observations ne sont pas
encore à disposition.
6.2 Estimation d’un paramètre 259

2. (x1 , . . . , xn ) désigne une réalisation de l’échantillon aléatoire et les n observations sont à


disposition.
La question que vous devez toujours avoir à l’esprit est :  Suis-je en train de manipuler une
variable aléatoire ou l’une de ses réalisations ? .

6.2.4 Propriétés d’un estimateur


Le choix d’un estimateur va reposer sur ses qualités.
   
Définition 6.12 Le biais de l’estimateur &
un se définit par : B &
un =E &
un − u.
 
un est un estimateur sans biais (ou non biaisé) du paramètre u si : B &
Définition 6.13 & un = 0,
 
c’est-à-dire si E &
un = u.
 
Définition 6.14 De façon générale, &
un est un estimateur sans biais de g(u) si E &
un = g(u).
 
un est asymptotiquement sans biais pour u si lim E &
Définition 6.15 & un = u.
n→+∞

Entre deux estimateurs non biaisés de u, vous choisissez le plus précis des deux, c’est-à-dire
celui de plus petite variance.
Définition 6.16 Si &
un est un estimateur de u, la précision de &
un est mesurée par l’écart qua-
dratique moyen, noté E Q M :
   2    2
& &
E Q M un = E un − u un + B &
= Var & un .
   
un = Var &
un est un estimateur sans biais, alors E Q M &
Remarque : si & un .
© Dunod – La photocopie non autorisée est un délit.

Proposition 6.17 Entre deux estimateurs de u, vous choisissez celui dont l’écart quadratique
moyen est le plus faible.
Définition 6.18 Un estimateur &
u1n est relativement plus efficace qu’un estimateur &
u2n s’il est
plus précis que le second, c’est-à-dire si :
   
E QM & u1n  E Q M &
u2n .

Définition 6.19 Un estimateur sans biais optimal parmi les estimateurs sans biais est un
estimateur &un préférable à tout autre au sens de la variance c’est-à-dire l’estimateur le plus
efficace parmi tous les estimateurs sans biais.
Proposition 6.20 Si un estimateur est sans biais et que sa variance tend vers zéro quand n tend
vers l’infini, alors cet estimateur est convergent.
260 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

6.2.5 Estimateur de l’espérance2


Soit (X 1 , . . . , X n ) un échantillon aléatoire de loi parente la loi de X , d’espérance m et de variance
s2 > 0.
& n de m est égal à :
Définition 6.21 L’estimateur m

1
n
&n =
m Xi .
n
i=1

Exemple : soit l’échantillon des 54 glycines blanches. Vous cherchez à calculer une esti-
mation de l’espérance de la variable taille des glycines blanches. Pour cela, il faut
d’abord extraire les 54 données des glycines blanches des 252 données des quatre espèces.
Vous obtenez ce nouveau tableau de données en tapant la ligne de commande suivante :
> glycine.blanche<-subset(Mesures,subset=(Mesures$espece==
+ "glycine blanche"))

Puis vous calculez une estimation de l’espérance de la variable taille en tapant la ligne
de commande suivante :
> mean(glycine.blanche$taille)

Elle vous renvoie la valeur numérique suivante :

[1] 14.77222

& n est un estimateur sans biais de m, c’est-à-dire E(&


Proposition 6.22 m mn ) = m. De plus, la
& n est égale à Var (&
variance de m mn ) = s2 /n.

Remarque : vous ne pouvez pas vérifier cette égalité dans la pratique car il faudrait relever
la moyenne sur tous les échantillons possibles et dans ce cas vous auriez observé toute la
population ce qui rend inutile le recours à la statistique inférentielle !

6.2.6 Estimateur de la variance


Soit (X 1 , . . . , X n ) un échantillon aléatoire de loi parente la loi de X , d’espérance m et de variance
s2 > 0.

2. Ce paragraphe pourrait aussi s’appeler  Estimateur de la moyenne .


6.2 Estimation d’un paramètre 261

Définition 6.23 L’estimateur Sn2 de s2 est égal à :

1
n
Sn2 = (X i − m
& n )2 .
n
i=1

Remarque :
1. Il faut noter que cet estimateur est construit sur l’hypothèse que l’espérance m de la
variable X est inconnue. Pourtant il peut arriver que l’espérance m soit connue, il faut
alors changer d’estimateur. Cet estimateur sera alors égal à :

1
n
& 2n =
s (X i − m)2 .
n
i=1

2. Si vous souhaitez construire un estimateur de l’écart-type, vous pouvez prendre comme


estimateur la racine carrée de l’un des deux estimateurs que vous venez de voir en
fonction du cas dans lequel vous vous trouverez. Mais il faut savoir qu’alors, les
deux estimateurs de l’écart-type construits en prenant la racine carrée de l’un ou de
l’autre vont généralement perdre la propriété d’être sans biais. Afin de rendre sans biais
l’estimateur de l’écart-type, il faut le multiplier par un certain coefficient. Il ne sera
pas donné ici, mais vous pouvez consulter des ouvrages comme le livre de G. Saporta,
Probabilités, analyse de données et Statistique, 3e édition révisée Technip, 2011, pour
connaître la valeur exacte de ce coefficient.

Notez que vous avez à disposition deux estimateurs pour la variance s2 :


B
S – un estimateur de la variance s2 dans le cas où l’espérance m est inconnue (cas le plus
U
fréquent),
– et un autre estimateur de la variance s2 dans le cas où l’espérance m est connue.
© Dunod – La photocopie non autorisée est un délit.

Exemple : soit l’échantillon des 54 glycines blanches. Vous cherchez à calculer une esti-
mation de la variance s2 de la variable taille des glycines blanches dont l’espérance est
connue. Vous calculez une estimation de la variance s2 de la variable taille en tapant
la ligne de commande suivante :
> var(glycine.blanche$taille)

Elle vous renvoie la valeur numérique suivante :

[1] 10.91412

 
Proposition 6.24 Sn2 est un estimateur biaisé de la variance s2 et le biais B Sn2 est égal à
−s2 /n. Sn2 est donc un estimateur asymptotiquement sans biais.
262 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

2
Définition 6.25 L’estimateur corrigé Sn,c de la variance s2 est égal à :
1 
n
nSn2
2
Sn,c = = (X i − m
& n )2 .
n−1 n−1
i=1

2
Proposition 6.26 Sn,c est un estimateur sans biais de la variance s2 , c’est-à-dire E(Sn,c
2
) = s2 .
Exemple : soit l’échantillon des 54 glycines blanches. Vous cherchez à calculer une esti-
mation sans biais de la variance s2 de la variable taille des glycines blanches. Vous
calculez une estimation sans biais de la variance s2 de la variable taille en tapant la
ligne de commande suivante :
> (var(glycine.blanche$taille))*((length(glycine.blanche$taille)-1)
+ /length(glycine.blanche$taille))

Elle vous renvoie la valeur numérique suivante :

[1] 10.71201

Il est possible de construire un estimateur robuste de  l’écart-type à partir de la valeur  du


MADn de l’échantillon (X1 , . . . , Xn ) défini par Médiane (|Xi − Médiane(X1 , . . . , Xn )|)1in (voir
le chapitre 3, définition 3.51 pour une série statistique). Pour cela, il faut multiplier celle-ci
par un coefficient d’échelle qui vaut 1/(F−1 (3/4)), dans le cas de la loi normale, soit à peu
près 1,4826 . C’est la valeur par défaut qui est calculée par la fonction mad du langage R.

6.2.7 Estimateur d’une proportion

& n,A de p A est égal à :


Définition 6.27 L’estimateur p
nA
& n,A =
p
n
où n A est le nombre d’individus de l’échantillon de taille n qui possèdent la caractéristique A.

& n,A est un estimateur sans biais de la proportion p A , c’est-à-dire :


Proposition 6.28 p
E(&
pn,A ) = p A .

Exemple : soit l’échantillon des 54 glycines blanches. Vous cherchez à calculer une esti-
mation sans biais de la proportion des gousses de glycine blanche qui ont au plus trois
graines présentes dans une gousse. Pour cela, vous allez taper la ligne de commande
suivante :
> glycine.blanche<-subset(Mesures5,subset=(Mesures5$espece==
+ "glycine blanche"))
6.3 Estimation par intervalle de confiance 263

Elle vous permet de prélever dans le fichier Mesures5 les données qui ne concernent que
les glycines blanches. Puis, vous tapez les deux lignes de commandes suivantes :

> effectif.cumule<-cumsum(table(glycine.blanche$graines))
> effectif.cumule

1 2 3 4 5 6 7
7 26 37 47 52 53 54

Une estimation de la proportion des gousses de glycine blanche qui ont au plus trois
graines présentes dans une gousse est donc égale à 37/54, soit environ 69 % puisque :

> 37/54

donne :

[1] 0.6851852

6.3 ESTIMATION PAR INTERVALLE DE CONFIANCE


La notion et l’utilisation d’estimation par intervalle sont souvent méconnues. Toutefois, vous
avez peut-être déjà été confronté à ces objets puisque certains tests programmés dans les logiciels
les construisent automatiquement.

6.3.1 Introduction
Lorsqu’une estimation est souhaitée, il est plus pertinent de fournir un intervalle u1 < u < u2
© Dunod – La photocopie non autorisée est un délit.

plutôt que simplement une estimation ponctuelle, c’est-à-dire d’écrire uniquement & un = c. Un
tel intervalle ]u1 ; u2 [ s’appelle une estimation par intervalle de confiance du paramètre u ou
estimation ensembliste du paramètre u.

6.3.2 Espérance d’une loi normale


Soit (X 1 , . . . , X n ) un échantillon aléatoire de loi parente la loi normale N (m; s).

a) La variance s2 est connue



s
& n est le meilleur estimateur de m et m
m & n suit la loi normale N m; √ .
n
264 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

• Intervalle de confiance
L’intervalle de confiance pour l’espérance m au niveau de confiance (1 − a) est égal à :
s s
& n (obs) − u 1−a/2 √ < m < m
m & n (obs) + u 1−a/2 √ ,
n n

où u 1−a/2 est le quantile d’ordre 1 − a/2 de la loi normale centrée et réduite.

Remarque :
1. Vous pourrez désormais calculer le quantile u 1−a/2 à l’aide de R sans avoir recours à
la table de la loi normale. Rappelez-vous que vous devez utiliser la fonction qnorm().
2. Souvent 1 − a sera fixé à 0, 95 et par conséquent u 1−a/2 sera approximativement égal à
1, 96. Vous obtenez la valeur exacte de u 0,975 en tapant la ligne de commande suivante :
> qnorm(0.975)

Elle vous renvoie la valeur numérique suivante :

[1] 1.959964

Ce cas qui vient d’être présenté est extrêmement rare dans la pratique. En effet, la variance
s2 de la population est généralement inconnue. Par conséquent, le cas ci-dessous vous servira
la plupart du temps dans vos analyses.

b) La variance s2 est inconnue

Théorème 6.29 Théorème de Fisher Soit (X 1 , . . . , X n ) un échantillon aléatoire de loi parente


la loi normale N (m; s), avec s > 0.
& n et nSn2 /s2 sont deux variables aléatoires indépendantes,
– m
&n − m
m
– √ suit la loi normale N (0; 1) et nSn2 /s2 suit la loi du Khi-deux x2 (n − 1),
s/ n
&n − m
m
– √ suit la loi de Student t(n − 1).
Sn / n − 1
• Intervalle de confiance
L’intervalle de confiance pour l’espérance m au niveau de confiance (1 − a) est égal à :

Sn (obs) Sn (obs)
& n (obs) − tn−1;1−a/2 √
m & n (obs) + tn−1;1−a/2 √
<m<m ,
n−1 n−1

où tn−1;1−a/2 est le quantile d’ordre 1 − a/2 de la loi de Student t(n − 1).


6.3 Estimation par intervalle de confiance 265

Remarque :
1. Vous pourrez désormais calculer le quantile tn−1;1−a/2 à l’aide de R sans avoir recours
à une table de la loi de Student. Rappelez-vous que vous devez utiliser la fonction qt()
qui prend comme premier argument 1 − a/2 et comme deuxième argument n − 1 ou
encore ce qu’appelle R le df, degree of freedom, traduit par degré de liberté.
2. Notez que la formule ci-dessus de l’intervalle de confiance est donnée avec l’écart-type
Sn (obs) et non l’écart-type corrigé Sn,c (obs). Or il serait préférable que vous ayez la
formule avec l’écart-type corrigé Sn,c (obs) car R ne calcule que cet écart-type. Il faut
Sn (obs) Sn,c (obs)
donc remplacer la quantité √ par la quantité √ .
n−1 n

Exemple : vous souhaitez construire un intervalle de confiance pour l’espérance m de la


variable taille de la glycine blanche. Pour cela, il vous faut d’abord extraire du fichier
Mesures5 les 54 données sur les glycines blanches. La ligne de commande suivante va
vous donner ce que vous souhaitez :
> glycine.blanche<-subset(Mesures5,subset=(Mesures$espece==
+ "glycine blanche"))

Maintenant, il faut savoir si ces données, qui forment un échantillon d’effectif égal à 54,
proviennent d’une loi normale de paramètres m et s, tous deux inconnus. Pour cela, vous
allez réaliser un test de normalité, le test de Shapiro-Wilk. Pour avoir la définition d’un
test, reportez-vous au chapitre 7. Comme tout test, ce test confronte deux hypothèses :

H0 : la distribution des données au sein de la population est une loi normale


contre
H1 : la distribution des données au sein de la population n’est pas une loi normale.
© Dunod – La photocopie non autorisée est un délit.

Pour réaliser ce test, vous devez taper la ligne de commande suivante :


> shapiro.test(glycine.blanche$taille)

Shapiro-Wilk normality test

data: glycine.blanche$taille
W = 0.9798, p-value = 0.4906

La p-valeur (qui sera définie au chapitre 7) étant strictement supérieure à a = 5 %, le


test n’est pas significatif au seuil a = 5 %. Par conséquent, vous décidez de conserver
l’hypothèse nulle H0 au seuil a = 5 %. Le risque d’erreur associé à cette décision est
un risque d’erreur de deuxième espèce noté b. Vous ne pouvez pas l’évaluer dans le cas
266 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

présent mais il est considéré comme satisfaisant car l’effectif de l’échantillon, auquel le
test de Shapiro-Wilk est appliqué, vaut 54 et donc dépasse 30. En effet :
> length(glycine.blanche$taille)

[1] 54

En plus du test, il est souvent intéressant de représenter les données que nous soumettons
à un test de normalité.
> qqnorm(glycine.blanche$taille)
> qqline(glycine.blanche$taille)

Figure 6.1A

Puis avec la bibliothèque ggplot2, on obtient la figure 6.1B, en tapant :


> library(ggplot2)
> gg_qqplot(glycine.blanche,"taille")
6.3 Estimation par intervalle de confiance 267

Figure 6.1B

Remarque : le graphique de la figure 6.1B que nous venons de tracer est utile
pour pouvoir vérifier graphiquement l’ajustement ou le non ajustement avec la loi
normale mais aussi avec une autre loi. Par exemple, nous allons maintenant étudier
avec le test de Shapiro-Wilk la normalité ou l’absence de normalité de la variable
« taille » pour l’espèce « laurier rose ».
> lauriers.roses<-subset(Mesures,subset=
© Dunod – La photocopie non autorisée est un délit.

+(Mesures$espece=="laurier rose"))
> shapiro.test(lauriers.roses$taille)

Shapiro-Wilk normality test


data: lauriers.roses$taille
W = 0.96457, p-value = 0.04021

Dans ce cas, nous rejetons la normalité de la variable « taille » pour l’espèce « lau-
rier rose ». D’ailleurs vous pouvez constater graphiquement la même conclusion
en tapant la ligne de commande suivante :
> gg_qqplot(lauriers.roses,"taille")
268 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

Nous aurons besoin de la bibliothèque MASS et de la fonction fitdistr qui sert à estimer
les paramètres inconnus des lois de probabilité de Student puis du Khi-deux.
> library(MASS)
> params <- as.list(fitdistr(lauriers.roses$taille, "t")$estimate)
> gg_qqplot(lauriers.roses,"taille",qt,list(df=params$df))

Le résultat de ces deux lignes de commande est reproduit à gauche sur la figure 6.1C.
> params <- list(df=fitdistr(lauriers.roses$taille,"chi-squared",
+ start=list(df=5),method="Brent",lower=1,upper=40)$estimate)
> gg_qqplot(lauriers.roses,"taille",qchisq,params)

Le résultat de ces deux lignes de commande est reproduit à droite sur la figure 6.1C.

Figure 6.1C
Malheureusement aucune de ces deux distributions ne semble compatible avec les obser-
vations.
Maintenant, vous allez calculer l’intervalle de confiance pour l’espérance m à 95 %. Pour
cela, vous procédez en plusieurs étapes :
1. Calcul de l’estimation sans biais de la moyenne de la population.
2. Calcul du quantile d’ordre 0,975 de la loi de Student à 53 degrés de liberté.
3. Calcul de l’estimation de l’écart-type de la population.
Pour calculer l’estimation sans biais de la moyenne, vous tapez la ligne de commande
suivante que vous avez vue dans le paragraphe précédent :
> (moyenne<-mean(glycine.blanche$taille))
6.3 Estimation par intervalle de confiance 269

Elle vous renvoie :

[1] 14.77222

Pour calculer le quantile d’ordre 0,975 de la loi de Student à 53 (=54-1) degrés de liberté,
vous tapez la ligne de commande suivante (vous l’avez déjà vue dans le chapitre 4) :
> (quantile<-qt(0.975,53))

[1] 2.005746

Pour calculer l’estimation de l’écart-type, vous tapez la ligne de commande suivante :


> (ecart.type<-sd(glycine.blanche$taille))

Elle vous renvoie :

[1] 3.303652

Maintenant, vous avez tous les éléments pour calculer les deux bornes de l’intervalle.
Vous commencez par la borne inférieure en tapant la ligne de commande suivante :
> moyenne-quantile*(ecart.type/sqrt(length(glycine.blanche$taille)))

Elle vous renvoie :

[1] 13.8705

Pour obtenir la borne supérieure, vous tapez la ligne de commande suivante :


> moyenne+quantile*(ecart.type/sqrt(length(glycine.blanche$taille)))
© Dunod – La photocopie non autorisée est un délit.

Elle vous renvoie :

[1] 15.67395

Remarque : il y a une fonction de R qui vous donne ces deux bornes en une ligne de
commande. Voici cette ligne de commande :

> t.test(glycine.blanche$taille)

One Sample t-test


data: glycine.blanche$taille
270 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

t = 32.8585, df = 53, p-value < 2.2e-16


alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
13.87050 15.67395
sample estimates:
mean of x
14.77222

Dans cette sortie, vous voyez apparaître la ligne 95 percent confidence interval
qui signifie l’intervalle de confiance à 95 %. La ligne suivante vous donne les deux bornes
de l’intervalle. Vous remarquez que vous retrouvez bien les deux valeurs que vous venez
d’obtenir. Le problème temporaire de cette fonction c’est qu’elle fait appel à la théorie
des tests que vous verrez au chapitre 7.

6.3.3 Variance d’une loi normale


a) L’espérance m est connue
1
n
& 2n
s = (X i − m)2 est un estimateur de s2 et n s
& 2n /s2 suit la loi du Khi-deux x2 (n).
n
i=1
• Intervalle de confiance
L’intervalle de confiance pour la variance s2 au niveau de confiance (1 − a) est égal à :
ns& 2n (obs) ns& 2n (obs)
< s2 < ,
k2 k1
où k1 et k2 sont les quantiles de la loi du Khi-deux x2 (n), d’ordre qui reste à déterminer en
fonction de ce que vous souhaitez.

Exemple : vous pouvez prendre k1 égal au quantile d’ordre a/2 de la loi du Khi-deux
x2 (n) et k2 égal au quantile d’ordre 1 − a/2 de la loi du Khi-deux x2 (n).

Remarque : vous pourrez désormais calculer les quantiles k1 et k2 à l’aide de R sans


avoir recours à une table de la loi du Khi-deux. Rappelez-vous que vous devez utiliser
la fonction qchisq() qui prend comme premier argument a/2 ou 1 − a/2 selon que
vous calculez k1 ou k2 et comme deuxième argument n ou encore ce qu’appelle R le df,
 degree of freedom , traduit par degré de liberté.

b) L’espérance m est inconnue


1
n
Sn2 = (X i − m
& n )2 est un estimateur de s2 et nSn2 /s2 suit la loi du Khi-deux x2 (n − 1).
n
i=1
6.3 Estimation par intervalle de confiance 271

• Intervalle de confiance
L’intervalle de confiance pour la variance s2 au niveau de confiance (1 − a) est égal à

nSn2 (obs) nS 2 (obs)


< s2 < n ,
l2 l1

où l1 et l2 sont les quantiles de la loi du Khi-deux x2 (n − 1), d’ordre qui reste à déterminer
en fonction de ce que vous souhaitez.
Exemple : vous pouvez prendre l1 égal au quantile d’ordre a/2 de la loi du Khi-deux
x2 (n − 1) et l2 égal au quantile d’ordre 1 − a/2 de la loi du Khi-deux x2 (n − 1).

Exemple : vous souhaitez construire un intervalle de confiance pour la variance s2 de la


variable taille de la glycine blanche. Pour cela, il vous faut d’abord extraire du fichier
Mesures les 54 données sur les glycines blanches. La ligne de commande suivante va
vous donner le résultat que vous souhaitez :
> glycine.blanche<-subset(Mesures,subset=(Mesures$espece==
+ "glycine blanche"))

Maintenant, il faut savoir si ces données qui forment un échantillon de taille 54 pro-
viennent d’une loi normale de paramètres m et s, tous deux inconnus. Pour cela, vous
allez réaliser un test de normalité, le test de Shapiro-Wilk, pour avoir la définition d’un
test, reportez-vous au chapitre 7, en tapant la ligne de commande suivante :
> shapiro.test(glycine.blanche$taille)

Shapiro-Wilk normality test


© Dunod – La photocopie non autorisée est un délit.

data: glycine.blanche$taille
W = 0.9798, p-value = 0.4906

La p-valeur étant strictement supérieure à a = 5 %, le test n’est pas significatif au seuil


a = 5 %. Par conséquent, vous décidez de conserver l’hypothèse nulle H0 au seuil
a = 5 %. Le risque d’erreur associé à cette décision est un risque d’erreur de deuxième
espèce b. Vous ne pouvez pas l’évaluer dans le cas présent mais il est considéré comme
satisfaisant car l’effectif de l’échantillon, auquel le test de Shapiro-Wilk est appliqué, vaut
54 et donc dépasse 30. En effet :
> length(glycine.blanche$taille)

[1] 54
272 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

Maintenant, vous allez calculer l’intervalle de confiance pour s2 à 95 %. Pour cela, vous
procédez en plusieurs étapes :
1. Calcul de l’estimation sans biais de la variance de la population.
2. Calcul des quantiles d’ordres 0,975 et 0,025 de la loi du Khi-deux à 53 degrés de
liberté.
Pour calculer l’estimation sans biais de la variance, vous tapez la ligne de commande
suivante :
> (variance<-var(glycine.blanche$taille))

Elle vous renvoie :

[1] 10.91412

Pour calculer les quantiles d’ordres 0,975 et 0,025 de la loi du Khi-deux à 53 (=54-1)
degrés de liberté, vous tapez les deux lignes de commande suivantes (vous les avez déjà
vues dans le chapitre 4) :
> qchisq(0.975,53)

[1] 75.00186

> qchisq(0.025,53)

[1] 34.77633

Maintenant, vous avez tous les éléments pour calculer les deux bornes de l’intervalle.
Vous commencez par la borne inférieure en tapant la ligne de commande suivante :
> ((length(glycine.blanche$taille)-1)*variance)/qchisq(0.975,53)

Elle vous renvoie :

[1] 7.712453

Pour obtenir la borne supérieure, vous tapez la ligne de commande suivante :


> ((length(glycine.blanche$taille)-1)*variance)/qchisq(0.025,53)

Elle vous renvoie :

[1] 16.63339
6.3 Estimation par intervalle de confiance 273

6.3.4 Proportion
Vous souhaitez construire un intervalle de confiance pour la proportion p A d’individus de
la population qui possèdent un certain caractère A. Pour estimer p A , vous allez vous servir de
l’estimateur p & n,A , qui a été défini auparavant, à partir du moment où vous faites l’hypothèse que
le tirage est aléatoire avec remise, ce qui correspond à une population infinie. D’autre part, vous
pouvez montrer que n p & n,A suit la loi binomiale de paramètres n et p A .
À partir de ce résultat, vous pouvez construire un intervalle de confiance pour la proportion p A .
Les trois méthodes pour construire un intervalle de confiance pour la proportion p A que vous
rencontrerez le plus souvent sont :
– la méthode exacte ou encore appelée la méthode de Clopper-Pearson qui maintenant est
réalisable puisque vous avez le logiciel R,
– la méthode du score également appelée la méthode de Wilson ou encore la méthode de
l’ellipse,
– la méthode asymptotique ou encore appelée la méthode de Wald.
Des études statistiques ont montré que, parmi ces trois méthodes, celle à privilégier est la
méthode du score. Néanmoins, la méthode de Wald reste très utilisée et présentée dans de
nombreux manuels alors qu’elle ne permet généralement pas d’obtenir des intervalles de
confiance de qualité convenable.

Sachez que R utilise :


B
S
U – la méthode exacte ou la méthode de Clopper-Pearson lorsqu’il calcule un intervalle de
confiance dans la fonction binom.test,
– la méthode du score ou la méthode de Wilson lorsqu’il calcule un intervalle de confiance
dans la fonction prop.test,
– les deux précédentes ou la méthode asymptotique, encore appelée méthode de Wald,
© Dunod – La photocopie non autorisée est un délit.

lorsqu’il calcule un intervalle de confiance dans la fonction binom.ci du package BioStatR.


L’option method permet de choisir laquelle des trois vous souhaitez appliquer. L’option
method="all" permet d’obtenir les trois à la fois. Si vous ne spécifiez pas de méthode, la
fonction binom.ci du package BioStatR utilise la méthode de Wilson par défaut.

Donc attendez-vous à ne pas obtenir les mêmes résultats, comme l’exemple ci-dessous va vous
le montrer puisque ce ne sont pas les mêmes méthodes de construction comme vous venez de le
voir ci-dessus. Les formules pour calculer ces intervalles vous seront données après l’exemple.
Exemple : tapez la ligne de commande suivante :

> binom.test(x=5,n=10,p=0.5,alternative=c("two.sided","less",
+ "greater"),conf.level=0.95)
274 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

Vous obtenez alors la sortie suivante :

Exact binomial test

data: 5 and 10
number of successes = 5, number of trials = 10, p-value = 1
alternative hypothesis: true probability of success is not equal
to 0.5
95 percent confidence interval:
0.1870860 0.8129140
sample estimates:
probability of success
0.5

Avec cette fonction, l’intervalle de confiance est égal à : ]0, 1870860; 0, 8129140[.
Remarque : vous pouvez aussi obtenir cet intervalle avec la fonction binom.ci du
package BioStatR. Tapez la ligne de commande suivante :
> binom.ci(x=5,n=10,conf.level=0.95,method="exact")

Elle vous donne directement comme sortie l’intervalle de confiance recherché :

PointEst Lower Upper


0.5 0.1870860 0.812914

Maintenant tapez la ligne de commande suivante :


> prop.test(x=5,n=10,p=0.5,alternative=c("two.sided","less",
+ "greater"),conf.level=0.95)

1-sample proportions test without continuity correction

data: 5 out of 10, null probability 0.5


X-squared = 0, df = 1, p-value = 1
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.2365931 0.7634069
sample estimates:
p
0.5

Elle vous donne le deuxième intervalle de confiance dans la liste ci-dessus, c’est-à-dire
celui construit à l’aide de la méthode du score. Cet intervalle de confiance est égal à :
]0,2365931; 0,7634069[.
6.3 Estimation par intervalle de confiance 275

Remarque :
1. Vous pouvez aussi obtenir cet intervalle avec la fonction binom.ci du package
BioStatR. Tapez la ligne de commande suivante :

> binom.ci(x=5,n=10,conf.level=0.95,method="Wilson")

Elle vous donne comme sortie l’intervalle de confiance directement :

PointEst Lower Upper


0.5 0.2365931 0.7634069

2. Ce dernier intervalle est plus petit que le précédent ou autrement dit il est
contenu dans le précédent.
Pour finir, vous pouvez obtenir le troisième intervalle mentionné dans la liste ci-dessus,
c’est-à-dire celui construit à l’aide de la méthode asymptotique. Pour cela, tapez la ligne
de commande suivante :

> binom.ci(x=5,n=10,conf.level=0.95,method="Wald")

PointEst Lower Upper


0.5 0.1901025 0.8098975

Remarque : cet intervalle se positionne entre les deux précédents.

• Intervalle de confiance par la méthode du score ou la méthode de Wilson


L’intervalle de confiance pour la proportion p A au niveau de confiance (1 − a) est égal
à:
© Dunod – La photocopie non autorisée est un délit.

'
2
1 & n,A (obs)(1 − p
p & n,A (obs)) u 1−a/2
& n,A (obs) + u 21−a/2 − u 1−a/2 ×
p +
2n n 4n 2
< pA
1
1 + u 21−a/2
n '
2
1 2 & n,A (obs)(1 − p
p & n,A (obs)) u 1−a/2
& n,A (obs) +
p u + u 1−a/2 × +
2n 1−a/2 n 4n 2
< ,
1
1 + u 21−a/2
n

où u 1−a/2 est le quantile d’ordre 1 − a/2 de la loi normale centrée et réduite.


276 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

• Intervalle de confiance par la méthode asymptotique ou la méthode de Wald


L’intervalle de confiance pour la proportion p A au niveau de confiance (1 − a) est égal
à:
(
& n,A (obs)(1 − p
p & n,A (obs))
& n,A (obs) − u 1−a/2 ×
p < pA
( n
& n,A (obs)(1 − p
p & n,A (obs))
<p & n,A (obs) + u 1−a/2 × ,
n
où u 1−a/2 est le quantile d’ordre 1 − a/2 de la loi normale centrée et réduite.

Remarque :
1. Il existe pour ces deux intervalles une formule avec une correction de continuité de
Yates pour tenir compte du passage d’une loi discrète à une loi continue. Donc, parfois,
vous pouvez constater un léger écart entre le calcul de cette formule si vous le réalisez
à la main et le calcul donné par un logiciel de statistique. Donc pensez à regarder ce
qui est programmé dans le manuel du logiciel que vous utilisez. R indique toujours
dans l’aide s’il utilise par défaut ou pas cette correction de continuité.
Exemple : dans la fonction prop.test, R applique par défaut cette correction de
continuité. Donc si vous ne souhaitez pas qu’il la fasse, vous devez indiquer comme
argument correct = FALSE dans la fonction prop.test.

2. Pour établir l’intervalle de confiance par la méthode de Wald, l’approximation de la


loi binomiale par la loi normale a été utilisée. Rappelez-vous que pour utiliser cette
approximation, certaines conditions doivent être remplies. Reportez-vous au chapitre 4
pour de plus amples détails.
3. Enfin, il manque la formule mathématique de l’intervalle de confiance par la méthode
de Clopper-Pearson. Elle n’a pas été présentée ici car le calcul est un peu plus compli-
qué que les deux autres. Vous pouvez néanmoins la trouver facilement sur internet.

6.3.5 Intervalle de confiance pour le paramètre l de la loi de Poisson


Soit (X 1 , . . . , X n ) un échantillon aléatoire de loi parente la loi de X où X suit la loi de Poisson
de paramètre inconnu l. Vous cherchez à construire un intervalle de confiance pour l > 0.
D’abord la première étape est d’estimer l. Vous admettrez le résultat suivant. La méthode du
maximum de vraisemblance, qui n’a pas été présentée ici, donne comme estimateur pour l :
 n
&n = 1
l Xi .
n
i=1
6.3 Estimation par intervalle de confiance 277

Remarque : il est tout à fait normal de retrouver la moyenne empirique, car c’est le
meilleur estimateur possible pour l’espérance mathématique d’une loi de Poisson qui est
justement égale au paramètre l de la loi de Poisson.

Maintenant la question est :  Quelle est la loi de & ln ?  En fait, il faut raisonner sur la loi de
la variable n &
ln qui suit la loi de Poisson de paramètre nl car n & ln est la somme de n variables
aléatoires indépendantes qui suivent la loi de Poisson de paramètre l. Cette propriété a été
établie dans le chapitre 4.
Remarquez également que vous êtes en présence d’une loi discrète : la loi de Poisson. Il faut
donc vous poser la question :  Dois-je utiliser les quantiles de la loi de Poisson pour établir un
intervalle de confiance exact ou dois-je approcher la loi de Poisson par une loi continue pour
établir un intervalle de confiance pour l ?  C’est la même question que lorsque vous avez étudié
l’estimateur d’une proportion ci-dessus. La réponse est en deux temps :
– longtemps, l’approximation de la loi de Poisson par la loi du Khi-deux a été utilisée, puisque
les utilisateurs avaient plus souvent à leur disposition les tables de la loi du Khi-deux,
– actuellement, avec des logiciels comme le logiciel R, vous pouvez construire un intervalle
de confiance exact mais cet intervalle, comme pour la proportion est très conservatif.
• Intervalle de confiance approché
L’intervalle de confiance pour le paramètre l au niveau de confiance (1 − a) est égal à :

1 2 1 2 
x <l< x ,
2n 2n &ln ;a/2 2n 2 n &ln +1 ;1−a/2

où x22n &l est le quantile d’ordre a/2 de la loi du Khi-deux à 2n &ln degrés de liberté et
n ;a/2  
x2  est le quantile d’ordre 1 − a/2 de la loi du Khi-deux à 2 n &
ln + 1 degrés
2 n&
ln +1 ;1−a/2
© Dunod – La photocopie non autorisée est un délit.

de liberté.
La fonction poi.ci du package BioStatR calcule pour vous cet intervalle. Il vous suffit de lui
rentrer l’échantillon sur lequel vous travaillez.
Exemple : pour un exemple d’utilisation de cette fonction et de calcul de cet intervalle,
vous êtes renvoyé à l’exercice 3 de ce chapitre.
278 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

EN RÉSUMÉ

Commande Description
subset Permet d’extraire une partie d’un tableau de données.
shapiro.test Permet de réaliser un test de normalité de Shapiro-Wilk.
t.test Permet de calculer un intervalle de confiance pour une moyenne.
binom.test Permet de calculer un intervalle de confiance exact pour une proportion.
prop.test Permet de calculer un intervalle de confiance pour une proportion
avec la méthode du score.
binom.ci Permet de calculer un intervalle de confiance pour une proportion
avec les trois méthodes du cours.
poi.ci Permet de calculer un intervalle de confiance pour le paramètre l
de la loi de Poisson.

EXERCICES

Exercice 6.1 Les plantes marines

Le but de cet exercice est de mettre en application les formules d’estimation ponctuelle de
l’espérance et de l’écart-type puis de les calculer avec R en se servant des fonctions qui
existent sous cet environnement. Il vous sera aussi demandé de calculer des intervalles de
confiance pour chacune de ces estimations avec les fonctions de R qui s’y rapportent.

Un étudiant en deuxième année de licence de biologie s’intéresse à un type d’algue qui attaque
les plantes marines. La toxine contenue dans cette algue est obtenue sous forme d’une solution
organique. Il mesure la quantité de toxine par gramme de solution. Il a obtenu les neuf mesures
suivantes, exprimées en milligrammes :
1, 2; 0, 8; 0, 6; 1, 1; 1, 2; 0, 9; 1, 5; 0, 9; 1, 0.
Des expériences précédentes ont permis de montrer que ces valeurs sont les réalisations de
variables aléatoires indépendantes et identiquement distribuées suivant la loi normale d’espé-
rance m et d’écart-type s > 0.
1) Donnez une estimation ponctuelle de l’espérance m et de l’écart-type s de la quantité de
toxine par gramme de solution.
Exercices 279

2) Déterminez un intervalle de confiance à 95 % pour l’espérance m de la quantité de toxine par


gramme de solution.
3) L’étudiant en deuxième année de licence de biologie trouve que l’intervalle de confiance
obtenu n’est pas satisfaisant car l’intervalle est trop étendu. Que doit-il faire pour obtenir un
intervalle de confiance plus étroit ?
4) Déterminez un intervalle de confiance à 95 % pour la variance s2 de la quantité de toxine par
gramme de solution puis déduisez-en un intervalle de confiance à 95 % pour l’écart-type s.

Exercice 6.2 Vaccin contre l’hépatite B

Cet exercice pose une question très intéressante et qui revient très souvent : le calcul de la
taille d’un échantillon avant enquête. Il est très difficile de calculer la taille d’un échantillon
pour diverses raisons. En particulier, si vous cherchez à résoudre l’équation, vous verrez que
très vite, vous êtes en présence de plusieurs inconnues. Donc il faut que vous fassiez plusieurs
hypothèses, ce qui amène souvent à des discussions. Il vous est conseillé de consulter des
ouvrages spécialisés si le sujet vous intéresse. Ici, le cadre de l’exercice vous permet de
calculer une taille mais uniquement parce que vous avez à disposition plusieurs informations
a priori, ce qui ne sera pas toujours le cas.

Depuis 1982, l’infection par le virus de l’hépatite B peut être évitée grâce à un vaccin. Le
vaccin ne guérit pas les porteurs chroniques, mais il est efficace de 90 à 95 % pour prévenir
l’apparition de cet état. Par conséquent, le pourcentage d’échecs est compris entre 5 et 10 %. Un
laboratoire de recherche prépare une nouvelle expérience pour connaître à ±1 %, le pourcentage
de sujets non immunisés en acceptant un coefficient de risque a égal à 5 %. Combien de sujets
© Dunod – La photocopie non autorisée est un délit.

le laboratoire doit-il convoquer ?

Exercice 6.3 Les deux types de glycines

Cet exercice est un exercice moins classique que les précédents. En effet, son but est de vous
faire calculer un intervalle de confiance autour du paramètre inconnu l de la loi de Poisson.

Lors du comptage des graines qui sont à l’intérieur des gousses de glycine blanche et de
glycine violette, le jardinier suppose que le nombre de graines de chaque gousse de glycine aussi
bien blanche que violette suit la loi de Poisson de paramètre inconnu l. Le jardinier aimerait bien
estimer ce paramètre l. Pour cela, le jardinier décide d’aller consulter un étudiant en première
280 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

année de licence de biologie. Il lui montre son tableau de résultats :

k 0 1 2 3 4 5 6 7 8 et +
nk 0 11 41 27 16 10 2 3 0

où k désigne le nombre de graines contenues dans une gousse de glycine et n k le nombre de


gousses qui contiennent k graines. L’étudiant en licence de biologie se souvient de son cours
sur les lois discrètes (chapitre 4) et en particulier que le paramètre l est égal à l’espérance
mathématique d’une variable aléatoire qui suit la loi de Poisson de paramètre l. Il propose donc
d’utiliser la méthode des moments et d’estimer l par la moyenne empirique de l’échantillon
que lui a apporté le jardinier3 .
1) Calculez alors cette estimation du paramètre l.
2) Le jardinier aimerait non pas une estimation ponctuelle mais un intervalle de confiance. Est-ce
que l’étudiant peut lui en construire un ? Si non, pourquoi ? Si oui, pourquoi ?

PROBLÈME

Problème 6.1 Encore et toujours les glycines blanches


Le jardinier suppose que la taille d’une gousse de glycine blanche dans la population des glycines
blanches suit la loi normale d’espérance m et d’écart-type s > 0 inconnus.
Pour estimer l’espérance m de la variable  taille d’une gousse de glycine blanche  dans la
population des glycines blanches qui poussent dans la région du Languedoc-Roussillon, un
étudiant en première année de licence de biologie, souhaite étudier la taille des 54 gousses de
glycine blanche récoltées sur le terrain du jardinier.
Pour cela, il va devoir aller consulter le fichier Mesures et extraire les données sur les glycines
blanches.
1) Quelle est la ligne de commande qui permet d’extraire les 54 données sur les glycines
blanches ?
2) L’étudiant aimerait construire plusieurs représentations graphiques adaptées aux 54 données
qu’il a sélectionnées. Que lui conseillez-vous comme représentations et pourquoi ? Quelles sont

3. Comme vous pouvez le constater, la méthode des moments et la méthode du maximum de vraisemblance (voir
paragraphe 6.3.5) permettent de construire le même estimateur, qui s’avère être sans biais, pour le paramètre l de la
loi de Poisson.
Problème 281

les lignes de commande que l’étudiant doit taper pour obtenir les représentations graphiques
attendues ?
3) À partir des représentations graphiques obtenues précédemment, l’étudiant en première année
de licence de biologie et le jardinier font les deux constats suivants :
– la taille d’une gousse de glycine blanche est comprise entre 8 et 22 centimètres,
– la distribution de la variable  taille d’une gousse de glycine blanche  semble être symé-
trique. Donc la supposition du jardinier qui est celle que  la taille d’une gousse de glycine
blanche suit la loi normale d’espérance m et d’écart-type s > 0  ne semble pas être
déraisonnable.
Êtes-vous d’accord avec les deux constats qu’ont fait l’étudiant et le jardinier ?
4) L’étudiant suggère au jardinier de procéder à un test de normalité sur la variable taille du
jeu de données glycine pour vérifier cette hypothèse avancée. Pour cela, l’étudiant retourne
aux rappels de cours de ce chapitre et trouve comment réaliser un test de normalité. Quelle est la
commande qu’a tapée l’étudiant ? Exécutez-la. Quel résultat obtenez-vous et que concluez-vous
sur l’hypothèse qu’a faite le jardinier, à savoir  la taille d’une gousse de glycine blanche dans
la population des glycines blanches suit une loi normale  ?
5) Maintenant, il va étudier la variable  taille d’une gousse de glycine blanche  en la regroupant
par classes comme il a appris dans son cours. Il va utiliser le logiciel R et en particulier le
groupement par classes par défaut que propose R car il n’a pas d’idée précise du groupement
par classes qu’il pourrait proposer. Comment procède-t-il à votre avis ? Quel est le résultat qu’il
obtient ?
À l’issue de cette analyse préliminaire, voici les questions que se pose maintenant l’étudiant :
6) Comment puis-je calculer à partir de ces données, une estimation ponctuelle de l’espérance
m et de l’écart-type s > 0 de la variable taille ?
7) Comment puis-je construire un intervalle de confiance à 95 % pour l’espérance m de la
© Dunod – La photocopie non autorisée est un délit.

variable taille d’une gousse de glycine blanche ?


8) L’étudiant désirant améliorer sa connaissance de l’espérance m pense augmenter la taille
de son échantillon en se rendant sur le terrain du jardinier. En supposant que l’écart-type s
de la population est connu par le jardinier et qu’il vaut 4 centimètres, combien de  haricots 
l’étudiant doit ramasser pour diviser par deux la précision de l’intervalle de confiance à 95 %
pour l’espérance m obtenue dans la question précédente ?
Pouvez-vous aider cet étudiant en première année de licence de biologie à répondre à ces trois
questions ?
282 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

DU MAL À DÉMARRER

➩ Exercice 6.1
1) Relisez les paragraphes 6.2.4 et 6.2.5.
2) Relisez le paragraphe 6.3.2.
3) Étudiez l’influence de la variation de l’effectif de l’échantillon sur la largeur de l’inter-
valle de confiance.
4) Relisez le paragraphe 6.3.3. Utilisez le lien entre l’écart-type et la variance.

➩ Exercice 6.2
Relisez le paragraphe 6.3.4.

➩ Exercice 6.3
1) Relisez le paragraphe 6.3.5.
2) Relisez le paragraphe 6.3.5.

➩ Problème 6.1
1) Utilisez la fonction subset.
2) Utilisez la fonction hist.
3) L’histogramme paraît-il symétrique ?
4) Utilisez la fonction shapiro.test.
5) Utilisez les résultats breaks et counts obtenus à l’aide de la fonction hist.
6) Utilisez les fonctions mean et sd.
7) Utilisez la fonction t.test.
8) Servez-vous du résultat de la question 7 puis relisez le paragraphe 6.3.2.a.
Solution des exercices 283

SOLUTION DES EXERCICES

Exercice 6.1
1) Vous commencez par rentrer le vecteur des données :

> toxine<-c(1.2,0.8,0.6,1.1,1.2,0.9,1.5,0.9,1.0)

Puis vous vérifiez la structure des données en tapant :

> str(toxine)

num [1:9] 1.2 0.8 0.6 1.1 1.2 0.9 1.5 0.9 1

Ensuite, vous pouvez commencer à répondre aux deux questions. La première en tapant la ligne
de commande suivante :

> mean(toxine)

[1] 1.022222

Donc une estimation ponctuelle non biaisée de l’espérance m est égale à 1,022222 mg.
Pour obtenir une estimation ponctuelle de l’écart-type s, vous tapez la ligne de commande
suivante :

> sd(toxine)
© Dunod – La photocopie non autorisée est un délit.

[1] 0.2635231

Donc une estimation ponctuelle de l’écart-type s est égale à 0,2635231mg.


2) Pour déterminer un intervalle de confiance à 95 % pour l’espérance m (sous l’hypothèse de
normalité qui est valide dans ce cas car prouvée lors d’expériences antérieures), tapez la ligne
de commande suivante :

> t.test(toxine)

One Sample t-test

data: toxine
t = 11.6372, df = 8, p-value = 2.708e-06
284 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

alternative hypothesis: true mean is not equal to 0


95 percent confidence interval:
0.8196604 1.2247840
sample estimates:
mean of x
1.022222

Donc l’intervalle de confiance à 95 % pour l’espérance m est égal à : ]0,8196604 mg; 1,2247840 mg[.
3) L’étudiant en deuxième année de licence de biologie doit augmenter la taille de l’échantillon.
4) Pour calculer l’intervalle de confiance à 95 % pour la variance s2 de la quantité de toxine
(sous l’hypothèse de normalité qui est valide dans ce cas car prouvée lors d’expériences anté-
rieures), tapez les lignes de commande suivantes :

> variance<-var(toxine)
> ((length(toxine)-1)*variance)/qchisq(0.975,8)

Elles vous renvoient :

[1] 0.03168349

Puis vous tapez la ligne de commande :

> ((length(toxine)-1)*variance)/qchisq(0.025,8)

Elle vous renvoie :

[1] 0.2548735

Donc l’intervalle de confiance à 95 % pour la variance s2 de la quantité de toxine est égal à :


]0,03168349 mg2 ; 0,2548735 mg2 [.
Pour calculer un intervalle de confiance à 95 % pour l’écart-type s de la quantité de toxine, il
suffit de prendre la racine carrée de chacune des bornes de l’intervalle.

> sqrt(((length(toxine)-1)*variance)/qchisq(0.975,8))

[1] 0.1779986
Solution des exercices 285

> sqrt(((length(toxine)-1)*variance)/qchisq(0.025,8))

[1] 0.50485

Donc l’intervalle de confiance à 95 % pour l’écart-type s de la quantité de toxine est égal à :


]0,1779986 mg; 0,50485 mg[.

B
– La fonction t.test pour construire des intervalles de confiance d’une espérance d’une loi
S normale.
U
– Comment construire un intervalle de confiance pour l’écart-type d’une loi normale.

Exercice 6.2 Soit p le pourcentage de sujets non immunisés après la vaccination dans la
population. Vous souhaitez construire un intervalle de confiance pour la proportion p au risque
a = 5 %, dont l’amplitude soit égale au maximum à 2 %. Si la taille de l’échantillon dépasse
30, alors vous pouvez appliquer l’approximation
√ de la loi binomiale de paramètres n et p par la
loi normale de paramètres np et np(1 − p). Vous devez donc résoudre l’inéquation suivante :
(
p(1 − p)
2 × u 0,975 ×  0, 02,
n

où u 0,975 est égal à 1, 959964, que vous arrondirez à 1,96. Cette inégalité se transforme alors :

n  38416 p(1 − p).

Pour p dans [0, 05; 0, 1], la fonction f qui à p associe p(1 − p), est strictement croissante sur
cet intervalle. En effet, vous avez que f  ( p) = −2 p + 1 qui s’annule et change de signe en
p = 0, 5. Donc sur l’intervalle [0; 0, 5], f est strictement croissante et sur l’intervalle [0, 5; 1],
f est strictement décroissante. Donc f ( p)  f (0, 1) avec f (0, 1) = 0, 1 × 0, 9 = 0, 09. Donc il
faut que n vérifie :
n  38 416 × 0, 09,

ou encore :
n  3 458.

Le laboratoire doit convoquer au moins 3 458 sujets.

Comment évaluer l’effectif de l’échantillon à constituer en fonction de la précision de


B l’estimation.
S
U
286 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

Exercice 6.3
1) Calculez l’estimation ponctuelle sans biais de l en tapant les deux lignes de commande
suivantes :

> lambda_n<-((1*11+2*41+3*27+4*16+5*10+6*2+7*3)/110)
> lambda_n

R vous renvoie alors :

[1] 2.918182

Donc une estimation du paramètre l est égale à 2, 918182, ce qui peut s’interpréter comme, en
moyenne, il y a trois graines dans une gousse de glycine.
2) Oui, l’étudiant peut construire un intervalle de confiance pour le paramètre l. Il peut utiliser
l’approximation mentionnée dans les rappels de cours, à savoir l’approximation par une loi du
x2 . En tapant les deux lignes de commande suivantes :

> echantillon<-rep(0:8,c(0,11,41,27,16,10,2,3,0))
> echantillon

[1] 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[32] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
[63] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4
[94] 4 4 5 5 5 5 5 5 5 5 5 5 6 6 7 7 7

Puis la ligne de commande :

> poi.ci(echantillon)

L’étudiant pourra répondre au jardinier :

PointEst 95% LCI 95% UCI


[1,] 2.918182 2.607644 3.255524

L’intervalle de confiance à 95 % pour le paramètre l est égal à : ]2, 607644; 3, 255524[. Remar-
quez que l’estimation ponctuelle que vous avez calculée à la question précédente appartient bien
à cet intervalle.

La fonction poi.ci.
B
S
U
Solution du problème 287

SOLUTION DU PROBLÈME

Problème 6.1
1) La ligne de commande qui permet d’extraire les 54 données sur les glycines blanches est la
suivante :

> glycine<-subset(Mesures,subset=(Mesures$espece=="glycine blanche"))

2) Il faut suggérer à l’étudiant de tracer un histogramme et une boîte à moustaches puisque la


variable sur laquelle il travaille est une variable quantitative continue. L’étudiant doit taper les
deux lignes de commande suivantes pour construire l’histogramme des 54 données :

> layout(t(1:2))
> histo<-hist(glycine$taille,ylab="Nombre de gousses de glycine blanche",
+ main="Histogramme de la taille d’une gousse de glycine blanche",
+ xlab="Taille d’une gousse de glycine blanche en cm")

L’étudiant doit taper les deux lignes de commande suivantes pour dessiner la boîte à mous-
taches des 54 données à droite de l’histogramme :

> boxplot(glycine$taille,ylab="Taille d’une gousse de glycine blanche en cm",


+ main="Bo^
ıte à moustaches de la taille d’une gousse de glycine blanche")
> layout(1)

Il obtient alors la figure 6.2. Dans ces lignes de commande, vous pouvez noter l’introduction
d’une nouvelle fonction layout. Cette dernière modifie la fenêtre graphique. Elle permet de
juxtaposer plusieurs graphiques aux endroits que vous indiquez et le tout sur la même fenêtre.
Enfin, n’oubliez pas de taper layout(1) pour supprimer la partition de la fenêtre graphique
que vous aurez mise en place.
288 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

Figure 6.2

3) En observant l’histogramme et la boîte à moustaches obtenus à la question précédente, vous


constatez que :
– la  taille d’une gousse de glycine blanche  est comprise entre 8 et 22 centimètres,
– et que la distribution associée à la taille d’une gousse de glycine blanche semble être
symétrique.
4) La ligne de commande utilisée par l’étudiant est la suivante :

> shapiro.test(glycine$taille)

Vous obtenez en la tapant le résultat suivant :

Shapiro-Wilk normality test

data: glycine$taille
W = 0.9798, p-value = 0.4906
Solution du problème 289

La p-valeur étant strictement supérieure à a = 5 %, le test n’est pas significatif au seuil


a = 5 %. Par conséquent, vous décidez de ne pas rejeter l’hypothèse nulle H0 au seuil a = 5 %,
à savoir que la variable  taille d’une gousse de glycine blanche  suit une loi normale. Le
risque d’erreur associé à cette décision est un risque d’erreur de deuxième espèce b. Vous ne
pouvez pas l’évaluer dans le cas présent mais il est considéré comme satisfaisant car l’effectif de
l’échantillon, auquel le test de Shapiro-Wilk est appliqué, vaut 54 et donc dépasse 30. En effet :

> length(glycine$taille)

[1] 54

L’étudiant peut donc continuer de penser que l’hypothèse du jardinier n’est pas déraisonnable.
5) L’étudiant a tapé la ligne de commande que vous commencez à bien connaître :

> classes<-histo$breaks
> classes

Le résultat obtenu est le suivant :

[1] 8 10 12 14 16 18 20 22

Puis l’étudiant a certainement tapé :

> effectifs<-histo$counts
> effectifs

Il a obtenu :
© Dunod – La photocopie non autorisée est un délit.

[1] 4 7 11 13 9 7 3

6) Pour calculer une estimation ponctuelle non biaisée de l’espérance m de la variable taille,
il vous suffit de taper la ligne de commande suivante :

> mean(glycine$taille)

[1] 14.77222

Donc une estimation ponctuelle non biaisée de l’espérance m est égale à 14,77222 cm.
Pour calculer une estimation ponctuelle de l’écart-type s de la variable taille, il vous suffit de
taper la ligne de commande suivante :
290 6 • Échantillonnage. Estimation d’un paramètre. Estimation par intervalle de confiance

> sd(glycine$taille)

[1] 3.303652

Donc une estimation ponctuelle de l’écart-type s est égale à 3,303652 cm.


7) Pour construire un intervalle de confiance à 95 % pour l’espérance m de la variable taille,
vous devez taper la ligne de commande suivante :

> t.test(glycine$taille)

One Sample t-test

data: glycine$taille
t = 32.8585, df = 53, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
13.87050 15.67395
sample estimates:
mean of x
14.77222

L’intervalle de confiance à 95 % pour l’espérance m de la variable taille est égal à :


]13,87050 cm; 15,67395 cm[.
8) L’écart-type s de la population est connu et vaut 4 cm. Vous allez donc utiliser ici la formule
de l’intervalle de confiance pour m dans le cas où l’écart-type s est connu. L’étendue de
s
l’intervalle dans ce cas est égale à 2 × u 1−a/2 × √ . D’autre part, l’étendue de l’intervalle
n
obtenu à la question précédente est égale à :

> 15.67395-13.87050

ce qui donne :

[1] 1.80345
Solution du problème 291

Ce qui est demandé c’est que cette précision doit être deux fois plus petite, donc égale à :

> 1.80345/2

ce qui est égal à :

[1] 0.901725
4
Donc, vous souhaitez que 2 × 1, 96 × √ soit égal à 0,901725. Par conséquent, n doit être égal
n
 2
8 × 1, 96
à , ou encore :
0, 901725
> ((8*1.96)/((15.67395-13.87050)/2))12

ou encore :

[1] 302.3736

Donc l’étudiant en première année de licence de biologie doit ramasser 249 gousses en plus des
54 qu’il possède déjà.
– La fonction shapiro.test.
B
S
U – Comment évaluer l’effectif de l’échantillon à constituer en fonction de la précision souhaitée
de l’estimation.
Chapitre 7

Tests paramétriques
et non paramétriques

How often have I said to you that when you have eliminated the impossible, whatever remains,
however improbable, must be the truth. 
De Sir Arthur Conan Doyle, The Sign of the Four, chapitre 6, 1890.

Objectifs de ce chapitre
➤ présenter la méthodologie des tests statistiques
➤ tests paramétriques
➤ tests non paramétriques
➤ puissance d’un test statistique

7.1 INTRODUCTION À LA NOTION DE TESTS


7.1.1 Hypothèses et erreurs

Définition 7.1 Un test d’hypothèse, ou test statistique, est un mécanisme qui permet de tran-
cher entre deux hypothèses à la vue des résultats d’un échantillon, en cherchant à quantifier le
risque associé à la décision prise.
Soient H0 et H1 deux hypothèses, dont une et une seule est vraie. L’hypothèse nulle H0
joue le plus souvent un rôle prédominant par rapport à l’hypothèse alternative H1 . Cela est
7.1 Introduction à la notion de tests 293

la conséquence du fait que l’hypothèse nulle H0 est l’hypothèse de référence et que toute la
démarche du test s’effectue en considérant cette hypothèse comme vraie.
Exemple : vous pouvez avoir comme hypothèse nulle H0 : m = m0 et, dans ce cas, une
hypothèse alternative pourrait être H1 : m = m0 .

La décision d’un test consiste à choisir entre H0 et H1 . Il y a donc quatre cas possibles qui
sont détaillés dans le tableau ci-dessous :

H0 vraie H1 vraie
H0 décidée 1−a b
H1 décidée a 1−b

où a et b sont les risques d’erreur de première et de deuxième espèce.


Définition 7.2 L’erreur de première espèce est le fait de décider que l’hypothèse alternative
H1 est vraie alors qu’en fait, en réalité, c’est l’hypothèse nulle H0 qui est vraie. Le risque
d’erreur associé à cette décision est noté généralement a. Il s’agit donc de la probabilité de
décider à tort que l’hypothèse alternative H1 est vraie.
Définition 7.3 L’erreur de deuxième espèce est le fait de décider de continuer, par défaut,
à considérer que l’hypothèse nulle H0 est vraie alors qu’en fait, en réalité, c’est l’hypothèse
alternative H1 qui est vraie. Le risque d’erreur associé à cette décision est noté généralement
b. Il s’agit donc de la probabilité de décider à tort que l’hypothèse nulle H0 est vraie.
La situation idéale serait que ces deux erreurs soient nulles mais ce n’est pas possible. Pire
encore, ces deux erreurs sont antagonistes. En effet, plus le risque d’erreur a est grand (respecti-
vement petit), plus le risque d’erreur b est petit (respectivement grand).
Depuis les travaux de Neyman et Pearson en 1933, l’erreur de première espèce est limitée à un
niveau dit niveau de significativité. Les valeurs les plus courantes pour a sont 10 %, 5 % ou
© Dunod – La photocopie non autorisée est un délit.

1 %. Le fait d’imposer a faible conduit à une règle de décision plus stricte. En effet, dans ce cas,
la décision consiste à abandonner l’hypothèse nulle H0 dans des cas rarissimes et à conserver
plus souvent à tort, l’hypothèse nulle H0 .
Définition 7.4 La puissance d’un test statistique est égale à 1 − b ou encore la puissance est
la probabilité de rejeter l’hypothèse nulle H0 à raison.
Vous pouvez calculer la puissance à l’aide de différentes fonctions, chacune d’entre elles étant
associée aux tests que vous venez de réaliser.
Exemple : vous trouverez power.t.test et power.prop.test dans le package
stats, installé de base dans R. En installant le package pwr, vous trouverez alors
pwr.norm.test, pwr.r.test, pwr.chisq.test et pwr.anova.test. Vous trouverez
également dans ce package pwr.t2n.test qui travaille sur deux échantillons de taille
différente, ce que ne fait pas power.t.test.
294 7 • Tests paramétriques et non paramétriques

Généralement la puissance 1 − b doit au moins être égale à 0,80 pour être considérée comme
B satisfaisante.
S
U

7.1.2 Tests bilatéral et unilatéral


Avant d’appliquer tout test statistique, il s’agit de bien définir le problème posé. En effet, selon
les hypothèses formulées, vous appliquerez soit un test bilatéral, soit un test unilatéral.
Définition 7.5 Un test est dit bilatéral quand la zone d’acceptation du test est encadrée par
deux zones de rejet. Par exemple si vous cherchez une différence entre deux paramètres, ou entre
un paramètre et une valeur donnée sans se préoccuper du signe ou du sens de la différence.
Définition 7.6 Un test est dit unilatéral quand la zone de rejet du test est située d’un seul côté
de la zone d’acceptation. Par exemple si vous cherchez à savoir si un paramètre est supérieur
(ou inférieur) à un autre ou à une valeur donnée.

Exemple : certains tests comme les tests du Khi-deux (chapitre 8) ou le test de Fisher
dans une analyse de la variance (chapitre 10) sont pratiquement toujours unilatéraux.

7.1.3 Statistique de test


Le risque d’erreur de première espèce a étant fixé, il faut choisir une variable de décision
encore appelée statistique de test. Cette variable est construite afin d’apporter de l’information
sur le problème posé, à savoir le choix entre les deux hypothèses. Dans la plupart des cas, sa loi
est parfaitement déterminée dans au moins une des deux hypothèses (le plus souvent dans H0 )
afin de ne pas introduire de nouvelles inconnues dans le problème.

7.1.4 Région critique et région d’acceptation

Définition 7.7 La région critique du test notée W (W pour wrong), ou encore appelée zone
de rejet du test est égale à l’ensemble des valeurs de la variable de décision qui conduisent à
écarter H0 au profit de H1 . La région critique du test correspond donc aux intervalles dans
lesquels les différences sont trop grandes pour être le fruit du hasard d’échantillonnage.

Remarque : dans la plupart des situations que vous rencontrerez dans la suite, la région
critique W peut être reliée au risque d’erreur de première espèce a par PH0 (W ) = a.

Définition 7.8 La région d’acceptation du test notée W , ou encore appelée zone d’accepta-
tion du test, est la région complémentaire de la région critique W . Elle correspond à l’intervalle
dans lequel les différences observées entre les réalisations et la théorie sont attribuables aux
fluctuations d’échantillonnage.
7.1 Introduction à la notion de tests 295

Remarque : dans la plupart des situations que vous rencontrerez dans la suite, la
région
 d’acceptation
 W peut être reliée au risque d’erreur de première espèce a par
PH0 W = 1 − a.

7.1.5 La démarche à suivre pour la mise en place d’un test


• Comment réaliser un test et conclure à l’aide d’une région critique ?
1. Choix des deux hypothèses H0 et H1 .
2. Détermination de la variable de décision.
3. Allure de la région critique en fonction de H1 : test bilatéral ou unilatéral.
4. Calcul de la région critique en fonction de a.
5. Calcul de la variable de décision observée sur l’échantillon.
6. Conclusion du test. Si la valeur calculée au point 5. appartient à la région construite en
4., le test est significatif au seuil a. Vous rejetez l’hypothèse nulle H0 au seuil a et vous
décidez que l’hypothèse alternative H1 est vraie au seuil a. Le risque associé à cette
décision est un risque d’erreur de première espèce qui vaut a. Si la valeur calculée en 5.
n’appartient pas à la région construite en 4., le test n’est pas significatif au seuil a. Vous
conservez l’hypothèse nulle H0 par défaut au seuil a. Le risque associé à cette décision
est un risque d’erreur de deuxième espèce qui vaut b. Pour l’évaluer, il faudrait calculer
la puissance 1 − b du test.
7. Calcul de la puissance 1 − b du test lorsque le test n’est pas significatif au seuil a.
• Comment réaliser un test et conclure à l’aide d’une p-valeur1 ?
1. Choix des deux hypothèses H0 et H1 .
2. Détermination de la variable de décision.
© Dunod – La photocopie non autorisée est un délit.

3. Calcul de la p-valeur à partir des données de l’échantillon.


4. Conclusion du test. Si la p-valeur est inférieure ou égale au seuil a, le test est significatif
au seuil a. Vous rejetez l’hypothèse nulle H0 au seuil a et vous décidez que l’hypothèse
alternative H1 est vraie au seuil a. Le risque associé à cette décision est un risque
d’erreur de première espèce qui vaut a. Si la p-valeur est strictement supérieure à a, le
test n’est pas significatif au seuil a. Vous conservez l’hypothèse nulle H0 par défaut au
seuil a. Le risque associé à cette décision est un risque d’erreur de deuxième espèce qui
vaut b. Pour l’évaluer, il faudrait calculer la puissance 1 − b du test.
5. Calcul de la puissance 1 − b du test lorsque celui-ci n’est pas significatif au seuil a.

1. Pour une définition de la p-valeur, nous renvoyons le lecteur au livre Mathématiques pour les sciences de
l’ingénieur de F. Bertrand et M. Maumy-Bertrand, Dunod, 2013, et en particulier à la p. 460.
296 7 • Tests paramétriques et non paramétriques

Remarque : la conclusion du test à l’aide d’une p-valeur est toujours obtenue de la


même manière quel que soit le test. C’est l’intérêt de cette approche qui a grandement
simplifié la vie des utilisateurs de la statistique ! Par conséquent, dans la suite, lorsque
nous introduirons chacun des tests, nous ne présenterons que la décision à l’aide d’une
région critique mais nous nous servirons de la p-valeur dans les exemples dès que cela
sera possible.

7.1.6 Choix d’un test


Plusieurs tests de conception très différente sont souvent disponibles pour soumettre à une
épreuve de vérité une hypothèse.

Définition 7.9 Le test le plus puissant est le test qui fournit l’erreur b la plus petite, pour une
même valeur du seuil a ou encore qui fournit la plus grande valeur de la puissance 1 − b.

En effet, il peut détecter les plus petites différences entre les populations sans pour autant
augmenter le seuil a.
La majorité des tests statistiques repose sur le respect d’un certain nombre de conditions.
Selon le degré de respect de ces conditions d’utilisation, la validité des résultats se trouve plus
ou moins affectée et elle l’est d’autant plus que le test est moins robuste.

Définition 7.10 La robustesse d’un test équivaut à sa tolérance vis-à-vis du non-respect des
conditions d’application du test.

Vous pouvez disposer de plusieurs tests pour vérifier une même hypothèse. En fonction du
B contexte, il faudra penser à utiliser le plus puissant d’entre eux. Vous apprendrez bientôt les
S
U
différentes caractéristiques des tests les plus fréquemment utilisés.

Remarque :
1. Les tests peu puissants augmentent la probabilité de commettre une erreur de deuxième
espèce. Or, cette erreur peut s’avérer particulièrement grave.
Exemple : en effet, en médecine, considérez une analyse statistique qui permettrait de
décider si un patient est sain (H0 ) ou malade (H1 ). Classer comme malade un sujet
bien portant (risque d’erreur de première espèce), peut avoir des conséquences aussi
graves que classer comme bien portant un sujet malade (risque d’erreur de deuxième
espèce).

2. Pour évaluer la puissance d’un test, vous pourrez être amené à utiliser des courbes de
puissance ou encore appelées abaques.
7.2 Tests de comparaison avec une norme 297

7.2 TESTS DE COMPARAISON AVEC UNE NORME


Pour bien appréhender ce chapitre, il vous est conseillé de connaître les différents estimateurs
du chapitre 6. Dans ce qui suit, quelques tests classiques vont être présentés. Cette liste ne se
veut pas exhaustive.

7.2.1 Test de l’espérance d’une loi normale de variance connue


Soit X une variable aléatoire qui suit la loi normale d’espérance m et de variance s2 > 0 connue.
• Test unilatéral de supériorité
Hypothèses du test :
vous souhaitez choisir entre les deux hypothèses suivantes :
H0 : m = m0
contre
H1 : m > m0 .
Conditions d’application du test :
il faut que l’échantillon x1 , ..., xn soit des réalisations indépendantes de la variable aléatoire
X qui suit la loi normale N (m; s) de variance s2 > 0 connue.
Statistique du test :
& n − m0
m
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire Z = √ suit la loi
s/ n
normale N (0; 1).
Décision et conclusion du test :
la valeur critique du test, notée c1−a , est lue dans une table de la loi normale centrée et
réduite. Si la valeur de la statistique calculée sur l’échantillon, notée Z (obs), est supérieure
ou égale à c1−a , alors le test est significatif au seuil a. Vous rejetez l’hypothèse nulle H0 au
seuil a et vous décidez que l’hypothèse alternative H1 est vraie au seuil a avec un risque
© Dunod – La photocopie non autorisée est un délit.

d’erreur de première espèce a . Si la valeur de la statistique calculée sur l’échantillon,


notée Z (obs), est strictement inférieure à c1−a , alors le test n’est pas significatif au seuil
a. Vous conservez l’hypothèse nulle H0 au seuil a avec un risque d’erreur de deuxième
espèce b qu’il faut évaluer.
• Test unilatéral d’infériorité
Hypothèses du test :
vous souhaitez choisir entre les deux hypothèses suivantes :
H0 : m = m0
contre
H1 : m < m0 .
298 7 • Tests paramétriques et non paramétriques

Conditions d’application du test :


il faut que l’échantillon x1 , ..., xn soit des réalisations indépendantes de la variable aléatoire
X qui suit la loi normale N (m; s) de variance s2 > 0 connue.
Statistique du test :
& n − m0
m
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire Z = √ suit la loi
s/ n
normale N (0; 1).
Décision et conclusion du test :
la valeur critique du test, notée ca , est lue dans une table de la loi normale centrée et réduite.
Si la valeur de la statistique calculée sur l’échantillon, notée Z (obs), est inférieure ou égale
à ca , alors le test est significatif au seuil a. Vous rejetez l’hypothèse nulle H0 et vous
décidez que l’hypothèse alternative H1 est vraie avec un risque d’erreur de première espèce
a. Si la valeur de la statistique calculée sur l’échantillon, notée Z (obs), est strictement
supérieure à ca , alors le test n’est pas significatif au seuil a. Vous conservez l’hypothèse
nulle H0 au seuil a avec un risque d’erreur de deuxième espèce b qu’il faut évaluer.
• Test bilatéral
Hypothèses du test :
vous souhaitez choisir entre les deux hypothèses suivantes :
H0 : m = m0
contre
H1 : m = m0 .
Conditions d’application du test :
il faut que l’échantillon x1 , . . . , xn soit des réalisations indépendantes de la variable aléa-
toire X qui suit la loi normale N (m; s) de variance s2 > 0 connue.
Statistique du test :
& n − m0
m
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire Z = √ suit la loi
s/ n
normale N (0; 1).
Décision et conclusion du test :
la valeur critique du test, notée c1−a/2 , est lue dans une table de la loi normale centrée et
réduite. Si la valeur absolue de la valeur de la statistique calculée sur l’échantillon, notée
Z (obs), est supérieure ou égale à c1−a/2 , alors le test est significatif au seuil a. Vous rejetez
H0 au seuil a et vous décidez que H1 est vraie au seuil a avec un risque d’erreur de pre-
mière espèce a. Si la valeur absolue de la valeur de la statistique calculée sur l’échantillon,
notée Z (obs), est strictement inférieure à c1−a/2 , alors le test n’est pas significatif au seuil
a. Vous conservez H0 au seuil a avec un risque d’erreur de deuxième espèce b à évaluer.
Ce cas arrive extrêmement peu souvent dans la pratique.
B
S
U
7.2 Tests de comparaison avec une norme 299

Exemple : dans l’atmosphère, le taux d’un gaz nocif, pour un volume donné, suit la loi
normale d’espérance m et de variance s2 égale à 100. 30 prélèvements ont été effectués
et les valeurs de ces 30 prélèvements sont les suivantes :
52, 0; 60, 2; 68, 8; 46, 8; 62, 2; 53, 5; 50, 9; 44, 9; 73, 2; 60, 4;
61, 9; 67, 8; 30, 5; 52, 5; 40, 4; 29, 6; 58, 3; 62, 6; 53, 6; 64, 6;
54, 4; 53, 8; 49, 8; 57, 4; 63, 1; 53, 4; 59, 4; 48, 6; 40, 7; 51, 9.
Pouvez-vous conclure, avec un risque a = 5 %, que l’espérance m est inférieure à 50, qui
est le seuil tolérable admis ?
La marche à suivre pour répondre à cette question est la suivante :
1. réaliser le test de normalité de Shapiro-Wilk au seuil a = 5 % sur l’échantillon des 30
prélèvements,
2. puis vous avez le choix entre faire le calcul  à la main  de la statistique associée au
test unilatéral que vous avez choisi pour répondre à cette question ou raisonner avec la
p-valeur.
H0 : m = 50
contre
H1 : m > 50.
Les deux lignes de commande à taper sont donc les suivantes :
> gaz<-c(52.0,60.2,68.8,46.8,62.2,53.5,50.9,44.9,73.2,60.4,61.9,
+ 67.8,30.5,52.5,40.4,29.6,58.3,62.6,53.6,64.6,54.4,53.8,49.8,
+ 57.4,63.1,53.4,59.4,48.6,40.7,51.9)
> shapiro.test(gaz)

Shapiro-Wilk normality test


© Dunod – La photocopie non autorisée est un délit.

data: gaz
W = 0.9599, p-value = 0.3077

La p-valeur du test de Shapiro-Wilk ( p = 0,3077) étant strictement supérieure à a = 5 %,


le test n’est pas significatif au seuil a = 5 %. Vous conservez donc l’hypothèse nulle H0
au seuil a = 5 %. Le risque d’erreur associé à cette décision est un risque d’erreur de
deuxième espèce. Vous ne pouvez pas l’évaluer dans le cas présent mais il est considéré
comme satisfaisant car l’effectif de l’échantillon, auquel le test de Shapiro-Wilk est
appliqué, vaut 30 et donc dépasse 30. En effet :
> length(gaz)

[1] 30
300 7 • Tests paramétriques et non paramétriques

1re méthode :
Pour réaliser le test « à la main » qui a été présenté ci-dessus, vous allez taper la ligne de
commande suivante :
> (z<-(sqrt(30)*(mean(gaz)-50))/10)

[1] 2.322344

Il ne vous reste plus qu’à comparer cette valeur avec le quantile de la loi normale centrée
et réduite. Pour récupérer la valeur de ce quantile, tapez la ligne de commande suivante :
> qnorm(0.95)

[1] 1.644854

Il s’agit ici d’un test unilatéral, donc la zone d’acceptation en est affectée.

Comme 2, 322344 n’appartient pas à l’intervalle ] − ∞; 1, 644854[, le test est significatif


au seuil a = 5 %. Vous rejetez H0 au seuil a = 5 % et vous décidez que H1 est vraie au
seuil a = 5 % avec un risque d’erreur de première espèce a = 5 %. Donc vous pouvez
conclure, avec un risque a = 5 %, que l’espérance m est supérieure à 50, qui est le seuil
tolérable admis.
2e méthode :
Pour réaliser le test avec la p-valeur, vous allez installer la bibliothèque TeachingDemos
en tapant la ligne de commande suivante :
> install.packages("TeachingDemos")

Installing package into ‘/Users/fbertran/Library/R/3.4/library’


(as ‘lib’ is unspecified)
trying URL ’https://mirror.ibcp.fr/pub/CRAN/bin/macosx/el-capitan
/contrib/3.4/TeachingDemos_2.10.tgz’
Content type ’application/x-gzip’ length 1696058 bytes (1.6 MB)
==================================================
downloaded 1.6 MB
The downloaded binary packages are in
/var/folders/63/4w3ly7091wv45gw6ss1yp_8w0000gn/T//
RtmpM8mWtH/downloaded_packages
7.2 Tests de comparaison avec une norme 301

Puis vous tapez la ligne de commande suivante :


> library(TeachingDemos)

Maintenant que la bibliothèque est installée, vous allez pouvoir réaliser le test en tapant
la ligne de commande suivante :
> z.test(gaz,mu=50,sd=10,alternative="greater",conf.level=0.95)

One Sample z-test


data: gaz
z=2.3223, n=30.000, Std. Dev.=10.000, Std. Dev. of the sample
mean=1.826, p-value=0.01011
alternative hypothesis: true mean is greater than 50
95 percent confidence interval:
51.23692 Inf
sample estimates:
mean of gaz
54.24

La p-valeur (0,01011) du test étant supérieure à a = 5 %, le test est significatif au


seuil a = 5 %. Vous rejetez H0 au seuil a = 5 % et vous décidez que H1 est vraie au
seuil a = 5 % avec un risque d’erreur de première espèce a = 5 %. Donc vous pouvez
conclure, avec un risque a = 5 %, que l’espérance m est supérieure à 50, qui est le seuil
tolérable admis.

7.2.2 Test d’une espérance de loi normale de variance inconnue : le test de


Student
Soit X une variable aléatoire qui suit la loi normale d’espérance m et de variance s2 > 0
© Dunod – La photocopie non autorisée est un délit.

inconnues.
• Test unilatéral
Le test unilatéral se déduit aisément du test bilatéral présenté ci-dessous.
• Test bilatéral
Hypothèses du test :
ce sont les mêmes que précédemment.
Conditions d’application du test :
il faut que l’échantillon x1 , . . . , xn soit des réalisations indépendantes de la variable aléa-
toire X qui suit la loi normale N (m; s).
Statistique du test :
& n − m0
m
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire Tn−1 = √ suit la loi
Sn,c / n
de Student t(n − 1).
302 7 • Tests paramétriques et non paramétriques

Décision et conclusion du test :


la valeur critique du test, notée c1−a/2 , est lue dans une table de la loi de Student. Si la
valeur absolue de la valeur de la statistique calculée sur l’échantillon, notée Tn−1 (obs), est
supérieure ou égale à c1−a/2 , alors le test est significatif au seuil a. Vous rejetez H0 au
seuil a et vous décidez que H1 est vraie au seuil a avec un risque d’erreur de première
espèce a. Si la valeur absolue de la valeur de la statistique calculée sur l’échantillon, notée
Tn−1 (obs), est strictement inférieure à c1−a/2 , alors le test n’est pas significatif au seuil a.
Vous conservez H0 au seuil a avec un risque d’erreur de deuxième espèce b à évaluer.
La fonction sous R qui permet de réaliser le test de Student est la fonction t.test.
B
S
U
Remarque : dans le cas où la condition d’application n’est pas vérifiée, il vous faut alors
utiliser un test non paramétrique : le test des signes ou le test des rangs signés de
Wilcoxon. Ce dernier demande aussi une condition d’application mais moins restrictive,
à savoir que la variable dont est issu l’échantillon doit être distribuée symétriquement.
Notez aussi que les hypothèses associées à ce test ne sont pas les mêmes.

La fonction sous R qui permet de réaliser le test des rangs signés de Wilcoxon est la fonction
B wilcox.test.
S
U
Exemple : le jardinier aimerait savoir si les glycines blanches qu’il a plantées sur son
terrain suivent bien les spécificités de la notice qu’il a reçu lorsqu’il a commandé ses
graines sur internet. Il était indiqué sur la notice que chaque gousse de glycines blanches
à maturité doit mesurer 15 cm de long. Comment peut-il s’assurer que les gousses qu’il
a dans son jardin suivent bien cette spécificité ? Il contacte un étudiant en licence de
biologie pour l’aider à répondre à sa question. L’étudiant lui propose de faire un test de
Student sur ses données. La procédure est la suivante :
1. Réaliser le test de normalité de Shapiro-Wilk (qui a été introduit au chapitre 6) sur
l’échantillon.
2. Puis réaliser le test de Student bilatéral puisque l’étudiant n’a aucune information sur
la variance s2 > 0 de la population qui est donc inconnue.
Les deux lignes de commande à taper sont les suivantes :
> glycine<-subset(Mesures,subset=(Mesures$espece=="glycine blanche"))
> shapiro.test(glycine$taille)

Shapiro-Wilk normality test

data: glycine$taille
W = 0.9798, p-value = 0.4906

La p-valeur étant strictement supérieure à a = 5 %, le test n’est pas significatif au seuil


a = 5 %. Vous conservez donc l’hypothèse nulle H0 du test de Shapiro-Wilk au seuil
7.2 Tests de comparaison avec une norme 303

a = 5 %. Le risque d’erreur associé à cette décision est un risque d’erreur de deuxième


espèce b. Vous ne pouvez pas l’évaluer dans le cas présent mais il est considéré comme
satisfaisant car l’effectif de l’échantillon, auquel le test de Shapiro-Wilk est appliqué, vaut
54 et donc dépasse 30. En effet :
> length(glycine$taille)

[1] 54

Vous pouvez donc effectuer le test de Student comme le suggère l’étudiant en licence de
biologie. Pour cela, vous tapez la ligne de commande suivante en spécifiant m0 = 15 cm :
> t.test(glycine$taille,mu=15)

Le résultat est le suivant :

One Sample t-test

data: glycine$taille
t = -0.5067, df = 53, p-value = 0.6145
alternative hypothesis: true mean is not equal to 15
95 percent confidence interval:
13.87050 15.67395
sample estimates:
mean of x
14.77222

La p-valeur étant strictement supérieure à a = 5 %, le test n’est pas significatif au seuil


a = 5 %. Vous conservez donc l’hypothèse H0 du test de Student au seuil a = 5 %. Le
© Dunod – La photocopie non autorisée est un délit.

risque d’erreur associé à cette décision est un risque d’erreur de deuxième espèce b. Il
vous reste donc à le calculer. Pour cela, vous tapez la ligne de commande suivante :
> power.t.test(n=54,delta=mean(glycine$taille)-15,
+ sd=sd(glycine$taille),type="one.sample",alternative="two.sided")

One-sample t test power calculation

n = 54
delta = 0.2277778
sd = 3.303652
sig.level = 0.05
power = 0.07181315
alternative = two.sided
304 7 • Tests paramétriques et non paramétriques

Cette puissance est faible. Une puissance convenable serait de l’ordre de 0,8. Mais quelle
serait donc la taille de l’échantillon à prélever sur le terrain du jardinier ? Pour répondre à
cette question, tapez la ligne de commande suivante :
> power.t.test(power=.8,delta=mean(glycine$taille)-15,
+ sd=sd(glycine$taille),type="one.sample",alternative="two.sided")

One-sample t test power calculation


n = 1653.023
delta = 0.2277778
sd = 3.303652
sig.level = 0.05
power = 0.8
alternative = two.sided

Il faudrait que le jardinier prélève 1 654 gousses de glycines blanches pour obtenir une
puissance supérieure ou égale à 0,8.

7.2.3 Test d’une variance de loi normale d’espérance connue


Soit X une variable aléatoire qui suit la loi normale d’espérance m connue et de variance s2 > 0
inconnue.
• Test unilatéral
Le test unilatéral se déduit aisément du test bilatéral présenté ci-dessous.
• Test bilatéral
Hypothèses du test :
vous souhaitez choisir entre les deux hypothèses suivantes :
H0 : s2 = s20
contre
H1 : s2 = s20 .
Conditions d’application du test :
il faut que l’échantillon x1 , . . . , xn soit des réalisations indépendantes de la variable aléa-
toire X qui suit la loi normale N (m; s) d’espérance m connue.
Statistique du test :
ns&2
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire x2n = 2n suit la loi du
s0
Khi-deux x2 (n).
Décision et conclusion du test :
les valeurs critiques du test, notées ca/2 et c1−a/2 , sont lues dans une table de la loi du
Khi-deux. Si la valeur de la statistique du test calculée sur l’échantillon, notée x2n (obs)
n’appartient pas à ]ca/2 ; c1−a/2 [, alors le test est significatif au seuil a. Vous rejetez H0
7.2 Tests de comparaison avec une norme 305

au seuil a et vous décidez que H1 est vraie au seuil a avec un risque d’erreur de première
espèce a. Si la valeur de la statistique du test calculée sur l’échantillon, notée x2n (obs)
appartient à ]ca/2 ; c1−a/2 [, alors le test n’est pas significatif au seuil a. Vous conservez H0
au seuil a avec un risque d’erreur de deuxième espèce b à déterminer.

Ce cas arrive extrêmement peu souvent dans la pratique. Mais vous pouvez trouver ce test
B dans la bibliothèque TeachingDemos précédemment présentée.
S
U

7.2.4 Test d’une variance de loi normale d’espérance inconnue


Soit X une variable aléatoire qui suit la loi normale d’espérance m et de variance s2 > 0
inconnues.
• Test unilatéral
Le test unilatéral se déduit aisément du test bilatéral.
• Test bilatéral
Hypothèses du test :
ce sont les mêmes que précédemment.
Conditions d’application du test :
il faut que l’échantillon x1 , . . . , xn soit des réalisations indépendantes de la variable aléa-
toire X qui suit la loi normale N (m; s).
Statistique du test :
(n − 1)Sn,c
2
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire x2n−1,c = suit la
s20
loi du Khi-deux x2 (n − 1).
Décision et conclusion du test :
les valeurs critiques du test, notées ca/2 et c1−a/2 , sont lues dans une table de la loi du
Khi-deux. Si la valeur de la statistique du test calculée sur l’échantillon, notée x2n−1,c (obs)
© Dunod – La photocopie non autorisée est un délit.

n’appartient pas à ]ca/2 ; c1−a/2 [, alors le test est significatif au seuil a. Vous rejetez H0
au seuil a et vous décidez que H1 est vraie au seuil a avec un risque d’erreur de première
espèce a. Si la valeur de la statistique du test calculée sur l’échantillon, notée x2n−1,c (obs)
appartient à ]ca/2 ; c1−a/2 [, alors le test n’est pas significatif au seuil a. Vous conservez
H0 au seuil a avec un risque d’erreur de deuxième espèce b à déterminer.

Exemple : vous venez d’acquérir dans votre laboratoire une nouvelle balance et vous sou-
haitez comparer la régularité du travail de cette dernière pour des très petites pesées à la
norme habituelle du descriptif pour laquelle la variance s20 est égale à 4g 2 . Vous prélevez un
échantillon d’effectif égal à 30 masses dont les valeurs sont données ci-dessous :

2, 53; 1, 51; 1, 52; 1, 44; 4, 32; 2, 36; 2, 41; 2, 06; 1, 57; 1, 68;
3, 09; 0, 54; 2, 32; 0, 19; 2, 66; 2, 20; 1, 04; 1, 02; 0, 74; 1, 01;
0, 35; 2, 42; 2, 66; 1, 11; 0, 56; 1, 75; 1, 51; 3, 80; 2, 22; 2, 88.
306 7 • Tests paramétriques et non paramétriques

Au risque a = 5 %, pouvez-vous considérer que la variance de l’échantillon est conforme


à la norme du descriptif ? Pour répondre à cette question, vous devez réaliser le test
présenté ci-dessus, puisque vous ne connaissez pas l’espérance m. La procédure est
toujours la même, à savoir :
1. Réaliser le test de normalité de Shapiro-Wilk sur l’échantillon.
2. Puis faire le calcul  à la main  de la statistique associée au test unilatéral présenté
ci-dessus.
H0 : s2 = 4g 2
H1 : s2 > 4g 2 .

Les lignes de commande à taper sont donc les suivantes :

> pesee<-c(2.53,1.51,1.52,1.44,4.32,2.36,2.41,2.06,1.57,1.68,
+ 3.09,0.54,2.32,0.19,2.66,2.20,1.04,1.02,0.74,1.01,
+ 0.35,2.42,2.66,1.11,0.56,1.75,1.51,3.80,2.22,2.88)
> shapiro.test(pesee)

Shapiro-Wilk normality test

data: pesee
W = 0.9716, p-value = 0.5848

La p-valeur étant strictement supérieure à a = 5 %, le test n’est pas significatif au seuil


a = 5 %. Vous conservez donc l’hypothèse H0 du test de Shapiro-Wilk au seuil a = 5 %.
Le risque d’erreur associé à cette décision est un risque d’erreur de deuxième espèce b.
Vous ne pouvez pas l’évaluer dans le cas présent mais il est considéré comme satisfaisant
car l’effectif de l’échantillon, auquel le test de Shapiro-Wilk est appliqué, vaut 30 et donc
dépasse 30. En effet :

> length(pesee)

[1] 30

Vous pouvez donc maintenant effectuer le calcul de la statistique de test  à la main .
Pour cela, vous tapez la ligne de commande suivante :

> ((length(pesee)-1)*var(pesee))/4
7.2 Tests de comparaison avec une norme 307

Elle vous donne comme résultat :

[1] 7.135268

Maintenant, il ne vous reste plus qu’à calculer le quantile de la loi du Khi-deux x2 (29) :

> qchisq(0.95,29)

[1] 42.55697

Comme la valeur de la statistique du test (7,135268) calculée sur l’échantillon appartient


à : ]0; 42.55697[, le test n’est pas significatif au seuil a = 5 %. Vous conservez H0 au
seuil a = 5 % avec un risque d’erreur de deuxième espèce b qui est difficile à calculer
dans le cas présent. Par conséquent, le calcul ne sera pas présenté ici.

Remarque : vous pourriez aussi utiliser la fonction sigma.test de la bibliothèque


TeachingDemos ou la fonction var_test1 de la bibliothèque OneTwoSamples.

> library(TeachingDemos)
> sigma.test(pesee,sigma=2,alternative="greater")

One sample Chi-squared test for variance


data: pesee
X-squared = 7.1353, df = 29, p-value = 1
alternative hypothesis: true variance is greater than 4
95 percent confidence interval:
0.6706556 Inf
sample estimates:
© Dunod – La photocopie non autorisée est un délit.

var of pesee
0.9841748

> library(OneTwoSamples)
> var_test1(pesee,sigma2=4)

var df chisq2 P_value


1 0.9841748 29 7.135268 2.227029e-05
308 7 • Tests paramétriques et non paramétriques

7.2.5 Test d’une proportion


• Test unilatéral
Le test unilatéral se déduit aisément du test bilatéral.
• Test bilatéral
Hypothèses du test :
vous souhaitez choisir entre les deux hypothèses suivantes :
H0 : p A = p0

contre

H1 : p A = p0 .
Conditions d’application du test :
il faut que l’échantillon x1 , . . . , xn soit des réalisations indépendantes d’une variable aléa-
toire X qui suit la loi de Bernoulli B(1, p A ).
Statistique du test :
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire n p & n,A = n A (&
pn,A a été
défini dans le chapitre 6) suit la loi binomiale B(n; p0 ).
Décision et conclusion du test :
les valeurs critiques du test, notées ca/2 et c1−a/2 , sont lues dans une table de la loi bino-
miale. Si la valeur de la statistique calculée sur l’échantillon, notée n A (obs), n’appartient
pas à ]ca/2 ; c1−a/2 [, alors le test est significatif au seuil a. Vous rejetez H0 au seuil a et
vous décidez que H1 est vraie au seuil a avec un risque d’erreur de première espèce a. Si la
valeur de la statistique calculée sur l’échantillon, notée n A (obs), appartient à ]ca/2 ; c1−a/2 [,
alors le test n’est pas significatif au seuil a. Vous conservez H0 au seuil a avec un risque
d’erreur de deuxième espèce b à évaluer.
Vous pouvez trouver dans la littérature une variation de ce test, qui va être présentée ci-dessous,
avec cette fois-ci d’autres conditions d’application et une autre statistique que celle présentée
précédemment. Cette variation utilise l’approximation de la loi binomiale par la loi normale.
Cette approximation a longtemps été utilisée mais avec les logiciels comme R, il est préférable
d’avoir recours au test exact présenté ci-dessus.
• Test unilatéral
Le test unilatéral se déduit aisément du test bilatéral.
• Test bilatéral
Hypothèses du test :
ce sont les mêmes que précédemment.
Conditions d’application du test :
il faut que l’échantillon x1 , . . . , xn soit des réalisations indépendantes d’une variable aléa-
toire X qui suit la loi de Bernoulli B(1, p A ). De plus, il faut que les trois inégalités n  50,
np0  16 et n(1 − p0 )  16 soient vérifiées.
7.2 Tests de comparaison avec une norme 309

Statistique du test :
p& n,A − p0
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire Z = ( suit la
p0 (1 − p0 )
n
loi normale N (0; 1).
Décision et conclusion du test :
la valeur critique du test, notée c1−a/2 , est lue dans une table de la loi normale centrée et
réduite. Si la valeur absolue de la statistique calculée sur l’échantillon, notée Z (obs), est
supérieure ou égale à c1−a/2 , alors le test est significatif au seuil a. Vous rejetez H0 au
seuil a et vous décidez que H1 est vraie au seuil a avec un risque d’erreur de première
espèce a. Si la valeur absolue de la statistique calculée sur l’échantillon, notée Z (obs), est
strictement inférieure à c1−a/2 , alors le test n’est pas significatif au seuil a. Vous conservez
H0 au seuil a avec un risque d’erreur de deuxième espèce b à évaluer.
Remarque : la correction de continuité de Yates, déjà évoquée dans le chapitre 6 et qui
permet le passage d’une loi discrète à une loi continue, dans le calcul de la statistique
de test Z peut être appliquée. Elle permet un meilleur ajustement de la fluctuation de la
statistique de test à la loi normale et en particulier lorsque la taille n de l’échantillon est
faible.
Il existe donc deux fonctions sous R pour réaliser ce test de comparaison à une norme.
B
S – La fonction sous R qui utilise la variable aléatoire nA est la fonction binom.test. Cette
U
fonction travaille toujours avec la loi binomiale et n’utilise pas l’approximation de la loi
binomiale par la loi normale. Elle fournit une p-valeur exacte du test. Cette fonction est
donc préférable, d’autant plus que la taille n de l’échantillon est faible.
– La fonction sous R qui utilise la variable aléatoire Z est la fonction prop.test. La fonction
applique la correction de continuité de Yates par défaut.

Exemple : dans le  Ouest-France  du samedi 23 janvier 2010, vous pouvez lire :


Plus de garçons que de filles ! Avec 507 bébés mâles comptabilisés à Saint-Lô en 2009,
© Dunod – La photocopie non autorisée est un délit.

contre 481 fillettes, les naissances masculines sont toujours plus nombreuses.  Pensez-
vous que les garçons sont plus nombreux significativement que les filles, au seuil de
a = 5 %?
Pour répondre à cette question, vous allez utiliser le test présenté ci-dessus, dans sa
version exacte puisque vous avez R sous la main. Tapez la ligne de commande suivante :
> binom.test(507,988,0.5)

Exact binomial test

data: 507 and 988


number of successes = 507, number of trials = 988,
p-value = 0.4264
alternative hypothesis: true probability of success is not equal
310 7 • Tests paramétriques et non paramétriques

to 0.5
95 percent confidence interval:
0.4814855 0.5447516
sample estimates:
probability of success
0.5131579

Comme la p-valeur est strictement supérieure à a = 5 %, le test n’est pas significatif au


seuil a = 5 %. Vous conservez H0 au seuil a = 5 % avec un risque d’erreur de deuxième
espèce b qu’il faudrait évaluer mais qui est difficile à calculer dans le cas présent. Par
conséquent, le calcul ne sera pas présenté. Donc vous en déduisez que le journaliste,
en déclarant que  les naissances masculines sont toujours très nombreuses , considère
comme significative une différence entre les naissances de garçons et de filles qui peut
aussi, au seuil de a = 5 %, être simplement attribuée aux fluctuations d’échantillonnage.

7.3 TEST DE COMPARAISON ENTRE DEUX POPULATIONS


INDÉPENDANTES
7.3.1 Comparaison de deux espérances de lois normales de variances connues
Soit X une variable aléatoire qui suit la loi normale N (m1 ; s1 ) et Y une variable aléatoire qui
suit la loi normale N (m2 ; s2 ) avec les variances s21 et s22 connues.
• Test unilatéral
Le test unilatéral se déduit aisément du test bilatéral.
• Test bilatéral
Hypothèses du test :
vous souhaitez choisir entre les deux hypothèses suivantes :
H0 : m1 = m2

contre

H1 : m1 = m2 .
Conditions d’application du test :
il faut que l’échantillon x1 , . . . , xn 1 soit des réalisations indépendantes de la variable aléa-
toire X qui suit la loi normale N (m1 ; s1 ) et que le second échantillon y1 , . . . , yn 2 soit des
réalisations indépendantes de la variable aléatoire Y qui suit la loi normale N (m2 ; s2 ) avec
les variances s21 et s22 connues. De plus, les effectifs n 1 et n 2 peuvent ne pas être égaux.
7.3 Test de comparaison entre deux populations indépendantes 311

Statistique du test :
m&1 − m&2
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire Z =  2 suit la loi
s
1 s22
+
n1 n2
normale N (0; 1).
Décision et conclusion du test :
la valeur critique du test, notée c1−a/2 , est lue dans une table de la loi normale centrée
et réduite. Si la valeur absolue de la valeur de la statistique calculée sur l’échantillon,
notée Z (obs) est supérieure ou égale à c1−a/2 , alors le test est significatif au seuil a.
Vous rejetez H0 au seuil a et vous décidez que H1 est vraie au seuil a avec un risque
d’erreur de première espèce a. Si la valeur absolue de la valeur de la statistique calculée
sur l’échantillon, notée Z (obs) est strictement inférieure à c1−a/2 , alors le test n’est pas
significatif au seuil a. Vous conservez H0 au seuil a avec un risque d’erreur de deuxième
espèce b à évaluer.

La fonction sous R qui permet de réaliser ce test est la fonction z.test.


B
S
U

7.3.2 Comparaison de deux espérances de lois normales de variances inconnues :


le test de Student et le test de Welch
• Test unilatéral
Le test unilatéral se déduit aisément du test bilatéral.
• Test bilatéral
Hypothèses du test :
ce sont les mêmes que précédemment.
Conditions d’application du test :
© Dunod – La photocopie non autorisée est un délit.

il faut que l’échantillon x1 , . . . , xn 1 soit des réalisations indépendantes de la variable aléa-


toire X qui suit la loi normale N (m1 ; s1 ) et que le second échantillon y1 , . . . , yn 2 soit des
réalisations indépendantes de la variable aléatoire Y qui suit la loi normale N (m2 ; s2 ). De
plus, les effectifs n 1 et n 2 peuvent ne pas être égaux.
Maintenant il faut distinguer deux cas : soit s21 = s22 , soit s21 = s22 .
• Premier cas : le test de Student.

Cas où s21 = s22 = s2 .

Une question que vous devez vous poser est :  comment vérifier cette hypothèse ? 
Pour tester cette hypothèse, vous allez utiliser le test de Fisher-Snedecor qui est présenté
plus loin.
312 7 • Tests paramétriques et non paramétriques

Statistique du test :
& −m
m &2
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire Tn 1 +n 2 −2 = (1
1 1
' &
s +
' n1 n2
n 1 Sn21 + n 2 Sn22 (n 1 − 1)Sn21,c + (n 2 − 1)Sn22,c
où s & = = suit la loi de Student
n1 + n2 − 2 n1 + n2 − 2
t(n 1 + n 2 − 2).
Décision et conclusion du test :
la valeur critique du test, notée c1−a/2 , est lue dans une table de la loi de Student. Si la
valeur absolue de la valeur de la statistique calculée sur l’échantillon, notée Tn 1 +n 2 −2 (obs)
est supérieure ou égale à c1−a/2 , alors le test est significatif au seuil a. Vous rejetez H0
au seuil a et vous décidez que H1 est vraie au seuil a avec un risque d’erreur de première
espèce a. Si la valeur absolue de la valeur de la statistique calculée sur l’échantillon,
notée Tn 1 +n 2 −2 (obs) est strictement inférieure à c1−a/2 , alors le test n’est pas significatif
au seuil a. Vous conservez H0 au seuil a avec un risque d’erreur de deuxième espèce b
à évaluer.
La fonction sous R qui permet de réaliser ce test est la fonction t.test avec les
B arguments paired=FALSE et var.equal=TRUE.
S
U

• Deuxième cas : le test de Welch.

Cas où s21 = s22 .

Une question que vous devez vous poser est :  comment vérifier cette hypothèse ? 
Pour tester cette hypothèse, vous allez utiliser le test de Fisher-Snedecor qui est présenté
au paragraphe 7.3.4.
Statistique du test :
&1 − m
m &2
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire Tn =   =
 Sn2 Sn22
1
+
n1 − 1 n2 − 1

m&1 − m&2
 2 suit approximativement la loi de Student t(n), où n est l’entier le plus
S Sn22,c
 n 1,c
+
n1 n⎛2 ⎞2 ⎛ ⎞2

Sn21 Sn22 ⎟ S2
⎜ n 1 ,c
Sn22 ,c ⎟
⎝ + ⎠ ⎝ + ⎠
n1 − 1 n2 − 1 n1 n2
proche de = ·
Sn41 Sn42 Sn41 ,c Sn42 ,c
+ +
(n 1 − 1)3 (n 2 − 1)3 n 21 (n 1 − 1) n 22 (n 2 − 1)
Décision et conclusion du test :
la valeur critique du test, notée c1−a/2 , est lue dans une table de la loi de Student. Si la
7.3 Test de comparaison entre deux populations indépendantes 313

valeur absolue de la valeur de la statistique calculée sur l’échantillon, notée Tn (obs) est
supérieure ou égale à c1−a/2 , alors le test est significatif au seuil a. Vous rejetez H0 au
seuil a et vous décidez que H1 est vraie au seuil a avec un risque de première espèce
a. Si la valeur absolue de la valeur de la statistique calculée sur l’échantillon, notée
Tn (obs) est strictement inférieure à c1−a/2 , alors le test n’est pas significatif au seuil a.
Vous conservez H0 au seuil a avec un risque d’erreur de deuxième espèce b à évaluer.
La fonction sous R qui permet de réaliser ce test est la fonction t.test avec les arguments
B paired=FALSE et var.equal=FALSE.
S
U

Remarque : parfois le degré de liberté est arrondi à l’entier inférieur. Ce n’est pas le cas
avec la fonction t.test dans R.
Le test de Student est assez robuste mais si vous vous éloignez trop de la condition de
normalité qui est nécessaire pour procéder à ce test, il est préférable d’utiliser un test non
paramétrique, comme par exemple le test de Mann-Whitney-Wilcoxon qui a aussi certaines
conditions d’application à savoir que les deux échantillons (X1 , . . . , Xn1 ) et (Y1 , . . . , Yn2 ) sont
aléatoires. De plus, les deux distributions des deux variables doivent avoir la même forme.
Cette dernière condition est très importante. En effet, dans le cas où elle ne serait pas respectée,
le test de Mann-Whitney-Wilcoxon peut aboutir à des conclusions inexactes. Il vous est donc
conseillé de faire une analyse graphique des deux distributions avant d’appliquer ce test.

La fonction sous R qui permet de réaliser le test de Mann-Whitney-Wilcoxon est la fonction


B wilcox.test.
S
U
Exemple : vous trouverez un exemple qui illustre le cas où les deux variances sont égales
dans l’exercice 1 de ce chapitre.

7.3.3 Comparaison de deux espérances de lois quelconques de variances


inconnues
• Test unilatéral
© Dunod – La photocopie non autorisée est un délit.

Le test unilatéral se déduit aisément du test bilatéral.


• Test bilatéral
Hypothèses du test :
ce sont les mêmes que précédemment.
Conditions d’application du test :
il faut que l’échantillon x1 , . . . , xn 1 soit des réalisations indépendantes de la variable aléa-
toire X et que le second échantillon y1 , . . . , yn 2 soit des réalisations indépendantes de la
variable aléatoire Y . Les effectifs n 1 et n 2 sont tous les deux supérieurs à 30.
Statistique du test :
&1 − m
m &2
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire Z =   suit
 Sn2 Sn22
1
+
n1 − 1 n2 − 1
approximativement la loi normale N (0; 1).
314 7 • Tests paramétriques et non paramétriques

Décision et conclusion du test :


la valeur critique du test, notée c1−a/2 , est lue dans une table de la loi normale centrée et
réduite. Si la valeur absolue de la valeur de la statistique calculée sur l’échantillon, notée
Z (obs) est supérieure ou égale à c1−a/2 , alors le test est significatif au seuil a. Vous rejetez
H0 au seuil a et vous décidez que H1 est vraie au seuil a avec un risque d’erreur de pre-
mière espèce a. Si la valeur absolue de la valeur de la statistique calculée sur l’échantillon,
notée Z (obs) est strictement inférieure à c1−a/2 , alors le test n’est pas significatif au seuil
a. Vous conservez H0 au seuil a avec un risque d’erreur de deuxième espèce b à évaluer.
Il n’existe pas de fonction sous R qui réalise ce test, mais comme vous l’avez déjà compris, il
B est facile de le mettre en place avec une ligne de commande.
S
U

7.3.4 Comparaison de deux variances de lois normales d’espérances inconnues :


le test de Fisher-Snedecor
• Test unilatéral
Le test unilatéral se déduit aisément du test bilatéral.
• Test bilatéral
Hypothèses du test :
vous souhaitez choisir entre les deux hypothèses suivantes :
H0 : s21 = s22
contre
H1 : s21 = s22 .
Conditions d’application du test :
il faut que l’échantillon x1 , . . . , xn 1 soit des réalisations indépendantes de la variable aléa-
toire X qui suit la loi normale N (m1 ; s1 ) et que le second échantillon y1 , . . . , yn 2 soit aussi
des réalisations indépendantes de la variable aléatoire Y qui suit la loi normale N (m2 ; s2 ).
De plus, les effectifs n 1 et n 2 peuvent ne pas être égaux.
Statistique du test :
Sn2 ,c n 1 Sn21
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire F = 21 , où Sn21 ,c =
Sn 2 ,c n1 − 1
2
n 2 Sn
et Sn22 ,c = 2
, suit la loi de Fisher F(n 1 − 1; n 2 − 1).
n2 − 1
Décision et conclusion du test :
les valeurs critiques du test, notées ca/2 et c1−a/2 , sont lues dans une table de la loi de
Fisher. Si la valeur de la statistique calculée sur l’échantillon, notée F(obs), n’appartient
pas à l’intervalle ]ca/2 ; c1−a/2 [, alors le test est significatif au seuil a. Vous rejetez H0 au
seuil a et vous décidez que H1 est vraie au seuil a avec un risque d’erreur de première
espèce a. Si la valeur de la statistique calculée sur l’échantillon, notée F(obs), appartient
à l’intervalle ]ca/2 ; c1−a/2 [, alors le test n’est pas significatif au seuil a. Vous conservez
H0 au seuil a avec un risque d’erreur de deuxième espèce b à évaluer.
7.3 Test de comparaison entre deux populations indépendantes 315

La fonction sous R qui permet de réaliser ce test est la fonction var.test. Faites attention, car
cette fonction ne porte pas le nom du test dont elle provient comme les autres précédemment.
Or vous verrez dans le paragraphe suivant qu’il existe pourtant une fonction fisher.test et
qui calcule une autre statistique de test. Donc ne vous trompez pas quand vous tapez votre
ligne de commande !

Remarque : vous pouvez constater qu’il manque un cas : comparaison de deux variances
de lois normales d’espérances connues. Ce cas est extrêmement rare dans la pratique.
C’est pourquoi il ne sera pas exposé dans le cadre de cet ouvrage. Si jamais vous devez
l’utiliser, il vous faudra donc le faire vous-même avec une ligne de commande en vous
inspirant du cas où les espérances sont inconnues.
Exemple : le Coucou gris2 est un oiseau qui fait couver ses œufs par des oiseaux d’autres
espèces que la sienne, de tailles très différentes. Une hypothèse a été émise comme
quoi le Coucou gris puisse adapter la taille de ses œufs à la taille du nid dans lequel il
pond. Une étude faite par le biologiste O.H. Latter et publiée sous le titre  The Egg Of
Cuculus Canorus : An Enquiry Into The Dimensions Of The Cuckoo’S Ego And The
Relation Of The Variations To The Size Of The Eggs Of The Foster-Parent, With Notes
On Coloration.  dans la revue Biometrica, 1902, Volume 1, pages 164-176 sur la largeur
des œufs déposés dans les nids de petite taille (pipit farlouse) ou de plus grande taille
(fauvette) a donné les valeurs (en millimètres) suivantes :
– Dans les nids de pipit farlouse : 17,0 ; 16,9 ; 16,9 ; 17,3 ; 16,8 ; 16,8 ; 17,0 ; 16,5 ; 16,9 ;
16,5 ; 17,0 ; 17,0 ; 16,8 ; 17,0 ; 16,9 ; 17,0 ; 17,0 ; 17,3 ; 16,8 ; 17,1 ; 16,9 ; 16,8 ; 17,1 ;
17,0 ; 17,1 ; 17,2 ; 16,7 ; 16,6 ; 17,2 ; 17,0 ; 17,0.
– Dans les nids de fauvette : 16,0 ; 16,1 ; 16,3 ; 16,5 ; 16,2 ; 15,2 ; 15,6 ; 15,6 ; 16,6 ; 16,0 ;
16,2 ; 16,8 ; 16,0 ; 17,0 ; 17,9 ; 16,0 ; 16,4 ; 16,3 ; 16,9 ; 17,1 ; 17,0 ; 16,1 ; 16,5 ; 16,5 ;
16,1 ; 16,5 ; 17,9 ; 16,5 ; 16,7 ; 16,8.
© Dunod – La photocopie non autorisée est un délit.

Deux questions vous sont posées.


1. Pouvez-vous dire, au seuil de a = 5 %, que les deux populations ont la même
variance ?
2. Testez l’hypothèse comme quoi le Coucou gris adapte la largeur de ses œufs à la taille
du nid dans lequel il pond.
Pour répondre aux questions qui vous sont posées, le protocole à suivre est le suivant :
1. Réalisez un test de normalité de Shapiro-Wilk sur chacun des échantillons.
2. Puis réalisez le test de Fisher-Snedecor pour répondre à la première question qui vous
a été posée.

2. Le Coucou gris, Cuculus Canorus, est une espèce de coucous très répandue en Eurasie.
316 7 • Tests paramétriques et non paramétriques

3. Puis faites un test de Student ou un test de Welch en fonction de la conclusion du test


de Fisher-Snedecor.

> pipit<-c(17.0,16.9,16.9,17.3,16.8,16.8,17.0,16.5,16.9,16.5,
+ 17.0,17.0,16.8,17.0,16.9,17.0,17.0,17.3,16.8,17.1,16.9,16.8,
+ 17.1,17.0,17.1,17.2,16.7,16.6,17.2,17.0,17.0)
> fauvette<-c(16.0,16.1,16.3,16.5,16.2,15.2,15.6,15.6,16.6,16.0,
+ 16.2,16.8,16.0,17.0,17.9,16.0,16.4,16.3,16.9,17.1,17.0,16.1,
+ 16.5,16.5,16.1,16.5,17.9,16.5,16.7,16.8)
> shapiro.test(pipit)

Shapiro-Wilk normality test


data: pipit
W = 0.94442, p-value = 0.1094

La p-valeur du test de Shapiro-Wilk étant strictement supérieure à a = 5 %, le test n’est


pas significatif au seuil a = 5 %. Vous conservez H0 au seuil a = 5 %. Le risque d’erreur
associé à cette décision est un risque d’erreur de deuxième espèce b. Vous ne pouvez
pas l’évaluer dans le cas présent mais il est considéré comme satisfaisant car l’effectif de
l’échantillon, auquel le test de Shapiro-Wilk est appliqué, vaut 31 et donc dépasse 30. En
effet :
> length(pipit)

[1] 31

> shapiro.test(fauvette)

Shapiro-Wilk normality test


data: fauvette
W = 0.94926, p-value = 0.1615

La p-valeur du test de Shapiro-Wilk étant strictement supérieure à a = 5 %, le test n’est


pas significatif au seuil a = 5 %. Vous conservez H0 au seuil a = 5 %. Le risque d’erreur
associé à cette décision est un risque d’erreur de deuxième espèce b. Vous ne pouvez
pas l’évaluer dans le cas présent mais il est considéré comme satisfaisant car l’effectif de
l’échantillon, auquel le test de Shapiro-Wilk est appliqué, vaut 30 et donc dépasse 30. En
effet :
> length(fauvette)

[1] 30
7.3 Test de comparaison entre deux populations indépendantes 317

Maintenant, vous allez réaliser le test de Fisher-Snedecor puisque les conditions d’appli-
cation sont vérifiées. Pour cela vous tapez la ligne de commande suivante :

> var.test(pipit,fauvette)

F test to compare two variances


data: pipit and fauvette
F = 0.11195, num df = 30, denom df = 29, p-value = 4.767e-08
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.05350369 0.23314689
sample estimates:
ratio of variances
0.1119467

Notons que la fonction var.test nous donne un intervalle de confiance pour le rapport
des variances des deux populations. Par défaut, cet intervalle est construit avec un niveau
de confiance de 95 %.
La p-valeur du test de Fisher-Snedecor étant inférieure ou égale à a = 5 %, le test de
Fisher-Snedecor est significatif au seuil a = 5 %. Vous conservez H0 au seuil a = 5 %
et vous décidez que H1 est vraie au seuil a = 5 % avec un risque d’erreur de première
espèce a = 5 % à évaluer.
Il ne reste plus qu’à faire le test de Student dans le cas où les deux variances des deux
populations ne sont pas égales. Pour cela, tapez la ligne de commande suivante :

> t.test(pipit,fauvette,var.equal=FALSE)

La valeur par défaut de l’argument var.equal est FALSE. Par conséquent, nous aurions
pu écrire plus simplement :
© Dunod – La photocopie non autorisée est un délit.

> t.test(pipit,fauvette)

Welch Two Sample t-test


data: pipit and fauvette
t = 4.3599, df = 35.224, p-value = 0.0001078
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
0.2647656 0.7259871
sample estimates:
mean of x mean of y
16.93871 16.44333
318 7 • Tests paramétriques et non paramétriques

Notons que la fonction t.test, nous donne un intervalle de confiance pour la différence
des moyennes des deux populations. Par défaut, cet intervalle est construit avec un niveau
de confiance de 95 %.
La p-valeur du test de Student étant inférieure ou égale à a = 5 %, le test est significatif
au seuil a = 5 %. Vous rejetez H0 au seuil a = 5 % et vous décidez que H1 est vraie au
seuil a = 5 % avec un risque de première espèce a = 5 %. Vous pouvez donc affirmer
que le Coucou gris adapte la largeur de ses œufs en fonction de la taille du nid dans lequel
il pond. Il semble qu’il s’agisse d’un phénomène de mimétisme qui permet aux œufs de
Coucou gris de passer plus facilement inaperçus dans le nid dans lequel ils se trouvent !

7.3.5 Comparaison de deux proportions : le test exact de Fisher


Dans deux populations, un caractère à deux modalités, A et A, est observé. Chaque individu
présente ou non la modalité A. Les proportions d’apparition de A dans les deux populations
sont les nombres inconnus p A,1 et p A,2 . Quelques notations vont être introduites :
– n A,1 le nombre de personnes de l’échantillon 1 qui présentent la modalité A,
– n A,2 le nombre de personnes de l’échantillon 2 qui présentent la modalité A,
– n A,1 le nombre de personnes de l’échantillon 1 qui ne présentent pas la modalité A,
– n A,2 le nombre de personnes de l’échantillon 2 qui ne présentent pas la modalité A,
– n •,1 le nombre de personnes présentent dans l’échantillon 1,
– n •,2 le nombre de personnes présentent dans l’échantillon 2,
– n A,• le nombre de personnes qui présentent la modalité A dans l’ensemble des deux
échantillons,
– n A,• le nombre de personnes qui ne présentent pas la modalité A dans l’ensemble des deux
échantillons,
– n = n •,1 + n •,2 la somme des deux effectifs des échantillons.
• Test unilatéral
Le test unilatéral se déduit aisément du test bilatéral.
• Test bilatéral
Hypothèses du test :
vous souhaitez choisir entre les deux hypothèses suivantes :
H0 : p A,1 = p A,2

contre

H1 : p A,1 = p A,2 .
Conditions d’application du test :
les effectifs n 1 et n 2 peuvent ne pas être égaux.
7.3 Test de comparaison entre deux populations indépendantes 319

Statistique du test :
si l’hypothèse
 nulle H0est vérifiée, alors la variable aléatoire n A,1 suit la loi hypergéomé-
n A,•
trique H n; n •,1 ; .
n
Décision et conclusion du test :
il faut raisonner ici avec la p-valeur. Donc il faut avoir recours pour ce test au logiciel R.

La fonction sous R qui permet de réaliser ce test est la fonction fisher.test.


B
S
U

Vous pouvez trouver dans la littérature une variation de ce test, qui va être présentée ci-dessous,
avec cette fois-ci d’autres conditions d’application et une autre statistique que celle présentée
précédemment. Cette variation utilise l’approximation de la loi hypergéométrique par la loi
normale. Cette approximation a longtemps été utilisée mais avec des logiciels comme R, il est
préférable d’avoir recours au test exact de Fisher présenté ci-dessus.
• Test unilatéral
Le test unilatéral se déduit aisément du test bilatéral.
• Test bilatéral
Hypothèses du test :
ce sont les mêmes que précédemment.
Conditions d’application du test :
les effectifs n 1 et n 2 peuvent ne pas être égaux. De plus, chaque case du tableau de
contingence doit présenter un effectif théorique supérieur ou égal à 5.
Statistique du test :
n A,• × n •,1
n A,1 −
la variable aléatoire Z = ( n suit la loi normale N (0; 1) si
n •,1 × n •,2 × n A,• × n A,•
n 2 (n − 1)
l’hypothèse nulle H0 est vérifiée.
Décision et conclusion du test :
la valeur critique du test, notée c1−a/2 , est lue dans une table de la loi normale centrée
et réduite. Si la valeur absolue de la valeur de la statistique calculée sur l’échantillon,
notée Z (obs), est supérieure ou égale à c1−a/2 , alors le test est significatif au seuil a. Vous
rejetez H0 au seuil a et vous décidez que H1 est vraie au seuil a avec un risque de première
espèce a. Si la valeur absolue de la valeur de la statistique calculée sur l’échantillon, notée
Z (obs), est strictement inférieure à c1−a/2 , alors le test n’est pas significatif au seuil a.
Vous conservez H0 au seuil a avec un risque d’erreur de deuxième espèce b à évaluer.

La fonction sous R qui permet de réaliser ce test est la fonction prop.test.


B
S
U
320 7 • Tests paramétriques et non paramétriques

7.4 TEST DE COMPARAISON ENTRE DEUX POPULATIONS NON


INDÉPENDANTES
Rappel : deux populations sont appariées (associées par paires) lorsque chaque valeur xi,1 est
associée à une valeur de xi,2 .
Soit m1 la moyenne dans la première population et m2 la moyenne dans la seconde population.
Soit Di la différence entre X i,1 et X i,2 et D la variable aléatoire qui suit la loi normale
N (m D ; s D ).

Remarque : il est équivalent de chercher à savoir si m1 = m2 ou de déterminer si


m D = m1 − m2 = 0.

• Test unilatéral
Le test unilatéral se déduit aisément du test bilatéral.
• Test bilatéral
Hypothèses du test :
vous souhaitez choisir entre les deux hypothèses
H0 : m1 = m2 (ou m D = 0)
contre
H1 : m1 = m2 (ou m D = 0).
Conditions d’application du test :
il faut que l’échantillon d1 , . . . , dn soit des réalisations indépendantes de la variable aléa-
toire D qui suit la loi normale N (m D ; s D ).
Statistique du test :
&D
m
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire Tn−1 = √ suit la loi
S D,c / n
1 1 
n n
de Student t(n − 1), où m &D = 2
Di et S D,c = & D )2 .
(Di − m
n n−1
i=1 i=1
Décision et conclusion du test :
la valeur critique du test, notée ca , est lue dans une table de la loi de Student. Si la valeur
absolue de la valeur de la statistique calculée sur l’échantillon, notée Tn−1 (obs) est supé-
rieure ou égale à ca , alors le test est significatif au seuil a. Vous rejetez H0 au seuil a
et vous décidez que H1 est vraie au seuil a avec un risque de première espèce a. Si la
valeur absolue de la valeur de la statistique calculée sur l’échantillon, notée Tn−1 (obs) est
strictement inférieure à ca , alors le test n’est pas significatif au seuil a. Vous conservez H0
au seuil a avec un risque d’erreur de deuxième espèce b à évaluer.

La fonction sous R qui permet de réaliser ce test est la fonction t.test, c’est-à-dire celle qui
B est utilisée pour le test qui compare l’espérance avec une norme.
S
U
Exercices 321

Exemple : vous trouverez un exemple qui illustre le cas qui vient d’être présenté dans
l’exercice 2 de ce chapitre.

EN RÉSUMÉ

Commande Description
t.test(x) Permet de réaliser un test de Student de comparaison d’une espérance
inconnue à une valeur de référence, où la variance est inconnue.
pwr.t.test Calcule la puissance pour un test de Student à un, deux échantillons
indépendants ou non, à effectifs égaux.
binom.test(x) Permet de réaliser un test exact de comparaison d’une proportion
à une valeur de référence.
prop.test(x) Permet de réaliser un test de comparaison d’une proportion
à une valeur de référence.
pwr.p.test(x) Calcule la puissance pour un test de comparaison d’une proportion
à une valeur de référence.
pwr.norm.test(x) Calcule la puissance pour un test de comparaison d’une espérance
inconnue à une valeur de référence, où la variance est connue.
t.test(x,y) Permet de réaliser un test de comparaison de deux espérances inconnues
où les variances sont égales (Test de Student) ou inégales (Test de Welch)
et sur des populations indépendantes ou non.
pwr.t2n.test(x,y) Calcule la puissance pour un test de comparaison de deux espérances
(Test de Student) de deux populations à effectifs inégaux.
var.test(x,y) Permet de réaliser un test de comparaison de deux variances inconnues
(Test de Fisher-Snedecor).
© Dunod – La photocopie non autorisée est un délit.

fisher.test(x,y) Permet de réaliser un test de comparaison de deux proportions


inconnues.
pwr.2p.test(x,y) Calcule la puissance pour un test de comparaison de deux proportions
inconnues.
pwr.2p2n.test(x,y) Calcule la puissance pour un test de comparaison de deux proportions
inconnues à effectifs inégaux.
322 7 • Tests paramétriques et non paramétriques

EXERCICES

Exercice 7.1 Le jus d’orange contre l’acide ascorbique

Le but de cet exercice est de mettre en œuvre le test de Student de comparaison entre deux
espérances de lois normales de variances inconnues mais égales.

Adapté de F. Couty, J. Debord et D. Fredon, Mini Manuel de Probabilités et statistique,


Dunod, 2007.
Pour comparer l’effet de la vitamine C du jus d’orange et de l’acide ascorbique de synthèse, on
a donné, pendant 6 semaines, du jus d’orange à un groupe de 60 cobayes et de la vitamine de
synthèse à un groupe de 40 autres cobayes. Puis on a mesuré la longueur des odontoblastes des
incisives. Les résultats suivants ont été relevés :
– Jus d’orange : 8,2 ; 9,4 ; 9,6 ; 9,7 ; 10,0 ; 14,5 ; 15,2 ; 16,1 ; 17,6 ; 21,5 ; 14,0 ; 13,8 ; 12,8 ;
15,0 ; 9,5 ; 10,9 ; 12,4 ; 14,7 ; 10,7 ; 11,1 ; 13,8 ; 13,1 ; 8,6 ; 13,9 ; 15,2 ; 13,6 ; 13,4 ; 12,3 ;
15,2 ; 11,2 ; 19,6 ; 7,8 ; 14,1 ; 12,5 ; 14,1 ; 17,6 ; 13,5 ; 12,4 ; 12,6 ; 14,6 ; 15,5 ; 11,6 ; 11,8 ;
12,9 ; 8,1 ; 11,8 ; 18,7 ; 12,6 ; 16,0 ; 15,8 ; 17,2 ; 16,4 ; 11,2 ; 10,2 ; 13,6 ; 13,2 ; 15,9 ; 9,8 ;
8,8 ; 12,0 ;
– Acide ascorbique : 4,2 ; 5,2 ; 5,8 ; 6,4 ; 7,0 ; 7,3 ; 10,1 ; 11,2 ; 11,3 ; 11,5 ; 7,1 ; 9,8 ; 5,3 ;
4,8 ; 11,9 ; 10,1 ; 12,5 ; 14,6 ; 4,9 ; 9,7 ; 7,0 ; 3,8 ; 5,0 ; 9,3 ; 8,7 ; 8,7 ; 8,7 ; 9,5 ; 2,5 ; 6,6 ;
13,6 ; 6,6 ; 9,4 ; 12,1 ; 13,1 ; 4,1 ; 12,1 ; 8,8 ; 7,0 ; 7,5.
Testez, au seuil a = 5 %, l’hypothèse nulle H0  l’effet des deux produits est le même  contre
l’hypothèse alternative H1  le jus d’orange accélère plus la croissance que l’acide ascorbique .
Pour répondre à cette question, vous allez suivre la démarche suivante :
1) Rentrez les données en créant deux vecteurs. Vous nommerez le premier jus_orange et le
second acide_ascorbique.
2) Testez au seuil a = 5 % ensuite la normalité de chacune des deux populations et concluez.
3) À partir des conclusions obtenues des deux tests de normalité, pouvez-vous envisager la
démarche du cours : à savoir réaliser un test de Student pour répondre à la question qui vous a
été posée ? Réaliseriez-vous un test unilatéral ou bilatéral ?
4) Dans le cadre du test de Student, il y a deux cas à différencier : soit les deux variances des
deux populations sont égales soit elles ne le sont pas. Pour répondre à cette question, réalisez un
test de Fisher-Snedecor au seuil a = 5 %.
5) D’après le résultat obtenu à la dernière question, adaptez le test de Student correspondant à
cette réponse et concluez.
Exercices 323

Exercice 7.2 Traitement pour la pression artérielle

Le but de cet exercice est de mettre en place une procédure de test de Student sur deux
populations appariées.

Adapté de F. Couty, J. Debord et D. Fredon, Mini Manuel de Probabilités et statistique,


Dunod, 2007.
Dans un groupe de 37 sujets, les effets d’un traitement destiné à diminuer la pression artérielle
ont été expérimentés. Les résultats (valeur de la tension artérielle systolique en cmHg) ont été
relevés sur les 37 sujets et sont présentés dans le tableau ci-dessous.

Sujet n° 1 2 3 4 5 6 7 8 9 10 11 12 13
Avant traitement 15 18 17 20 21 18 17 15 19 16 19 17 19
Après traitement 12 16 17 18 17 15 18 14 16 18 20 16 15
Sujet n° 14 15 16 17 18 19 20 21 22 23 24 25 26
Avant traitement 15 14 16 21 20 21 18 17 17 17 15 17 18
Après traitement 17 18 16 15 14 11 13 13 15 14 15 19 14
Sujet n° 27 28 29 30 31 32 33 34 35 36 37
Avant traitement 16 10 17 18 14 15 15 17 17 20 17
Après traitement 16 14 14 15 19 19 16 19 15 17 16

Le traitement a-t-il une action significative, au risque a = 5 % ?


Pour répondre à cette question, vous allez suivre la démarche suivante :
1) Rentrez les données en créant deux vecteurs. Vous nommerez le premier avnt et le second
© Dunod – La photocopie non autorisée est un délit.

aprs. Quels sont les modes de chacun des deux vecteurs ? Quelles sont les tailles de chacun des
deux vecteurs ? Savez-vous pourquoi cette question vous est posée ?
2) Créez un vecteur diff en faisant la différence entre le vecteur aprs et le vecteur avnt
et affichez à l’écran le vecteur diff. L’ordre dans lequel vous calculez la différence n’a pas
d’importance. Vous pouvez faire avnt moins aprs ou aprs moins avnt.
3) La variable aléatoire que vous étudierez ici est la différence des tensions artérielles. Savez-
vous pourquoi vous allez étudier la variable aléatoire diff ?
4) Avant d’appliquer le test paramétrique adéquat, il vous faut vérifier que le vecteur diff suit
une loi normale. Comment procédez-vous ? Quel test appliquez-vous ? Est-ce que l’hypothèse
de normalité est vérifiée sur le vecteur diff ?
5) Pour répondre à la question initialement posée, quel est le test que vous allez utiliser ? Quel
type de test choisissez-vous ? Test unilatéral ou bilatéral ?
324 7 • Tests paramétriques et non paramétriques

6) Réalisez le test en précisant les deux hypothèses et la statistique du test. Puis concluez,
c’est-à-dire répondez à la question :  le traitement a-t-il une action significative, au risque
a = 5 % ? 

PROBLÈMES

Problème 7.1 Les glycines blanches contre les glycines violettes


Le jardinier souhaite comparer la taille d’une gousse de glycine blanche à celle d’une gousse
de glycine violette. Pour cela, il retourne voir l’étudiant en licence de biologie. Ce dernier lui
propose de réaliser un test de comparaison de deux moyennes provenant chacune des deux
populations, à savoir :
– la population de glycines blanches,
– la population de glycines violettes.
1) Pour répondre au problème posé par le jardinier, l’étudiant souhaiterait tester l’hypothèse que
la moyenne de la taille d’une gousse de glycine blanche est égale à la moyenne de la taille d’une
gousse de glycine violette. Quel type de test proposez-vous ?
2) L’étudiant aimerait calculer les caractéristiques classiques de position et de dispersion sur les
deux types d’espèces. Il commence d’abord par créer un jeu de données dans lequel il n’y a que
les données sur les glycines.

> glycines<-subset(Mesures,subset=(Mesures$espece=="glycine violette"


+ |Mesures$espece=="glycine blanche"))
> glycines$espece<-factor(glycines$espece)

Puis il tape la ligne de commande suivante :

> tapply(glycines$taille,glycines$espece,summary)

Que lui indique-t-elle ?


Il tape ensuite la ligne de commande suivante :

> tapply(glycines$taille,glycines$espece,sd)

Que lui renvoie-t-elle ?


Problèmes 325

3) À cette étape, il vous est suggéré de faire des représentations graphiques. Quel(s) type(s) de
représentation envisagez-vous ?
4) Que font les lignes de commande suivantes ? Tapez-les, les unes à la suite des autres.

> layout(matrix(c(1,2,1,3),nrow=2,ncol=2,byrow=F))
> boxplot(taille~espece,data=glycines)
> glycine_blanche<-glycines[glycines$espece=="glycine blanche",]
> qqnorm(glycine_blanche$taille,ylab="Taille des glycines blanches")
> qqline(glycine_blanche$taille)
> glycine_violette<-glycines[glycines$espece=="glycine violette",]
> qqnorm(glycine_violette$taille,ylab="Taille des glycines violettes")
> qqline(glycine_violette$taille)

Remarque :
1. Dans ces lignes de commande, vous pouvez noter l’introduction d’une nouvelle fonc-
tion layout. Cette dernière modifie la fenêtre graphique. Elle permet de juxtaposer
plusieurs graphiques aux endroits que vous indiquez et le tout sur la même fenêtre.
Enfin, n’oubliez pas de taper layout(1) pour supprimer la partition de la fenêtre
graphique que vous aurez mise en place.
2. Dans ces lignes de commande, vous pouvez noter la présence de deux nouvelles
fonctions qqnorm et qqline. La fonction qqnorm permet de tracer un QQPlot avec la
loi normale comme distribution théorique de référence.

Définition 7.11 Le QQPlot (ou Quantile to Quantile Plot) est un graphique dont
l’objectif est de tester la conformité entre la distribution empirique d’une variable et
une distribution théorique donnée. Souvent, vous appliquerez ce type de représentation
© Dunod – La photocopie non autorisée est un délit.

pour illustrer le test de conformité à la distribution normale.

5) À cette étape et en vous aidant des graphiques que vous venez de tracer, est-ce que vous
envisagez toujours le test que vous avez suggéré ci-dessus ?
6) Les conditions d’application du test que vous souhaitez utiliser sont-elles vérifiées ? Vous
réaliserez un test de Shapiro-Wilk sur les deux échantillons pour conclure au seuil a = 5 %.
Pourquoi vous est-il suggéré un test non paramétrique ?
7) Quel est l’équivalent non paramétrique du test de Student ?
8) Lorsque vous exécutez un test de Mann-Whitney-Wilcoxon, quelle est la différence principale
avec un test de Student qu’il faut noter ?
326 7 • Tests paramétriques et non paramétriques

9) Exécutez la ligne de commande suivante :

> wilcox.test(taille~espece,data=glycines,conf.int=TRUE)

Que fait-elle ?
10) Concluez avec un risque d’erreur de première espèce a = 5 %.

Problème 7.2 Comparaison des masses des follicules des lauriers roses :
avant et après séchage
Le jardinier souhaite comparer la masse d’un follicule de laurier rose à la masse sèche de ce
même follicule. Pour cela, il retourne voir l’étudiant en licence de biologie et lui soumet son
problème.
1) Pour commencer l’étudiant isole les données sur les lauriers roses du tableau de données
Mesures5. Comment procède-t-il ? Vous nommerez le nouveau tableau de données lauriers.
2) Combien de lignes et de colonnes a ce nouveau tableau de données ? Quel est le type de
chacune des colonnes ?
3) Exécutez les lignes de commande suivantes :

> la_masse<-lauriers$masse
> la_masse_sec<-lauriers$masse_sec
> diff_laurier<-(la_masse-la_masse_sec)

Que font-elles ?
4) Sur le même graphique :
– dessinez une boîte à moustaches de la variable diff_laurier,
– mettez une légende  Différence entre la masse et la masse sèche pour une graine de
laurier  sur l’axe des ordonnées,
– mettez un titre  Boîte à moustaches ,
– tracez une ligne horizontale d’équation y = 0 dans cette représentation  Boîte à
moustaches , à l’aide de la commande suivante :
> abline(h=0, lty=2)

Remarque : il faudra certainement que vous modifiez l’échelle de la boîte à moustaches,


car sinon vous ne verrez pas apparaître cette ligne. Pour cela, utilisez l’option ylim.
– tracez le QQ-plot de la variable diff_laurier à côté de la  Boîte à moustaches ,
– mettez une légende  Différence entre la masse et la masse sèche  sur l’axe des ordonnées,
Du mal à démarrer 327

– tracez la QQ-line dans cette même représentation,


– comparez votre graphique avec le graphique qui se trouve dans la partie intitulée  Solution
des problèmes .
5) Quel test envisagez-vous pour répondre à la question posée par le jardinier ? Pourquoi ?
6) Exécutez la ligne de commande suivante :

> shapiro.test(diff_laurier)

Que fait-elle ? Concluez avec un risque d’erreur de première espèce a = 5 %.


7) Exécutez la ligne de commande suivante :

> t.test(diff_laurier)

Que fait-elle ? Concluez avec un risque d’erreur de première espèce a = 5 %.


8) Quel est l’équivalent non paramétrique du test de Student que vous venez de réaliser ?
9) Exécutez la ligne de commande suivante :

> wilcox.test(diff_laurier)

Que fait-elle ? Qu’observez-vous ?


Si vous aviez voulu uniquement procéder au test de Student ou au test de Wilcoxon sur ces
B deux échantillons appariés, il aurait suffi de rajouter l’option paired=TRUE dans la ligne de
S
U
commande concernée :

> t.test(lauriers$masse,lauriers$masse_sec,paired=TRUE)
© Dunod – La photocopie non autorisée est un délit.

et :

> wilcox.test(lauriers$masse,lauriers$masse_sec,paired=TRUE)

DU MAL À DÉMARRER

➩ Exercice 7.1
1) Utilisez la fonction c.
2) Utilisez la fonction shapiro.test.
328 7 • Tests paramétriques et non paramétriques

3) Relisez le paragraphe 7.3.2.


4) Utilisez la fonction var.test.
5) Utilisez la fonction t.test.

➩ Exercice 7.2
1) Utilisez les fonctions c, mode et length.
2) Créez le vecteur diff des différences.
3) Les échantillons sont-ils appariés ou indépendants ?
4) Utilisez la fonction shapiro.test.
5) Relisez le paragraphe 7.4.
6) Relisez le paragraphe 7.4 et utilisez la fonction t.test.

➩ Problème 7.1
1) Relisez le paragraphe 7.3.
2) Lisez l’aide de la fonction tapply.
3) Quelle est la nature de la variable taille ?
4) Rien à signaler.
5) Étudiez la normalité des deux variables.
6) Utilisez la fonction shapiro.test.
7) Relisez le paragraphe 7.3.1.
8) Quelles sont les hypothèses testées par le test de Mann-Whitney-Wilcoxon ?
9) Consultez l’aide de la fonction wilcox.test.
10) Utilisez la p-valeur calculée à la question précédente.

➩ Problème 7.2
1) Utilisez la fonction subset.
2) Utilisez les fonctions dim ou str.
3) Affichez le vecteur diff_laurier.
4) Consultez l’aide de la fonction boxplot.
5) Les échantillons sont-ils liés ou indépendants ? En fonction de la réponse, relisez le
paragraphe 7.3 ou 7.4.
6) Consultez l’aide de la fonction shapiro.test.
Solution des exercices 329

7) Relisez le paragraphe 7.4.


8) Relisez le paragraphe 7.4.
9) Consultez l’aide de la fonction wilcox.test.

SOLUTION DES EXERCICES

Exercice 7.1
1)

> jus_orange=c(8.2,9.4,9.6,9.7,10.0,14.5,15.2,16.1,17.6,21.5,14.0,13.8,
+ 12.8,15.0,9.5,10.9,12.4,14.7,10.7,11.1,13.8,13.1,8.6,13.9,15.2,13.6,13.4,
+ 12.3,15.2,11.2,19.6,7.8,14.1,12.5,14.1,17.6,13.5,12.4,12.6,14.6,15.5,11.6,
+ 11.8,12.9,8.1,11.8,18.7,12.6,16.0,15.8,17.2,16.4,11.2,10.2,13.6,13.2,15.9,
+ 9.8,8.8,12.0)
> acide_ascorbique=c(4.2,5.2,5.8,6.4,7.0,7.3,10.1,11.2,11.3,11.5,7.1,9.8,
+ 5.3,4.8,11.9,10.1,12.5,14.6,4.9,9.7,7.0,3.8,5.0,9.3,8.7,8.7,8.7,9.5,2.5,
+ 6.6,13.6,6.6,9.4,12.1,13.1,4.1,12.1,8.8,7.0,7.5)

2) Pour tester la normalité de la population jus_orange, vous tapez la ligne de commande


suivante :

> shapiro.test(jus_orange)

Shapiro-Wilk normality test


© Dunod – La photocopie non autorisée est un délit.

data: jus_orange
W = 0.98357, p-value = 0.5962

et vous concluez avec la p-valeur obtenue. La p-valeur du test de Shapiro-Wilk étant strictement
supérieure à a = 5 %, le test n’est pas significatif au seuil a = 5 %. Vous conservez H0 au seuil
a = 5 %. Le risque d’erreur associé à cette décision est un risque d’erreur de deuxième espèce
b. Vous ne pouvez pas l’évaluer dans le cas présent mais il est considéré comme satisfaisant car
l’effectif de l’échantillon, auquel le test de Shapiro-Wilk est appliqué, vaut 60 et donc dépasse
30. En effet :

> length(jus_orange)

[1] 60
330 7 • Tests paramétriques et non paramétriques

Pour tester la normalité de la population acide_ascorbique, vous tapez la ligne de com-


mande suivante :

> shapiro.test(acide_ascorbique)

Shapiro-Wilk normality test


data: acide_ascorbique
W = 0.97781, p-value = 0.6087

et vous concluez avec la p-valeur obtenue. La p-valeur du test de Shapiro-Wilk étant strictement
supérieure à a = 5 %, le test n’est pas significatif au seuil a = 5 %. Vous conservez H0 au seuil
a = 5 %. Le risque d’erreur associé à cette décision est un risque d’erreur de deuxième espèce
b. Vous ne pouvez pas l’évaluer dans le cas présent mais il est considéré comme satisfaisant car
l’effectif de l’échantillon, auquel le test de Shapiro-Wilk est appliqué, vaut 40 et donc dépasse
30. En effet :

> length(acide_ascorbique)

[1] 40

3) Comme les conditions d’application sont vérifiées, vous pouvez envisager de réaliser le test
de Student pour deux populations indépendantes. Mais attention à la formulation de la question :
ici il s’agit d’un test unilatéral.
4) Maintenant la question qui reste à résoudre est de savoir si les deux variances des deux
populations sont égales ou pas. Pour répondre à cette question, il suffit de réaliser le test de
Fisher-Snedecor. Vous devez taper la ligne de commande suivante :

> var.test(jus_orange,acide_ascorbique)

F test to compare two variances


data: jus_orange and acide_ascorbique
F = 0.93325, num df = 59, denom df = 39, p-value = 0.798
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.5139606 1.6370265
sample estimates:
ratio of variances
0.9332472
Solution des exercices 331

Comme la p-valeur est strictement supérieure à a = 5 %, le test n’est pas significatif au seuil
a = 5 %. Vous conservez H0 au seuil a = 5 %. Le risque d’erreur associé à cette décision est
un risque d’erreur de deuxième espèce b que nous n’évaluerons pas ici.
5) Il ne vous reste plus qu’à effectuer un test de Student dans le cas où les deux variances des
deux populations sont égales. Pour cela, tapez la ligne de commande suivante :

> t.test(jus_orange,acide_ascorbique,alternative="greater",var.equal=TRUE)

Two Sample t-test

data: jus_orange and acide_ascorbique


t = 3.1319, df = 18, p-value = 0.002881
alternative hypothesis: true difference in means is greater than 0
95 percent confidence interval:
2.311966 Inf
sample estimates:
mean of x mean of y
13.18 8.00

Comme la p-valeur est inférieure ou égale à a = 5 %, le test est significatif au seuil a = 5 %.


Vous rejetez H0 au seuil a = 5 % et vous décidez que H1 est vraie au seuil a = 5 % avec
un risque de première espèce a = 5%. Vous concluez au risque a = 5 % que le jus d’orange
accélère significativement plus la croissance que l’acide ascorbique.

Les fonctions var.test et t.test.


B
S
U

Exercice 7.2
1)

> avnt<-c(15,18,17,20,21,18,17,15,19,16,19,17,19,15,14,16,21,20,21,18,17,17,
+ 17,15,17,18,16,10,17,18,14,15,15,17,17,20,17)
> aprs<-c(12,16,17,18,17,15,18,14,16,18,20,16,15,17,18,16,15,14,11,13,13,15,
+ 14,15,19,14,16,14,14,15,19,19,16,19,15,17,16)

> mode(avnt)

[1] "numeric"
332 7 • Tests paramétriques et non paramétriques

> mode(aprs)

[1] "numeric"

> length(avnt)

[1] 37

> length(aprs)

[1] 37

Cette question vous a été posée afin de vérifier que les deux vecteurs avnt et aprs sont bien de
même taille, afin d’être certain que R ne recycle pas l’un des deux et dans ce cas cette mesure
affectée par défaut ne correspondrait plus au même patient.
2)

> diff<-aprs-avnt
> diff

[1] -3 -2 0 -2 -4 -3 1 -1 -3 2 1 -1 -4 2 4 0
[17] -6 -6 -10 -5 -4 -2 -3 0 2 -4 0 4 -3 -3 5 4
[33] 1 2 -2 -3 -1

3) Vous étudiez la variable aléatoire diff qui est la différence entre les deux séries de mesures
car les deux échantillons  Avant traitement  et  Après traitement  sont des échantillons
appariés et donc non indépendants. En effet, les mesures effectuées ont été faites sur les mêmes
patients.
4) Il faut que vous procédiez à un test de normalité. Le seul que vous connaissez, tout du moins
le seul qui a été présenté dans ce cours est le test de Shapiro-Wilk. Il en existe d’autres que vous
découvrirez peut-être par la suite mais pas dans le cadre de cet ouvrage. Pour réaliser ce test,
vous tapez la ligne de commande suivante :

> shapiro.test(diff)
Solution des exercices 333

Shapiro-Wilk normality test

data: diff
W = 0.9242, p-value = 0.3937

Comme la p-valeur est strictement supérieure à a = 5 %, le test n’est pas significatif au seuil
a = 5 %. Vous conservez H0 au seuil a = 5 % avec un risque d’erreur de deuxième espèce b.
Vous ne pouvez pas l’évaluer dans le cas présent mais il est considéré comme satisfaisant car
l’effectif de l’échantillon, auquel le test de Shapiro-Wilk est appliqué, vaut 37 et donc dépasse
30. En effet :

> length(diff)

[1] 37

Vous pouvez envisager d’appliquer un test paramétrique sur le vecteur diff puisque les
données n’ont pas permis de refuser l’hypothèse de normalité.
5) Le test paramétrique que vous allez utiliser est le test de Student, puisque la variance est
inconnue.
6) Hypothèses du test :
les deux hypothèses que vous testez sont :

H0 : mavnt = maprs
contre
H1 : mavnt = maprs .
© Dunod – La photocopie non autorisée est un délit.

Statistique du test :
&D
m
la variable aléatoire √ est la statistique du test.
S D,c / n
Pour réaliser le test, tapez la ligne de commande suivante :

> t.test(diff)

One Sample t-test

data: diff
t = -2.3931, df = 36, p-value = 0.02205
alternative hypothesis: true mean is not equal to 0
334 7 • Tests paramétriques et non paramétriques

95 percent confidence interval:


-2.3467942 -0.1937463
sample estimates:
mean of x
-1.27027

Comme la p-valeur est inférieure ou égale à a = 5 %, le test est significatif au seuil a = 5 %.


Vous rejetez H0 au seuil a = 5 % et vous décidez que H1 est vraie au seuil a = 5 % avec
un risque d’erreur de première espèce a = 5 %. Vous concluez donc au seuil a = 5 % que le
traitement a une action significative.

La fonction t.test.
B
S
U

SOLUTION DES PROBLÈMES

Problème 7.1
1) Le test de Student de comparaison entre deux espérances de lois normales de variances
inconnues semble être adapté.
2) La première ligne de commande :

> tapply(glycines$taille,glycines$espece,summary)

lui indique les statistiques descriptives pour chaque groupe.

$‘glycine blanche‘
Min. 1st Qu. Median Mean 3rd Qu. Max.
8.20 12.33 14.60 14.77 16.88 21.10

$‘glycine violette‘
Min. 1st Qu. Median Mean 3rd Qu. Max.
7.80 10.67 12.00 13.77 14.65 27.00

La deuxième ligne de commande :

>tapply(glycines$taille,glycines$espece,sd)
Solution des problèmes 335

lui renvoie les écarts-types de chaque groupe.

glycine blanche glycine violette


3.303652 4.937306

3) Le type de représentation graphique que vous pouvez envisager de réaliser est une boîte à
moustaches pour la variable taille dans chacune des deux espèces.
4) Les six lignes de commande exécutent un graphique qui met en place les deux boîtes à
moustaches et les QQPlot pour chacune des deux espèces. Ces deux derniers graphiques vous
permettent de voir si la distribution des données au sein de la population est en adéquation avec
la loi normale.
© Dunod – La photocopie non autorisée est un délit.

Figure 7.1

5) En observant les QQPlot, vous vous apercevez que la distribution de la variable taille des
glycines violettes ne semble pas suivre une loi normale puisqu’un certain nombre de points
s’échappent de la ligne droite. Donc, il semblerait que le test de Student ne soit pas envisageable
car la condition de normalité ne va peut-être pas être vérifiée.
336 7 • Tests paramétriques et non paramétriques

6) Vérifiez que les deux échantillons proviennent bien chacun d’une distribution normale. Pour
cela, effectuez les deux tests de Shapiro-Wilk sur chacun des deux échantillons.

> tapply(glycines$taille,glycines$espece,shapiro.test)

$‘glycine blanche‘
Shapiro-Wilk normality test
data: X[[i]]
W = 0.97977, p-value = 0.4906
$‘glycine violette‘
Shapiro-Wilk normality test
data: X[[i]]
W = 0.83629, p-value = 2.386e-06

Pour les glycines blanches, la p-valeur étant strictement supérieure à a = 5 %, le test n’est pas
significatif au seuil a = 5 %. Donc vous acceptez H0 au seuil a = 5 % avec un risque d’erreur
de deuxième espèce b. Vous ne pouvez pas l’évaluer dans le cas présent mais il est considéré
comme satisfaisant car l’effectif de l’échantillon, auquel le test de Shapiro-Wilk est appliqué,
vaut 54 et donc dépasse 30. En effet :

> tapply(glycines$taille,glycines$espece,length)

glycine blanche glycine violette


54 56

Pour les glycines violettes, la p-valeur étant inférieure ou égale à a = 5 %, le test est
significatif. Donc vous rejetez H0 au seuil a = 5 % et vous décidez que H1 est vraie au seuil
a = 5 % avec un risque de première espèce a = 5 %.
Donc une des deux hypothèses de normalité, condition d’application du test de Student, n’est
pas vérifiée. Il faut donc que vous envisagiez de réaliser un test non paramétrique, équivalent au
test de Student.
7) Le test non paramétrique, équivalent du test paramétrique de Student, est le test de Mann-
Whitney-Wilcoxon.
8) Une première différence entre les deux tests est au niveau de la formulation des hypothèses
du test. Le test de Mann-Whitney-Wilcoxon teste les deux hypothèses suivantes :
H0 : L(X ) = L(Y )
contre
H1 : L(X ) = L(Y ).
Solution des problèmes 337

9) La ligne de commande :

> wilcox.test(taille~espece,data=glycines,conf.int=TRUE)

renvoie le résultat suivant :

Wilcoxon rank sum test with continuity correction

data: taille by espece


W = 1947.5, p-value = 0.009289
alternative hypothesis: true location shift is not equal to 0
95 percent confidence interval:
0.5000023 3.2999868
sample estimates:
difference in location
1.899959

En fait, cette ligne de commande réalise le test non paramétrique de Mann-Whitney-Wilcoxon.


10) En regardant la sortie donnée par R ci-dessus, vous notez que la p-valeur étant inférieure
ou égale à a = 5 %, le test est significatif au seuil a = 5 %. Vous rejetez H0 au seuil a = 5 %
et vous décidez que H1 est vraie au seuil a = 5 % avec un risque d’erreur de première espèce
a = 5 %. Vous en concluez que les deux lois ne sont pas égales au seuil a = 5 %.
La fonction wilcox.test.
B
S
U

Problème 7.2
1) Pour isoler les données sur les lauriers roses du tableau de données Mesures5, l’étudiant doit
taper la ligne de commande suivante :

> lauriers<-subset(Mesures5,subset=(Mesures5$espece=="laurier rose"))

2) Pour répondre aux questions qui vous sont posées, tapez la ligne de commande suivante :

> str(lauriers)

qui renvoie :

’data.frame’: 72 obs. of 5 variables:


$ masse : num 4.9 6.2 4 3.3 4.8 5.6 4.5 6.3 4.2 3.9 ...
$ taille : num 15.3 15.9 15 11 15.1 15.6 15.3 18.4 14 12.6 ...
338 7 • Tests paramétriques et non paramétriques

$ graines : int NA NA NA NA NA NA NA NA NA NA ...


$ masse_sec: num 1.2 1.1 0.7 NA 0.8 1 0.7 1.6 0.8 1.1 ...
$ espece : Factor w/ 4 levels "bignone","glycine blanche",..: 4 4...

Ce nouveau tableau de données a 72 lignes et 5 colonnes. Quatre colonnes sont des variables
quantitatives, trois d’entre elles sont de type numérique et la quatrième est de type entier. Enfin,
la dernière colonne est une variable qualitative puisqu’elle est mentionnée comme Factor.
3) Les lignes de commande donnent lieu à la création d’une nouvelle variable diff_laurier
qui est la différence entre la masse d’un follicule et la masse sèche de ce même follicule de
laurier rose.
4) Le graphique que vous êtes censé obtenir si vous avez suivi les instructions à la lettre est
représenté à la figure 7.2.

Figure 7.2

5) D’après les deux graphiques de la figure 7.2, il semblerait que l’hypothèse de normalité
nécessaire au test paramétrique de Student soit vérifiée. Vous le confirmez par un test de
normalité à la question suivante.
Solution des problèmes 339

6) Si vous tapez la ligne de commande suivante :

> shapiro.test(diff_laurier)

vous obtenez comme résultat :

Shapiro-Wilk normality test

data: diff_laurier
W = 0.9764, p-value = 0.2149

Comme la p-valeur est strictement supérieure à a = 5 %, le test n’est pas significatif au seuil
a = 5 %. Vous conservez H0 au seuil a = 5 % avec un risque d’erreur de deuxième espèce b.
Vous ne pouvez pas l’évaluer dans le cas présent mais il est considéré comme satisfaisant car
l’effectif de l’échantillon, auquel le test de Shapiro-Wilk est appliqué, vaut 72 et donc dépasse
30. En effet :

> length(diff_laurier)

[1] 72

Donc, vous pouvez envisager un test de Student sur la variable diff_laurier.


7) Si vous tapez la ligne de commande suivante :

> t.test(diff_laurier)

vous obtenez comme résultat :


© Dunod – La photocopie non autorisée est un délit.

One Sample t-test

data: diff_laurier
t = 35.3424, df = 68, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
3.240851 3.628714
sample estimates:
mean of x
3.434783

Comme la p-valeur est inférieure ou égale à a = 5 %, le test est significatif au seuil a = 5 %.


Vous rejetez H0 au seuil a = 5 % et vous décidez que H1 est vraie au seuil a = 5 % avec un
risque d’erreur de première espèce a = 5 %.
340 7 • Tests paramétriques et non paramétriques

8) L’équivalent du test de Student en non paramétrique est le test des rangs signés de Wilcoxon.
9) La ligne de commande

> wilcox.test(diff_laurier)

réalise un test des rangs signés de Wilcoxon.


Le résultat est le suivant :

Wilcoxon signed rank test with continuity correction

data: diff_laurier
V = 2415, p-value = 5.28e-13
alternative hypothesis: true location is not equal to 0

Comme la p-valeur est inférieure ou égale à a = 5 %, le test est significatif au seuil a = 5 %.


Vous rejetez H0 au seuil a = 5 % et vous décidez que H1 est vraie au seuil a = 5 % avec un
risque d’erreur de première espèce a = 5 %.

L’option paired=TRUE dans les fonctions t.test et wilcox.test.


B
S
U

> t.test(lauriers$masse,lauriers$masse_sec,paired=TRUE)

Paired t-test
data: lauriers$masse and lauriers$masse_sec
t = 35.342, df = 68, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
3.240851 3.628714
sample estimates:
mean of the differences
3.434783

> wilcox.test(lauriers$masse,lauriers$masse_sec,paired=TRUE)

Wilcoxon signed rank test with continuity


correction
data: lauriers$masse and lauriers$masse_sec
V = 2415, p-value = 5.28e-13
alternative hypothesis: true location shift is not equal to 0
Chapitre 8

Tests du Khi-deux

The combination of some data and an aching desire for an answer does not ensure that a
reasonable answer can be extracted from a given body of data. 

De John W. Tukey,  Sunset salvo , The American Statistician, Vol. 40, No. 1, 1986.

Objectifs de ce chapitre
➤ étudier les liens entre deux variables qualitatives
➤ étudier l’adéquation entre la distribution d’une variable au sein d’une population et une
distribution théorique
➤ présenter les tests du x2 d’indépendance et d’adéquation
➤ présenter le test exact de Fisher
➤ présenter le test de Mac-Nemar

8.1 TEST DU x2 D’INDÉPENDANCE


Contexte du test :
le test du x2 d’indépendance a pour but d’étudier la liaison entre deux variables qualitatives X
et Y .
342 8 • Tests du Khi-deux

Soit le tableau de contingence suivant :


Y
X\ y1 ··· yj ··· yq Totaux
x1 n 1,1 ··· n 1, j ··· n 1,q n 1,•
.. .. .. .. ..
. . . . .
xi n i,1 ··· n i, j ··· n i,q n i,•
.. .. .. .. ..
. . . . .
xp n p,1 ··· n p, j ··· n p,q n p,•
Totaux n •,1 ··· n •, j ··· n •,q n •,• = n
où n i, j correspond au nombre d’individus observés, les effectifs observés, dans l’échantillon de
taille n ayant la i-ème modalité xi pour X et la j-èmeqmodalité y j pour Y . Vous avez déjà vu
dans le chapitre 5 que la notation n i,• correspond à j=1 n i, j et la notation n •, j correspond à
p
i=1 n i, j .
Hypothèses du test :
H0 : les deux variables X et Y sont indépendantes
contre
H1 : les deux variables X et Y ne sont pas indépendantes.
Principe du test :
le principe du test du x2 d’indépendance consiste à comparer les effectifs tels qu’ils ont été
observés à la répartition obtenue en supposant que les deux variables X et Y sont indépendantes.
Dans ce cas, en considérant que les marges (n 1,• , . . . , n i,• , . . . , n p,• , n •,1 , . . . , n •, j , . . . , n •,q )
sont fixées, vous pouvez calculer cette répartition théorique dans chacun des deux échantillons.
Vous avez alors :
n i,• × n •, j
ci, j = ,
n •,•
qui sont les effectifs théoriques sous l’hypothèse nulle H0 .
Conditions d’application du test :
il faut que l’échantillon soit constitué de n •,• réalisations indépendantes du couple aléatoire
(X , Y ). Lorsque vous vous servez de l’approximation par la loi du Khi-deux, les conditions
d’application sont les suivantes :
ci, j  5 et n •,•  50.
Statistique du test :
l’indice suivant, dû à Pearson, permet d’étudier l’écart entre les deux répartitions, observée et
théorique, et est défini par :

p

q
(n i, j − ci, j )2
2
x (obs) = ·
ci, j
i=1 j=1
8.1 Test du x2 d’indépendance 343

Si l’hypothèse nulle H0 est vérifiée et lorsque les conditions d’application du test du x2 sont
remplies, x2 (obs) est une réalisation d’une variable aléatoire qui suit approximativement la loi
du Khi-deux à ( p − 1)(q − 1) degrés de liberté.
Décision et conclusion du test :
pour un seuil fixé a, les tables de la loi du Khi-deux
 à ( p − 1)(q − 1) degrés de liberté vous
fournissent une valeur critique ca telle que : P x2 (( p − 1)(q − 1))  ca = 1 − a. Alors vous
décidez : 
si x2 (obs) < ca H0 est vraie,
si x2 (obs)  ca H1 est vraie.
Dans le cas où vous ne pouvez pas rejeter H0 au seuil a et par conséquent vous l’acceptez au
seuil a par défaut, vous devriez calculer le risque d’erreur de deuxième espèce b du test. Dans le
cadre de ce livre, la formule pour calculer le risque d’erreur ne sera pas donnée et par conséquent
vous ne pourrez pas calculer la puissance du test.
Remarque : ce test, tel qu’il est exposé, ne peut pas être appliqué à des échantillons
appariés. Le test de Mac-Nemar peut s’utiliser dans ce cas. Ce dernier sera présenté à la
fin de ce chapitre.

La fonction sous R qui permet de réaliser ce test est la fonction chisq.test.


B
S
U
Exemple : vous trouverez deux exemples qui illustrent ce cas dans les exercices 1 et 2 de
ce chapitre.

Et lorsque les conditions d’application de l’approximation par la loi du Khi-deux ne


sont pas remplies, que pouvez-vous faire ?
1. Il existe des corrections, par exemple celle de Yates. La correction de Yates est une
correction de continuité qui consiste à utiliser la statistique du test modifiée de la manière
suivante : + + 2
© Dunod – La photocopie non autorisée est un délit.

+ n i,• × n •, j ++ 1
+
 p
q +n i, j − n •,• + 2

x2 (obs) = n i,• × n •, j ·
i=1 j=1
n •,•
2. Il existe également le test exact de Fisher dans le cas de deux variables qualitatives à deux
modalités. La fonction sous R qui permet de réaliser ce test est la fonction fisher.test.
Vous trouverez un exemple qui illustre ce cas dans l’exercice 1 de ce chapitre.
3. R permet de s’affranchir de ces conditions si vous le demandez au langage grâce à l’option
simulate.p.value=TRUE, qui calcule alors la valeur exacte de la p-valeur en utilisant la
méthode de Monte-Carlo.
4. S’il y a plus de deux modalités, vous pouvez essayer d’en regrouper si cela est possible,
c’est-à-dire si cela a un sens.
344 8 • Tests du Khi-deux

Enfin, il faut faire une étude de résidus. Lorsque l’hypothèse d’indépendance H0 est vérifiée,
les termes dont les carrés sont les contributions à la valeur x2 (obs) et qui sont définis par :
n i,• × n •, j
n i, j −
n •,•
' ,
n i,• × n •, j
n •,•

sont des réalisations de variables aléatoires qui suivent approximativement la loi normale centrée
et réduite.
Vous pouvez montrer qu’une meilleure approximation de la loi normale centrée et réduite est
obtenue si vous considérez les valeurs ci-dessus et que vous les divisez par des estimations des
écarts-types correspondants :
' 
n i,• n •, j
1− 1− .
n •,• n •,•

Vous obtenez finalement les écarts réduits :


n i,• × n •, j
n i, j −
n •,•
'  ·
n i,• n •, j n i,• × n •, j
1− 1−
n •,• n •,• n •,•

Vous pouvez alors étudier les écarts réduits comme vous le ferez pour des résidus obtenus après
une régression linéaire simple (chapitre 9) ou une analyse de la variance (chapitre 10).

8.2 TEST DU x2 D’ADÉQUATION D’UNE LOI À UNE LOI DONNÉE


Principe du test :
le test suivant permet de s’intéresser à la possibilité de l’adéquation de la distribution d’un
caractère au sein d’une population à une loi de probabilité donnée. Il est adapté pour des lois de
probabilité discrètes et peut être également utilisé pour une loi continue entièrement spécifiée.
Une application de celui-ci au cas d’une loi discrète de support fini définie par (qxk )xk ∈X avec
Card (X ) = K est présentée ici.
Hypothèses du test :

H0 : (P[X = xk ] = pxk )xk ∈X = (qxk )xk ∈X


contre
H1 : (P[X = xk ] = pxk )xk ∈X = (qxk )xk ∈X .
8.3 Test exact de Fisher 345

Conditions d’application du test :


l’échantillon doit être constitué de n • réalisations indépendantes du caractère étudié. Soient ck
les effectifs théoriques et n • l’effectif de l’échantillon. Les conditions d’utilisation de l’approxi-
mation par la loi du Khi-deux sont les suivantes :
ck  5 et n •  50.
Statistique du test :
la distance entre les effectifs observés m k et les effectifs théoriques ck est mesurée de la même
façon que dans le test précédent, à savoir :

K
(m k − ck )2
2
x (obs) = ·
ck
k=1

Si l’hypothèse nulle H0 est vérifiée et lorsque les conditions d’application du test du x2 sont
remplies, x2 (obs) est une réalisation d’une variable aléatoire qui suit approximativement la loi
du Khi-deux à (K − 1) degrés de liberté.
Décision et conclusion du test :
pour un seuil fixé a, les tables de laloi du Khi-deux à(K − 1) degrés de liberté vous fournissent
une valeur critique ca telle que : P x2 (K − 1)  ca = 1 − a. Alors vous décidez :

si x2 (obs) < ca H0 est vraie,
si x2 (obs)  ca H1 est vraie.
La fonction sous R qui permet de réaliser ce test est la fonction chisq.test.
B
S
U
Exemple : vous trouverez un exemple qui illustre ce cas dans l’exercice 3 de ce chapitre.

8.3 TEST EXACT DE FISHER


© Dunod – La photocopie non autorisée est un délit.

Pour présenter le principe du test exact de Fisher (1922), vous commencez par étudier le cas de
deux variables X et Y , ayant deux modalités. Vous traiterez ensuite le cas général.

8.3.1 Deux variables à deux modalités


Soient X et Y deux variables quantitatives discrètes ou qualitatives qui ne peuvent prendre que
deux modalités différentes. Le tableau de contingence de ces deux variables est :

Y
X\ 1 2 Totaux
1 n 1,1 n 1,2 n 1,•
2 n 2,1 n 2,2 n 2,•
Totaux n •,1 n •,2 n •,•
346 8 • Tests du Khi-deux

Dans ce tableau, les marges (n 1,• , n 2,• , n •,1 , n •,2 ) n’apportent pas d’information sur l’éventuelle
dépendance de X et de Y . Ce sont les valeurs prisent par n 1,1 , n 1,2 , n 2,1 et n 2,2 qui servent pour
étudier la dépendance de X et de Y .
Hypothèses du test :

H0 : les deux variables X et Y sont indépendantes


contre
H1 : les deux variables X et Y ne sont pas indépendantes.

Conditions d’application du test :


il faut que l’échantillon soit constitué de réalisations indépendantes du couple aléatoire (X , Y ).
Statistique du test :
elle ne sera pas donnée dans le cadre de ce livre.
Décision et conclusion du test :
vous utiliserez la p-valeur donnée par R ou un autre logiciel de statistique pour conclure.
Remarque :
1. La dénomination  exact  du test vient du fait que vous ne faites appel à aucune
approximation pour calculer la p-valeur du test.
2. Le niveau de signification du test est d’au plus a, il se peut qu’il soit beaucoup plus
faible, ce qui fait de ce test un test dit conservatif.
3. Ce test peut également être utilisé pour comparer deux proportions sur deux popula-
tions, comme vous l’avez vu dans le chapitre 7.

La fonction sous R qui permet de réaliser ce test est la fonction fisher.test.


B
S
U

Exemple : vous cherchez à savoir s’il existe une association entre la couleur des yeux,
clairs ou foncés, et la couleur des cheveux, blonds ou bruns, chez les êtres humains. Un
groupe de 20 individus de sexe féminin ou masculin ont été observés et voici les résultats :

Cheveux Yeux Clairs Foncés Totaux

Blonds 5 1 6
Bruns 0 14 14
Totaux 5 15 20

Vous souhaitez choisir entre les deux hypothèses suivantes :


8.3 Test exact de Fisher 347

H0 : la couleur des yeux est indépendante de celle des cheveux

contre

H1 : la couleur des yeux n’est pas indépendante de celle des cheveux.

Pour choisir entre les deux hypothèses, vous allez réaliser un test exact de Fisher. Pour
cela, tapez la ligne de commande suivante :

> fisher.test(matrix(c(5,1,0,14),ncol=2,byrow=TRUE))

Fisher’s Exact Test for Count Data

data: matrix(c(5, 1, 0, 14), ncol = 2, byrow = TRUE)


p-value = 0.000387
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
4.307393 Inf
sample estimates:
odds ratio
Inf

Comme la p-valeur (0,000387) est inférieure ou égale à a = 5 %, le test est significatif


au seuil a = 5 %. Vous rejetez H0 au seuil a = 5 % et vous décidez que H1 est vraie
au seuil a = 5 % avec un risque d’erreur de première espèce a = 5 %. Donc, il existe
un lien significatif au seuil a = 5 % entre la couleur des yeux et la couleur des cheveux.
Mais vous ne pouvez rien dire sur la nature de ce lien.
© Dunod – La photocopie non autorisée est un délit.

8.3.2 Deux variables ayant un nombre fini quelconque de modalités


Vous reprenez l’idée du paragraphe 8.3.1 ci-dessus et vous l’étendez au cas où les deux variables
étudiées ont un nombre fini quelconque, mais supérieur à deux, de modalités. Cette extension a
été réalisée en premier par G.H. Freeman et J.H. Halton en 1951, c’est pourquoi ce test est aussi
parfois appelé test de Freeman-Halton ou test de Fisher-Freeman-Halton.

Soient X et Y deux variables quantitatives discrètes ou qualitatives. Le tableau de contingence


de ces deux variables se présente sous la forme suivante :
348 8 • Tests du Khi-deux

Y
X\ y1 ··· yj ··· yq Totaux
x1 n 1,1 ··· n 1, j ··· n 1,q n 1,•
.. .. .. .. ..
. . . . .
xi n i,1 ··· n i, j ··· n i,q n i,•
.. .. .. .. ..
. . . . .
xp n p,1 ··· n p, j ··· n p,q n p,•
Totaux n •,1 ··· n •, j ··· n •,q n •,•

Dans ce tableau, les marges (n 1,• , . . . , n p,• , n •,1 , . . . , n •,q ) n’apportent pas d’information sur
l’éventuelle dépendance entre X et Y . Ce sont les valeurs prisent par n 1,1 , n 1,2 , . . ., n 1,q , n 2,1 ,
. . ., n 2,q , . . ., n i, j , . . ., n p,q−1 et n p,q qui servent pour étudier la dépendance entre X et Y .
Vous souhaitez choisir entre les deux hypothèses suivantes :

H0 : les deux variables X et Y sont indépendantes


contre
H1 : les deux variables X et Y ne sont pas indépendantes.

Le processus de test est le même que précédemment.


Remarque :
1. La dénomination  exact  du test vient du fait que vous ne faites appel à aucune
approximation pour calculer la p-valeur du test.
2. Le niveau de signification du test est d’au plus a, il se peut qu’il soit beaucoup plus
faible, ce qui fait de ce test un test conservatif.
3. Ce test peut également être utilisé pour comparer p proportions sur q populations
( p et q ne sont pas forcément égaux).

8.4 TEST DE MAC-NEMAR


Le test de Mac-Nemar (1947) s’applique à des tableaux de contingence à deux lignes et à deux
colonnes qui dénombrent les résultats de deux tests obtenus sur les mêmes individus. Chacun des
tests peut prendre la valeur A ou B et, de ce fait, ces tableaux sont donc de la forme suivante :

Y
X\ A B Totaux
A n 1,1 n 1,2 n 1,•
B n 2,1 n 2,2 n 2,•
Totaux n •,1 n •,2 n •,•
8.4 Test de Mac-Nemar 349

Hypothèses du test :
l’hypothèse H0 que vous cherchez à tester est que les totaux marginaux de chaque réponse sont
les mêmes pour chacun des deux tests :
n 1,1 + n 1,2 = n 1,1 + n 2,1 et n 2,1 + n 2,2 = n 1,2 + n 2,2 .
Ainsi le jeu d’hypothèses auquel le test permet de s’intéresser est :

H0 : n 1,2 = n 2,1
contre
H1 : n 1,2 = n 2,1 .

Conditions d’application du test :


il faut que l’échantillon soit constitué de réalisations indépendantes du couple aléatoire (X , Y ).
Les conditions d’utilisation de l’approximation par la loi du Khi-deux à 1 degré de liberté sont
les suivantes :
n 1,2 + n 2,1  20 et n 1,2 et n 2,1 assez grands.
Statistique du test :
la statistique du test de Mac-Nemar avec correction de continuité est donnée par la formule
suivante :  2
|n 1,2 − n 2,1 | − 1
McN (obs) = ·
n 1,2 + n 2,1
Remarque :pour obtenir la statistique
2  du test sans
2 correction de continuité, remplacez le
numérateur |n 1,2 − n 2,1 | − 1 par n 1,2 − n 2,1 .

Si l’hypothèse nulle H0 est vérifiée et lorsque les conditions d’application du test sont remplies,
la statistique McN suit approximativement la loi du Khi-deux à 1 degré de liberté.
Décision et conclusion du test :
vous utiliserez la p-valeur donnée par R ou par un autre logiciel de statistique pour conclure.
Remarque :
1. Ce test permet de comparer deux proportions sur deux populations dans le cas où les
deux échantillons sont appariés.
2. Le test d’homogénéité marginale est une extension du test de Mac-Nemar dans
le cas des variables qualitatives à plus de deux modalités. Il permet de comparer des
proportions, au nombre de deux ou plus, sur des populations, au nombre de deux ou
plus, lorsque les échantillons sont appariés.

La fonction sous R qui permet de réaliser ce test est la fonction mcnemar.test.


B
S
U
350 8 • Tests du Khi-deux

Exemple : vous trouverez un exemple qui illustre le cas qui vient d’être présenté dans
l’exercice 4 de ce chapitre.

EN RÉSUMÉ

Commande Description
chisq.test Permet de réaliser un test du Khi-deux d’indépendance ou d’adéquation.
fisher.test Permet de réaliser un test exact de Fisher d’indépendance.
mcnemar.test Permet de réaliser un test d’homogénéité marginale de Mac-Nemar.

EXERCICES

Exercice 8.1 Groupe sanguin et facteur Rhésus


Le tableau suivant donne la répartition de 10 033 personnes en fonction de leur groupe sanguin
et de leur facteur Rhésus.
O A B AB Totaux
Rh+ 3 620 3 805 934 172 8 531
Rh− 631 676 165 30 1 502
Totaux 4 251 4 481 1 099 202 10 033
Les deux caractères, groupe sanguin et facteur Rhésus, sont-ils indépendants ?
Pour répondre à cette question, voici la démarche à suivre :
1) Introduisez les données dans R dans un objet nommé Rhesus.
2) Vérifiez que les données sont bien celles de l’énoncé.
3) Est-ce que Rhesus est un objet de classe table ? Si ce n’est pas le cas, exécutez la commande
suivante :

> Rhesus<-as.table(as.matrix(Rhesus))

4) Représentez graphiquement les données :

> plot(Rhesus,main="Dénombrements")
Exercices 351

Figure 8.1

Que vous inspire le graphique obtenu ?


5) Recalculez les marges du tableau de données.
6) Pouvez-vous réaliser un test du x2 d’indépendance en utilisant les approximations classiques ?
Dans l’affirmative, exécutez l’instruction suivante :
© Dunod – La photocopie non autorisée est un délit.

> chisq.test(Rhesus,simulate.p.value=FALSE)

7) Réalisez un test du x2 d’indépendance avec une p-valeur calculée suivant la méthode de


Monte-Carlo.

> chisq.test(Rhesus,simulate.p.value=TRUE,B=50000)

8) Réalisez un test exact de Fisher.

> fisher.test(Rhesus)

9) Réalisez un test exact de Fisher basé sur la méthode de Monte-Carlo.


352 8 • Tests du Khi-deux

> fisher.test(Rhesus,simulate.p.value=TRUE,B=50000)

Exercice 8.2 Engrais


Trois échantillons de plantes sont traités avec trois engrais différents. Les résultats obtenus sont
les suivants.
Engrais A Engrais B Engrais C
Ont fleuri 34 73 63
N’ont pas fleuri 16 12 12

1) Introduisez les données dans R dans un objet nommé flor.


2) Affichez-les à l’écran.
3) Combien de lignes ? Combien de colonnes ?
4) Vous souhaitez savoir s’il y a une dépendance entre le type d’engrais et la présence ou
l’absence de floraison. Quel test envisagez-vous ? Pourquoi ? Représentez graphiquement les
données.
5) Exécutez la ligne de commande suivante :

> chisq.test(flor)

Que fait-elle ? Les conditions d’application du test sont-elles vérifiées ?


Il est également possible de calculer une p-valeur exacte pour le test à l’aide de méthodes
de Monte-Carlo. Celle-ci est particulièrement utile lorsque les conditions d’application de
l’approximation asymptotique pour le calcul de la p-valeur du test ne sont pas remplies.

> chisq.test(flor,simulate.p.value=T,B=100000)

6) Calculez les résidus associés à ce modèle. Pour cela, exécutez la ligne de commande suivante :

> chisq.test(flor)$residuals

À quoi les résidus peuvent-ils vous être utiles lorsque vous effectuez un test du x2 d’indépen-
dance ?
7) Une représentation graphique de ces résidus est appelée  association plot . Pour la
construire, il faut charger en mémoire, et donc éventuellement télécharger, le package vcd pour
accéder à la fonction assoc. Ensuite, exécutez la ligne de commande suivante et commentez le
graphique obtenu :
Exercices 353

> assoc(t(flor),shade=TRUE)

Fleuri

Figure 8.2
© Dunod – La photocopie non autorisée est un délit.

Exercice 8.3 Les incontournables boules


160 boules ont été sélectionnées dans une urne à quatre couleurs dont la répartition est inconnue.
Les données ont été reportées dans le tableau suivant :

Couleurs Noir Rouge Jaune Vert Totaux


9 3 3 1
Proportion théorique 1
16 16 16 16
Effectif observé 100 18 24 18 160

À partir de cet échantillon, vous voulez savoir s’il est possible que la répartition des couleurs
dans l’urne soit de 9/16 de boules noires, 3/16 de boules rouges, 3/16 de boules jaunes et 1/16
de boules vertes.
354 8 • Tests du Khi-deux

Exercice 8.4 Avis d’experts


Deux radiologues, un interne et le chef de service, travaillant à l’hôpital étudient les mêmes
radiographies pour déterminer si un patient a une fracture du bras ou non. Leurs résultats ont été
reproduits dans le tableau suivant :

Interne Chef de service Bras cassé Bras normal

Bras cassé 103 12


Bras normal 18 35

1) Introduisez les données dans R dans un objet nommé radio.


2) Affichez-les à l’écran.
3) Vous cherchez à savoir s’il y a une dépendance entre le médecin ayant réalisé le diagnostic et
le résultat du diagnostic. Quel test envisagez-vous ? Pourquoi ?
4) Exécutez la ligne de commande suivante :

> mcnemar.test(radio)

Que fait-elle ? Que signifie l’option correct de la fonction mcnemar.test ?


5) Il existe une version exacte de ce test. Savez-vous ce que signifie l’expression  version
exacte de ce test  ? Exécutez la ligne de commande suivante :

> binom.test(radio[2],n=sum(radio[c(2,3)]))

Que fait-elle ?

DU MAL À DÉMARRER

➩ Exercice 8.1
1) Utilisez la fonction matrix.
2) Affichez l’objet Rhesus.
3) Utilisez la fonction class.
4) Que représente le graphique ?
Du mal à démarrer 355

5) Utilisez la fonction margin.table.


6) Utilisez la fonction chisq.test.
7) Utilisez l’option simulate.p.value=TRUE de la fonction chisq.test.
8) Utilisez la fonction fisher.test.
9) Utilisez l’option simulate.p.value=TRUE de la fonction fisher.test.

➩ Exercice 8.2

1) Utilisez la fonction matrix.


2) Affichez l’objet flor.
3) Utilisez la fonction dim.
4) Relisez le paragraphe 8.1.
5) Consultez l’aide de la fonction chisq.test.
6) La fonction chisq.test calcule les résidus. Relisez le paragraphe 8.1.
7) Relisez le paragraphe 8.1.

➩ Exercice 8.3 Relisez le paragraphe 8.1 et consultez l’aide de la fonction chisq.test.

➩ Exercice 8.4

1) Utilisez la fonction matrix.


2) Affichez l’objet radio.
3) Relisez le paragraphe 8.4.
4) Utilisez la fonction mcnemar.test.
5) Utilisez la fonction binom.test.
356 8 • Tests du Khi-deux

SOLUTION DES EXERCICES

Exercice 8.1
1) Pour introduire les données dans R, tapez les lignes de commande suivantes :

> Rhesus<-matrix(c(3620,3805,934,172,631,676,165,30),nrow=2,byrow=TRUE)
> rownames(Rhesus)<-c("Rh+","Rh-")
> colnames(Rhesus)<-c("O","A","B","AB")

2) Pour vérifier que les données sont celles de l’énoncé, tapez la ligne de commande suivante :

> Rhesus

O A B AB
Rh+ 3620 3805 934 172
Rh- 631 676 165 30

3) Pour connaître la classe de Rhesus, tapez la ligne de commande suivante :

> class(Rhesus)

Elle vous renvoie :

[1] "matrix"

Donc, Rhesus n’est pas un objet de classe table. Pour remédier à cela, tapez la ligne de
commande suggérée par l’énoncé :

> Rhesus<-as.table(as.matrix(Rhesus))

Maintenant, si vous tapez la ligne de commande suivante :

> class(Rhesus)

Vous obtenez bien ce qui est attendu à savoir que l’objet Rhesus est de classe :

[1] "table"

4) Les largeurs des deux barres indiquent qu’il y a beaucoup plus de personnes avec un Rhésus
positif qu’avec un Rhésus négatif dans l’échantillon. Les groupes sanguins A et O sont de loin
Solution des exercices 357

les plus représentés dans l’échantillon, B est plus rare et AB l’est encore plus. La répartition des
groupes sanguins ne semble pas dépendre du Rhésus car les subdivisions verticales sont situées
au même niveau pour les deux colonnes Rhésus + et Rhésus -.
5) Les marges du tableau de données sont calculées par les lignes de commande :

> margin.table(Rhesus)
> margin.table(Rhesus,margin=1)
> margin.table(Rhesus,margin=2)

6) En exécutant la ligne de commande suivante :

> chisq.test(Rhesus,simulate.p.value=FALSE)$expected

vous récupérez le tableau suivant :

O A B AB
Rh+ 3614.5999 3810.1675 934.4731 171.75939
Rh- 636.4001 670.8325 164.5269 30.24061

Tous les effectifs attendus sont supérieurs à 5 et l’effectif total de l’échantillon est supérieur
à 50, vous pouvez donc réaliser un test du x2 d’indépendance en utilisant les approximations
classiques.

> chisq.test(Rhesus, simulate.p.value = FALSE)

Pearson’s Chi-squared test


© Dunod – La photocopie non autorisée est un délit.

data: Rhesus
X-squared = 0,10456 df = 3, p-value = 0,9913

Comme la p-valeur est égale à 0,9913, le test n’est pas significatif au niveau a = 5 %. Vous
n’avez pas mis en évidence de lien significatif entre le groupe sanguin et le Rhésus. Le risque
d’erreur associé à cette décision est un risque d’erreur de deuxième espèce b. Pour l’évaluer, il
faudrait calculer la puissance du test, ce qui n’est pas présenté dans ce livre.
7)

> chisq.test(Rhesus,simulate.p.value=TRUE,B=50000)

Pearson’s Chi-squared test with simulated


p-value (based on 50000 replicates)
358 8 • Tests du Khi-deux

data: Rhesus
X-squared = 0,10456 df = NA, p-value = 0,9914

8)

> fisher.test(Rhesus)

Fisher’s Exact Test for Count Data

data: Rhesus
p-value = 0,991
alternative hypothesis: two.sided

9)

> fisher.test(Rhesus,simulate.p.value=TRUE,B=50000)

Fisher’s Exact Test for Count Data with


simulated p-value (based on 50000 replicates)

data: Rhesus
p-value = 0,9909
alternative hypothesis: two.sided

Tous les tests réalisés aux questions 6), 7), 8) et 9) aboutissent à la même conclusion.

Les fonctions chisq.test et fisher.test avec ou sans l’option simulate.p.value.


B Si vous déterminez une p.value par simulation, elle peut varier légèrement d’un calcul à l’autre.
S
U

Exercice 8.2
1) Pour introduire les données dans R, tapez les lignes de commande suivantes :

> flor<-matrix(c(34,73,63,16,12,12),nrow=2,byrow=T)
> rownames(flor)<-c("Fleuri","Pas fleuri")
> colnames(flor)<-c("Engrais A","Engrais B","Engrais C")
> flor<-as.table(flor)

2) Pour afficher les données à l’écran, tapez la ligne de commande suivante :


Solution des exercices 359

> flor

Engrais A Engrais B Engrais C


Fleuri 34 73 63
Pas fleuri 16 12 12

3) Pour savoir combien il y a de lignes et de colonnes, tapez la ligne de commande suivante :

> dim(flor)

[1] 2 3

Donc il y a deux lignes et trois colonnes.


4) Le test envisagé est un test du x2 d’indépendance car il s’agit de l’étude du lien entre deux
variables qualitatives pour des données indépendantes. Vous construisez le graphique demandé,
reproduit à la figure 8.3, qui indique une dépendance de la floraison en fonction du type d’engrais,
en exécutant la commande suivante :

> plot(flor,main="Dénombrements")

5) La ligne de commande réalise un test du x2 d’indépendance entre les deux variables qualita-
tives étudiées, la p-valeur associée au test étant calculée en réalisant une approximation par la
loi du Khi-deux à 2(= (3 − 1) ∗ (2 − 1)) degrés de liberté.

> chisq.test(flor)$expected
© Dunod – La photocopie non autorisée est un délit.

Engrais A Engrais B Engrais C


Fleuri 40.47619 68.80952 60.71429
Pas fleuri 9.52381 16.19048 14.28571

Tous les effectifs attendus sont supérieurs à 5 et l’effectif total de l’échantillon est supérieur à
50, l’approximation usuelle est donc valide. Le résultat du test est :

> chisq.test(flor)

Pearson’s Chi-squared test

data: flor
X-squared = 7.2316, df = 2, p-value = 0.0269
360 8 • Tests du Khi-deux

Figure 8.3

Comme la p-valeur (0,0269) est inférieure à a = 5 %, le test est significatif au niveau a = 5 %.


Il y a un lien significatif entre la floraison et le type d’engrais. Le risque d’erreur associé à cette
décision est un risque d’erreur de première espèce qui est égal 5 %.
6) L’étude des résidus permet de préciser le lien entre les deux variables qualitatives lorsque
le test du x2 est significatif. Les résidus les plus élevés en valeur absolue indiquent des asso-
ciations entre les différentes modalités des deux variables. Un signe positif indique une affinité
particulière entre les deux modalités, plus d’associations observées que de prévues sous l’hypo-
thèse d’indépendance, et un signe négatif indique au contraire que moins d’associations, que le
nombre prévu sous l’hypothèse d’indépendance, de ces deux modalités ont été observées.

> chisq.test(flor)$residuals

Engrais A Engrais B Engrais C


Fleuri -1.0179344 0.5051718 0.2933435
Pas fleuri 2.0985256 -1.0414384 -0.6047432
Solution des exercices 361

7) La fonction assoc permet de représenter graphiquement les résidus qui sont des indicateurs
de liaisons entre les modalités des deux variables. Les couples de modalités représentés en gris
sont à considérer comme neutres et seuls ceux qui apparaissent en bleu ou en rouge sont à
interpréter. Dans cet exemple, un seul couple de modalités est mis en avant : Engrais A et Pas
fleuri. Compte tenu du signe positif du résidu, vous concluez que l’utilisation de l’Engrais A
tend à augmenter de manière importante l’absence de floraison.

Les fonctions chisq.test et assoc.


B
S
U

Exercice 8.3 La fonction chisq.test permet de tester l’adéquation demandée.

> res.test<-chisq.test(c(100,18,24,18),p=c(90,30,30,10),
+ rescale.p=TRUE)

Quels seraient les effectifs si la répartition théorique était respectée ?

> res.test$expected

[1] 90 30 30 10

Pour procéder au test d’adéquation, vous pouvez utiliser l’approximation par la loi du Khi-deux
à 3 = (4 − 1) degrés de liberté car tous les effectifs attendus sont supérieurs à 5 et que l’effectif
total de l’échantillon est supérieur à 50. Vous pouvez donc consulter les résultats calculés par
défaut par R.
© Dunod – La photocopie non autorisée est un délit.

> res.test

Chi-squared test for given probabilities

data: c(100, 18, 24, 18)


X-squared = 13.5111, df = 3, p-value = 0.003652

R permet de calculer une p-valeur par simulation qui vous permettra d’utiliser le test même
lorsque l’approximation par la loi du Khi-deux n’est plus valable.

> chisq.test(c(100,18,24,18),p=c(90,30,30,10),rescale.p=TRUE,
+ simulate=TRUE)
362 8 • Tests du Khi-deux

Chi-squared test for given probabilities with


simulated p-value (based on 2000 replicates)

data: c(100, 18, 24, 18)


X-squared = 13.5111, df = NA, p-value = 0.006997

La fonction chisq.test avec ou sans les options simulate.p.value et rescale.p=TRUE.


B
S
U

Exercice 8.4
1) Pour introduire les données dans R, tapez les lignes de commande suivantes :

> radio<-matrix(c(103,12,18,35),nrow=2,byrow=T)
> rownames(radio)<-c("Bras cassé","Bras normal")
> colnames(radio)<-c("Bras cassé","Bras normal")
> radio<-as.table(radio)

2) Pour afficher les données à l’écran, tapez la ligne de commande suivante :

> radio

Bras cassé Bras normal


Bras cassé 103 12
Bras normal 18 35

3) Les données sont appariées, il n’est pas possible d’utiliser un test du x2 . Le test de Mac-Nemar
est par contre approprié. Vous observez que n 1,2 + n 2,1 = 18 + 12 = 30  20 et vous considérez
que n 1,2 et n 2,1 sont suffisamment grands. Les conditions de l’utilisation de l’approximation par
la loi du Khi-deux à 1 degré de liberté pour le test de Mac-Nemar sont donc vérifiées.
4) La ligne de commande suivante exécute un test de Mac-Nemar avec correction de continuité,
choix par défaut dans R. L’option correct permet d’utiliser ou non la correction de continuité.

mcnemar.test(radio)

McNemar’s Chi-squared test with continuity


correction
Solution des exercices 363

data: radio
McNemar’s chi-squared = 0.8333, df = 1, p-value = 0.3613

5) Il est possible d’utiliser un test binomial lorsque les conditions d’application de l’approxi-
mation par la loi du Khi-deux à 1 degré de liberté pour le test de Mac-Nemar ne sont pas
remplies.

> binom.test(radio[2],n=sum(radio[c(2,3)]))

Exact binomial test

data: radio[2] and sum(radio[c(2, 3)])


number of successes = 18, number of trials = 30,
p-value = 0.3616
alternative hypothesis: true probability of success is not
equal to 0.5
95 percent confidence interval:
0.4060349 0.7734424
sample estimates:
probability of success
0.6

Certains logiciels ont systématiquement recours au test binomial car c’est un test exact.

Les fonctions mcnemar.test et binom.test.


B
S
U
Chapitre 9

Régression linéaire simple

 Essentially, all models are wrong, but some are useful.1 

De George E.P. Box, 1979.

Objectifs de ce chapitre
➤ introduire le vocabulaire de la théorie de la régression linéaire simple
➤ définir la méthode des moindres carrés
➤ donner les formules pour calculer les coefficients de la droite de régression
➤ donner la décomposition de la variation et la formule du coefficient de détermination
➤ établir les intervalles de confiance et les tests pour la pente de la droite et l’ordonnée à
l’origine

9.1 AJUSTEMENT LINÉAIRE EN STATISTIQUE DESCRIPTIVE


9.1.1 La méthode des moindres carrés
Vous souhaitez ajuster la distribution du couple de variables quantitatives (X , Y ) à une fonction
affine Y = b0 +b1 X , où b0 et b1 sont deux nombres réels à déterminer. Cet ajustement s’appelle
la régression linéaire de Y en X. Soit (X 1 , Y1 ), . . . , (X N , Y N ) les données brutes. Le couple

1. Tous les modèles décrivent imparfaitement la réalité mais certains peuvent être utiles pour la comprendre.
9.1 Ajustement linéaire en statistique descriptive 365

(b0 , b1 ) va être déterminé de manière à ce que la fonction :


N
d(b0 , b1 ) = (Yk − b0 − b1 X k )2 ,
k=1

ait un minimum global sur R2 en (b0 , b1 ). C’est la raison pour laquelle cette méthode s’appelle
aussi la méthode des moindres carrés ordinaires. Le minimum de cette fonction d positive et
différentiable sur R2 est réalisé en un unique point critique, c’est-à-dire en un point où les deux
dérivées partielles de cette fonction sont nulles.
Remarque :
1. (Yk − b0 − b1 X k )2 représente le carré de la distance verticale du point (X k , Yk ) à la
droite, d’équation y = b0 + b1 x, considérée comme la meilleure.
2. b1 est le coefficient directeur de la droite, également appelé la pente de la droite, et
b0 son ordonnée à l’origine.
3. La fonction d a pour variables b0 et b1 . Les dérivées partielles seront ainsi calculées
suivant ces deux variables et les équations définissant le point critique résolues par
rapport à ces deux variables. Ici les inconnues ne sont pas les variables X k et Yk mais
les variables b0 et b1 .
4. Notez aussi que les données introduites ci-dessus sont issues d’une population. Mais
les mêmes notions peuvent être définies dans le cadre d’un échantillon. Dans la suite
du paragraphe 9.1, tout est présenté dans le cadre d’une population. Les notions
supplémentaires qui apparaissent lorsque vous travaillez avec un échantillon seront
présentées à partir du paragraphe 9.2.

9.1.2 Droite de régression de Y par rapport à X


© Dunod – La photocopie non autorisée est un délit.

Définition 9.1 La droite de régression de Y par rapport à X est la droite d’équation y = b0 +b1 x
qui rend la fonction d(b0 , b1 ) minimale.
Les valeurs des nombres réels b1 et b0 en sont déduites :

Cov(X , Y ) r(X , Y )s(Y )


b1 = 2
= et b0 = m(Y ) − b1 m(X ),
s (X ) s(X )

où Cov(X , Y ) est la covariance de X et de Y , s2 (X ) la variance de X , r(X , Y ) le coefficient


de corrélation linéaire théorique entre X et Y (voir le chapitre 5 pour une définition) et s(Y )
l’écart-type de Y , m(X ) et m(Y ) les moyennes respectives de X et de Y .
366 9 • Régression linéaire simple

Remarque :
1. La droite de régression obtenue par la méthode des moindres carrés, notée D et
d’équation y = b0 + b1 x, passe par le centre de masse (m(X ), m(Y )) du nuage de
points (X 1 , Y1 ), . . . , (X N , Y N ).
2. En échangeant les rôles des variables X et Y , vous obtenez la régression linéaire de X
en Y . En général les deux droites de régression sont distinctes.
3. Faites attention à la définition de la covariance qui intervient dans la définition de b1 .
En effet, cette dernière a été modifiée par rapport à celle du chapitre 5 puisqu’ici la
série statistique n’est pas donnée par un tableau à double entrée mais par les points
relevés et numérotés avec un seul indice k.
4. Le langage R donne dans l’ordre suivant le coefficient b0 puis le coefficient b1 , bien
que le coefficient b0 se calcule à partir du coefficient b1 . R appelle le coefficient b0
l’intercept.

Les fonctions sous R qui permettent de réaliser le calcul de ces coefficients sont la fonction lm
B puis la fonction coef.
S
U

Exemple : vous trouverez un exemple qui illustre le calcul des deux coefficients de la
droite de régression dans l’exercice 1 de ce chapitre.

9.1.3 Décomposition de la variation et coefficient de détermination


Le but d’un ajustement linéaire est d’expliquer une partie de la variation de la variable Y qui
est appelée la variable expliquée ou à expliquer du fait de sa dépendance linéaire à la variable
X , qui est appelée la variable explicative ou le  prédicteur .
– Toute variable admet une certaine variation, généralement mesurée en terme de variance,
c’est-à-dire qu’elle varie d’un individu à l’autre. Pour mesurer la variation de la variable
Y , il est d’usage de considérer les différences entre les observations Yk et leur moyenne

N
m(Y ). La somme des carrés (Yk − m(Y ))2 est appelée la somme des carrés totale ou
k=1
variation totale et est notée SCtot .
– Si la variable Y dépend de X , et que vous la mesurez sur des individus avec différentes
valeurs de X , vous observerez une variation en conséquence. Ici vous ne mesurez que
la variation expliquée par la régression linéaire de Y en X obtenue par la méthode des

N
moindres carrés. Elle est évaluée par la somme des carrés (Y&k − m(Y ))2 qui est appelée
k=1
la somme des carrés due à la régression ou la variation expliquée par la régression et
est notée SCreg . Y&k représente la valeur prédite par cet ajustement pour X = X k .
9.1 Ajustement linéaire en statistique descriptive 367

&k est la fonction fitted. Le terme de


La fonction de R qui permet de calculer la valeur prévue Y
B valeur ajustée ou de valeur prévue est souvent également utilisé comme dénomination pour la
S
U &k .
valeur Y

– Généralement, lorsque vous mesurez Y sur des individus avec une même valeur de X ,
vous observez encore une certaine variation. Il s’agit de la variation inexpliquée par la
régression linéaire de Y en X obtenue par la méthode des moindres carrés.
N
La somme des carrés (Yk − Y&k )2 est appelée la somme des carrés des résidus ou la
k=1
variation résiduelle et est notée SCres .
Vous avez donc l’égalité suivante :

Variation totale=Variation expliquée+Variation inexpliquée

&k − m(Y )) représente la différence expliquée par l’ajustement. (Yk − Y&k ) repré-
Définition 9.2 (Y
sente la différence inexpliquée par l’ajustement ou le résidu de l’ajustement.
Théorème 9.3 Suite à cette définition, et à l’encadré ci-dessus, la décomposition de la variation
totale se traduit mathématiquement par :


N N 
 2 N 
 2
(Yk − m(Y ))2 = Y&k − m(Y ) + Yk − Y&k .
k=1 k=1 k=1

Remarque : vous ne trouverez pas ici de démonstration de ce théorème mais sachez qu’il
s’agit d’une généralisation du théorème de Pythagore !

La fonction sous R qui permet de récupérer ces valeurs est la fonction anova. Attention, cette
B dernière ne donne que les variations (appelées Sum Sq par R) expliquée par la régression
S
U
(dénommée comme la variable explicative par R) et résiduelle (appelée Residuals par R).

Exemple : vous trouverez un exemple qui illustre le calcul de ces variations dans l’exercice
1 de ce chapitre.

Le pourcentage de la variation totale qui est expliquée par l’ajustement est évalué par le coeffi-
cient de détermination qui est défini ci-dessous.
Définition 9.4 Le coefficient de détermination, noté R 2 , est défini par :

Variation expliquée SCreg


R2 = = ·
Variation totale SCtot
368 9 • Régression linéaire simple

Remarque :
1. Le coefficient de détermination R 2 prend ses valeurs entre 0 et 1.
2. Plus le coefficient de détermination R 2 est proche de 1, plus les données sont alignées
sur la droite de régression.

Pour récupérer la valeur du coefficient de détermination, vous utiliserez la fonction summary de


B R. R appelle ce coefficient Multiple R-squared. Donc à côté de cette expression vous trouverez
S
U
la valeur de R2 .

Exemple : vous trouverez un exemple qui illustre le calcul de ce coefficient dans l’exercice
1 de ce chapitre.

Définition 9.5 Ces caractéristiques de la régression peuvent se résumer dans un tableau appelé
tableau de l’analyse de la variance.
Sources Sommes Degrés Carrés
de Variation des carrés de liberté moyens

SCreg
Expliquée par SCreg 1 C Mreg =
1
la régression

SCres
Résiduelle SCres N −2 C Mres =
N −2

Totale SCtot N −1

9.2 ESTIMATION PONCTUELLE DES PARAMÈTRES DE LA DROITE DE


RÉGRESSION
9.2.1 La régression linéaire simple
Il est rare d’avoir accès à toutes les données de la population pour des raisons faciles à com-
prendre : manque de temps, impossibilité de faire un recensement, . . . Pour chaque individu,
de l’échantillon de taille n, vous observez une valeur xi du caractère quantitatif continu X et
une valeur yi du caractère quantitatif continu Y . Il peut vous arriver d’observer des valeurs
différentes de Y pour plusieurs individus ayant la même valeur observée du caractère quantitatif
X . Derrière cette idée, se trouve le modèle de la régression linéaire simple.
Définition 9.6 La régression linéaire simple est liée au modèle suivant :
Yi = b0 + b1 X i + ´i , où i = 1, . . . , n.
9.2 Estimation ponctuelle des paramètres de la droite de régression 369

Les deux paramètres b0 et b1 sont inconnus mais fixes. Les variables aléatoires ´i sont les
variables d’erreur qui sont supposées vérifier des hypothèses, appelées aussi conditions fonda-
mentales, qui sont au nombre de trois :
1. Les variables aléatoires ´i sont indépendantes.
2. Les variables ´i ont toutes la même variance inconnue s2 . C’est la condition d’homogénéité
des variances.
3. Les variables ´i suivent la loi normale centrée et de variance s2 .

Remarque :
1. Les variables ´i rendent compte des fluctuations que vous pourriez observer parmi les
yi associées aux mêmes valeurs de xi .
2. Dans la définition ci-dessus, il est mentionné que les paramètres b0 et b1 sont inconnus.
Il faudra donc les estimer. De plus la variance s2 des variables ´i est aussi inconnue.
Il faudra aussi l’estimer.

Définition 9.7 La variance s2 est appelée la variance résiduelle de Y .

Remarque : s2 s’appelle ainsi car cela vient du fait qu’elle est liée à la variable ´, parfois
appelée aussi résidu.

9.2.2 Estimations ponctuelles des paramètres b1 et b0


À n données x1 , . . . , xn de la variable X , l’expérience a associé n données y1 , . . . , yn de la
variable Y . À partir de l’échantillon constitué par les n couples que vous venez d’obtenir, vous
pouvez calculer la droite de régression y = b0,n + b1,n x et le coefficient de corrélation linéaire
© Dunod – La photocopie non autorisée est un délit.

observé. Soient B0 et B1 les variables aléatoires qui prennent les valeurs b0,n et b1,n . b0,n et
b1,n sont des estimations de b0 et b1 , nous les notons b ,0 et b
,1 .

Théorème 9.8 B1 et B0 sont des estimateurs sans biais de b1 et de b0 . En effet, nous avons :

E(B1 ) = b1 et E(B0 ) = b0 .

Remarque :
,1 et b
1. b ,0 sont des estimations ponctuelles sans biais de b1 et de b0 .
,1 et b
2. Vous pouvez récupérer les valeurs b ,0 avec R. Il suffit d’utiliser les fonctions lm
et coef déjà rencontrées précédemment.
370 9 • Régression linéaire simple

9.2.3 Estimation ponctuelle de la variance résiduelle s2


Proposition 9.9 L’estimation de la variance s2 peut se faire par la quantité suivante :
1  2  
n
s R2 = yi − b ,1 xi = n
,0 − b 1 − r 2 s 2 (y),
n−2 n−2
n  i=1
1  2  2
où s 2 (y) = yi − y n est la variance de l’échantillon des yi et y n la moyene des yi .
n
i=1

Remarque : l’estimateur S R2 associé à cette estimation est sans biais.

Pour récupérer l’estimation de la variance s2 avec R, vous pouvez procéder de deux façons :
B
S 1. utiliser la fonction summary, appliquée à la fonction lm, puis prendre la valeur qui se trouve
U
à côté de l’expression Residual standard error et l’élever au carré. En fait, la fonction
summary de R ne donne pas une estimation ponctuelle de la variance s2 mais une estimation
ponctuelle de l’écart-type s,
2. utiliser la fonction anova, appliquée au résultat de la fonction lm, et lire la valeur du carré
moyen résiduel, Residuals Mean Sq.

9.3 INTERVALLE DE CONFIANCE POUR LES PARAMÈTRES b1 ET b0


9.3.1 Intervalle de confiance pour la pente b1
s2
Théorème 9.10 La variance de B1 est égale à 2 (x)
, où s 2 (x) est la variance de l’échantillon
n  ns
i=1 x i − (x n ) . Elle est peut-être estimée par la réalisation de
2
des xi , qui est égale à n1 2
2
S
l’estimateur S B2 1 = 2R .
ns (x)
De plus, sous la condition que les variables aléatoires ´i sont indépendantes et suivent la loi
B1 − b1
normale centrée et de variance s2 , la variable aléatoire TB1 ,n−2 = suit la loi de
S B1
Student t(n − 2).
Remarque : pour vérifier les conditions d’application, il vous faudra réaliser un test de
Shapiro-Wilk et un test de White sur les résidus. Cette procédure se fait en deux étapes :
1. calculer les résidus avec la fonction residuals,
2. puis réaliser un test de Shapiro-Wilk sur ces résidus en utilisant la fonction
shapiro.test que vous connaissez bien maintenant, et évaluer l’homogénéité des
variances.
Exemple : vous trouverez un exemple qui illustre cette procédure dans les exercices 1 et
2 de ce chapitre.
9.4 Intervalle de confiance de la valeur moyenne 371

Vous déduisez de ce théorème la proposition suivante qui vous donne l’intervalle de confiance
pour la pente b1 .

Proposition 9.11 Au risque a, la pente b1 appartient à l’intervalle de confiance :


$ #
,1 − tn−2;1−a/2 s B1 ; b
b ,1 + tn−2;1−a/2 s B1 ,
où s B1 est l’estimation de l’écart-type de B1 .

La fonction summary appliquée à la droite de régression que vous avez ajustée vous donne la
S
B ,1 , de sB et de TB ,n−2 (obs), qui est la réalisation de TB ,n−2 .
valeur de b 1 1 1
U

9.3.2 Intervalle de confiance pour l’ordonnée à l’origine b0



2 1 x 2n
Théorème 9.12 La variance de B0 est égale à s + . Elle est peut être estimée par
 n ns 2 (x)
1 x2
la réalisation de l’estimateur S B2 0 = S R2+ 2n .
n ns (x)
De plus, sous la condition que les variables aléatoires ´i sont indépendantes et suivent la loi
B0 − b0
normale centrée et de variance s2 , la variable aléatoire TB0 ,n−2 = suit la loi de
S B0
Student t(n − 2).

Remarque : pour vérifier la condition d’application, il vous faudra réaliser un test de Shapiro-
Wilk sur les résidus. Cette procédure a été détaillée au paragraphe 9.3.1.
Exemple : vous trouverez un exemple qui illustre cette procédure dans les exercices 1 et
2 de ce chapitre.

Vous déduisez de ce théorème la proposition suivante qui vous donne l’intervalle de confiance
pour l’ordonnée à l’origine b0 .

Proposition 9.13 Au risque a, l’ordonnée à l’origine b0 appartient à l’intervalle de confiance :


$ #
,0 − tn−2;1−a/2 s B0 ; b
b ,0 + tn−2;1−a/2 s B0 ,
où s B0 est l’estimation de l’écart-type de B0 .

La fonction summary appliquée à la droite de régression que vous avez ajustée vous donne la
S
B ,0 , de sB et de TB ,n−2 (obs), qui est la réalisation de TB ,n−2 .
valeur de b 0 0 0
U

9.4 INTERVALLE DE CONFIANCE DE LA VALEUR MOYENNE


Il est possible de construire un intervalle de confiance de la valeur moyenne de Y sachant que
X = x0 . L’estimation ponctuelle pour cette valeur de x0 est alors égale à & ,0 + b
y0 = b ,1 x0 .
372 9 • Régression linéaire simple

Proposition 9.14 Sous la condition que les variables aléatoires ´i sont indépendantes et suivent
la loi normale centrée et de variance s2 , au risque a, l’intervalle de confiance de la valeur
moyenne prise par la variable Y est égal à :
⎤    ⎡
 
 1 (x − x ) 2  1 (x − x ) 2
⎦&y0 − tn−2;1−a/2 s R2 +
0 n
;&
y0 + tn−2;1−a/2 s R2 +
0 n ⎣.
n ns 2 (x) n ns 2 (x)

9.5 INTERVALLE DE PRÉVISION D’UNE VALEUR INDIVIDUELLE


L’ajustement affine peut servir à prévoir une valeur attendue pour la variable Y quand vous
fixez X = x0 pour une valeur x0 de X qui n’a pas été observée. L’estimation ponctuelle de cette
valeur est alors égale à & ,0 + b
y0 = b ,1 x0 .
Remarque :
1. L’utilisation d’une valeur estimée &
y0 n’est justifiée que si R 2 est proche de 1.
2. Il se peut que vous cherchiez à calculer à partir de la droite de régression, une valeur
de y0 pour une valeur X = x0 qui n’a pas été observée dans le jeu de données. Il faudra
alors utiliser non pas la fonction fitted mais la fonction predict de R.

Proposition 9.15 Sous la condition que les variables aléatoires ´i sont indépendantes et suivent
la loi normale centrée et de variance s2 , au risque a, l’intervalle de prévision de la valeur prise
par la variable Y est égal à :
⎤    ⎡
 
 1 (x0 − x n ) 2  1 (x0 − x n ) ⎣2
⎦&y0 − tn−2;1−a/2 s R2 1 + + ;&
y0 + tn−2;1−a/2 s R2 1 + + .
n 2
ns (x) n ns 2 (x)

9.6 COMPARAISON DES PARAMÈTRES DE LA DROITE DE


RÉGRESSION À DES VALEURS DE RÉFÉRENCE
9.6.1 Comparaison de la pente b1
Ici, seul le cas où la valeur de référence est nulle est présenté. Ce cas se généralise très facilement.
• Test unilatéral
Le test unilatéral se déduit aisément du test bilatéral présenté ci-dessous.
• Test bilatéral
Hypothèses du test :
H0 : b1 = 0
contre
H1 : b1 = 0.
9.6 Comparaison des paramètres de la droite de régression... 373

Conditions d’application du test :


les variables aléatoires ´i sont indépendantes et suivent la loi normale centrée et de variance
s2 .
Statistique du test :
B1
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire TB1 ,n−2 = suit la loi de
S B1
Student t(n − 2).
Décision et conclusion du test :
la valeur critique du test, notée ca , est lue dans une table de la loi de Student. Si la valeur
,1
b
absolue de la valeur de la statistique calculée sur l’échantillon, notée TB1 ,n−2 (obs) = ,
s B1
est supérieure ou égale à ca , alors le test est significatif. Vous rejetez H0 et vous décidez
que H1 est vraie avec un risque d’erreur de première espèce a. Si la valeur absolue de la
,1
b
valeur de la statistique calculée sur l’échantillon, notée TB1 ,n−2 (obs) = , est strictement
s B1
inférieure à ca , alors le test n’est pas significatif. Vous conservez H0 avec un risque d’erreur
de deuxième espèce b à évaluer.

Remarque : ce test permet d’évaluer le pouvoir explicatif de la variable explicative X .


Dans le cas de la régression linéaire simple, un second test, le test de Fisher a la même
utilité et amène systématiquement à la même décision que le test sur la pente b1 . La
statistique du test de Fisher est F = C Mreg /C Mres . Elle est souvent calculée dans le
tableau d’analyse de la variance de la régression comme vous le montre l’exercice 1.

Si seule l’hypothèse de normalité n’est pas vérifiée, il est possible d’utiliser un test de
permutation pour déterminer si le test de nullité de la pente b1 de la droite est significatif au
seuil a ou non. La fonction lmp de la bibliothèque lmPerm automatise cette solution.
© Dunod – La photocopie non autorisée est un délit.

9.6.2 Comparaison de l’ordonnée à l’origine b0


Ici, seul le cas où la valeur de référence est nulle est présenté. Ce cas se généralise très facilement.

• Test unilatéral
Le test unilatéral se déduit aisément du test bilatéral présenté ci-dessous.
• Test bilatéral
Hypothèses du test :

H0 : b0 = 0
contre
H1 : b0 = 0.
374 9 • Régression linéaire simple

Conditions d’application du test :


les variables aléatoires ´i sont indépendantes et suivent la loi normale centrée et de variance
s2 .
Statistique du test :
B0
si l’hypothèse nulle H0 est vérifiée, alors la variable aléatoire TB0 ,n−2 = suit la loi de
S B0
Student t(n − 2).
Décision et conclusion du test :
la valeur critique du test, notée ca , est lue dans une table de la loi de Student. Si la valeur
,0
b
absolue de la valeur de la statistique calculée sur l’échantillon, notée TB0 ,n−2 (obs) = ,
s B0
est supérieure ou égale à ca , alors le test est significatif. Vous rejetez H0 et vous décidez
que H1 st vraie avec un risque d’erreur de première espèce a. Si la valeur absolue de la
,0
b
valeur de la statistique calculée sur l’échantillon, notée TB0 ,n−2 (obs) = , est strictement
s B0
inférieure à ca , alors le test n’est pas significatif. Vous conservez H0 avec un risque d’erreur
de deuxième espèce b à évaluer.

EN RÉSUMÉ

Commande Description
lm Permet de construire la droite de régression.
coef Donne les coefficients de la droite de régression.
summary Donne les coefficients de la droite de régression et les tests associés.
fitted Calcule les valeurs ajustées à partir de la droite de régression
pour les observations initiales.
predict Calcule les valeurs ajustées, les intervalles de confiance et les
intervalles de prévision à partir de la droite de régression
pour n’importe quelle valeur.
confint Calcule les intervalles de confiance pour la pente et l’ordonnée
à l’origine de la droite de régression.
anova Donne le tableau de l’analyse de la variance.
residuals Calcule les résidus.
lmp Utilise des tests de permutation au lieu de la théorie classique
basée sur la loi normale.
Exercices 375

EXERCICES

Exercice 9.1 La taille contre la masse d’un follicule de laurier rose


Le jardinier soupçonne une relation entre la taille et la masse d’un follicule de laurier rose.
1) Tracez le nuage de points de la taille, exprimée en cm, en fonction de la masse, exprimée en
g, pour les 72 follicules de lauriers roses. Pour cela, il faudra que vous commenciez par isoler
les données sur les lauriers roses en créant un objet lauriers.
2) En observant ce diagramme, pouvez-vous soupçonner une liaison linéaire entre ces deux
variables ?
3) Déterminez pour ces observations la droite des moindres carrés ordinaires c’est-à-dire donnez
les coefficients de la droite des moindres carrés ordinaires.
4) Donnez les ordonnées y&i calculées par la droite des moindres carrés ordinaires correspondant
aux différentes valeurs des observations xi .
5) Tracez ensuite la droite sur le même graphique.
6) Quelle est une estimation plausible de Y à x0 = 4, 8 g ?
7) Quels sont les écarts entre les valeurs observées de Y à x0 = 4, 8 g et la valeur estimée avec
la droite des moindres carrés ordinaires ? Comment appelez-vous ces écarts ?
8) Est-ce
 que la droite des moindres carrés ordinaires obtenue précédemment passe par le point
moyen x n , y n ?
9) Calculez le coefficient de détermination R 2 .
10) Donnez les valeurs des variations expliquée et totale. Quel calcul devez-vous faire pour
retrouver la valeur que vous avez obtenue par le logiciel R à la question précédente ?
© Dunod – La photocopie non autorisée est un délit.

11) Donnez la valeur de l’estimation de la variance s2 .


12) Testez, au risque a = 5 %, les deux hypothèses suivantes :

H0 : b0 = 0 contre H1 : b0 = 0 .

13) Testez, au risque a = 5 %, les deux hypothèses suivantes :

H0 : b1 = 0 contre H1 : b1 = 0 .

14) Que concluez-vous ? Est-ce que le jardinier avait raison ?


376 9 • Régression linéaire simple

Exercice 9.2 La masse contre la masse sèche d’une gousse de bignone


Le jardinier soupçonne une relation entre la masse et la masse sèche d’une gousse de bignone.
1) Tracez le nuage de points de la masse, exprimée en g, en fonction de la masse sèche, exprimée
également en g, pour les 70 gousses des bignones. Pour cela, il faudra que vous commenciez
par isoler les données sur les bignones en créant un objet bignones.
2) En observant ce diagramme, pouvez-vous soupçonner une liaison linéaire entre ces deux
variables ?
3) a- Déterminez pour ces observations la droite des moindres carrés ordinaires c’est-à-dire
donnez les coefficients de la droite des moindres carrés.
b- Construisez le nuage de points des résidus en fonction de masse_sec. Que constatez-
vous ?
4) Donnez les ordonnées y&i calculées par la droite des moindres carrés ordinaires correspondant
aux différentes valeurs des observations xi .
5) Tracez ensuite la droite sur le même graphique.
6) Quelle est une estimation plausible de Y à x0 = 2,5 g qui est la trente-cinquième observation
du jeu de données bignones ?
7) Quel est l’écart entre la valeur observée de Y à x0 = 2,5 g et la valeur estimée avec la droite
des moindres carrés ordinaires ? Comment appelez-vous cet écart ?
8) Est-ce
 que la droite des moindres carrés ordinaires obtenue précédemment passe par le point
moyen x n , y n ?
9) Calculez le coefficient de détermination R 2 .
10) Donnez les valeurs des variations expliquée et totale. Quel calcul devez-vous faire pour
retrouver la valeur que vous avez obtenue par le logiciel R à la question précédente ?
11) Donnez la valeur de l’estimation de s2 .
12) Testez, au risque a = 5 %, les deux hypothèses suivantes :

H0 : b0 = 0 contre H1 : b0 = 0 .

13) Testez, au risque a = 5 %, les deux hypothèses suivantes :

H0 : b1 = 0 contre H1 : b1 = 0 .

14) Que concluez-vous ? Est-ce que le jardinier avait raison ?


Du mal à démarrer 377

DU MAL À DÉMARRER

➩ Exercice 9.1 et Exercice 9.2


1) Utilisez la fonction plot.
2) Observez le diagramme obtenu à la question précédente et demandez-vous s’il est
judicieux de faire passer une droite parmi tous ces points.
3) Utilisez les fonctions lm et coef.
4) Utilisez la fonction fitted.
5) Utilisez la fonction abline.
6) Utilisez la fonction predict.
7) Utilisez la fonction residuals.
8) Vérifiez que le point moyen (x n , y n ) appartient à la droite des moindres carrés que
vous avez estimée à la question 3.
9) Utilisez la fonction summary.
10) Utilisez la fonction anova.
11) Utilisez la fonction summary et en déduire une estimation de la variance.
12) Utilisez les fonctions residuals et shapiro.test.
13) Utilisez les fonctions residuals et shapiro.test.
© Dunod – La photocopie non autorisée est un délit.

SOLUTION DES EXERCICES

Exercice 9.1
1) Pour isoler les données sur les lauriers roses, tapez la ligne de commande suivante :

> lauriers<-subset(Mesures,subset=(Mesures$espece=="laurier rose"))

Pour obtenir le graphique, tapez la ligne de commande suivante :

> plot(taille~masse,data=lauriers,pch=19)
378 9 • Régression linéaire simple

18
16
14
taille

12
10

3 4 5 6
masse

Figure 9.1

2) Il semblerait qu’en regardant la figure 9.1, une relation linéaire pourrait exister entre les deux
variables taille et masse d’un follicule de laurier rose.
3)

> droite_lauriers<-lm(taille~masse,data=lauriers)
> coef(droite_lauriers)

(Intercept) masse
6.413523 1.700114

La pente est égale à 1, 700114 cm · g-1 et l’ordonnée à l’origine à 6, 413523 cm.


4)

> fitted(droite_lauriers)

181 182 183 184 185 186 187


14.74408 16.95423 13.21398 12.02390 14.57407 15.93416 14.06404
...
246 247 248 249 250 251 252
10.49380 10.83382 11.85389 17.29426 12.19391 12.19391 11.00383
Solution des exercices 379

Les ordonnées y&i se lisent sous les nombres entiers. Ils varient de 181 à 252 car ils proviennent
du tableau de données complet Mesures où ils correspondent aux numéros des lignes contenant
les observations réalisées sur les follicules de laurier rose.
5)

> abline(coef(droite_lauriers),col="red",lwd=2)
18
16
14
taille

12
10

3 4 5 6
masse

Figure 9.2
© Dunod – La photocopie non autorisée est un délit.

6)

> predict(droite_lauriers,(masse=4.8))

1
14.57407

Une estimation plausible de Y pour x0 = 4, 8 g est égale à 14, 57407 cm.


7) Pour calculer ces écarts, vous tapez la ligne de commande suivante :

> residuals(droite_lauriers)[lauriers$masse==4.8]
380 9 • Régression linéaire simple

185 205 224 228


0.52592789 0.62592789 -0.07407211 0.52592789

Ces écarts s’appellent les écarts résiduels.


8) D’une part, vous pouvez taper la ligne de commande suivante pour obtenir y n :

> mean(lauriers$taille)

Vous obtenez le résultat suivant :

[1] 13.91528

D’autre part, faites le calcul suivant :

> 6.413523+1.700114*mean(lauriers$masse)

Vous obtenez le résultat suivant :

[1] 13.91528

Pour limiter les erreurs d’arrondi, vous auriez pu utiliser la ligne de commande suivante :

> coef(droite_lauriers)[1]+coef(droite_lauriers)[2]*mean(lauriers$masse)

(Intercept)
13.91528

Vous avez donc vérifié numériquement que la droite des moindres carrés ordinaires passe par le
point moyen (x n , y n ). Il est possible de démontrer que ce résultat est vrai pour toutes les droites
des moindres carrés ordinaires.
9) Pour obtenir le coefficient de détermination, vous pouvez taper la ligne de commande suivante :

> summary(droite_lauriers)

Elle renvoie les résultats suivants :

Call:
lm(formula=taille~masse,data=lauriers)
Residuals:
Min 1Q Median 3Q Max
-2.1339 -0.8590 0.1309 0.9259 2.3060
Solution des exercices 381

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.4135 0.5924 10.83 <2e-16 ***
masse 1.7001 0.1309 12.99 <2e-16 ***
---
Residual standard error: 1.12 on 70 degrees of freedom
Multiple R-squared: 0.7068, Adjusted R-squared: 0.7026
F-statistic: 168.8 on 1 and 70 DF, p-value: < 2.2e-16

En suivant les indications du cours, vous déterminez que le coefficient de détermination R 2 est
environ égal à 70, 68 %.
10) Pour récupérer les variations, tapez la ligne de commande suivante :

> anova(droite_lauriers)

Elle renvoie comme résultat :

Analysis of Variance Table

Response: taille
Df Sum Sq Mean Sq F value Pr(>F)
masse 1 211.57 211.573 168.76 < 2.2e-16 ***
Residuals 70 87.76 1.254
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Donc la variation expliquée par la variable est égale à 211, 57 cm2 et la variation totale est
égale à 211, 57 + 87, 76 = 299, 33 cm2 . Maintenant, pour retrouver la valeur du coefficient
de détermination R 2 , il faut diviser 211, 57 cm2 par 299, 33 cm2 , ce qui donne 0, 7068119 ou
© Dunod – La photocopie non autorisée est un délit.

encore 70, 68 %. Vous retrouvez bien la valeur obtenue à la question précédente.


11) Pour donner une estimation de la variance s2 , vous pouvez utiliser la fonction summary.
Tapez la ligne de commande suivante :

> summary(droite_lauriers)

Call:
lm(formula = taille ~ masse, data = lauriers)

Residuals:
Min 1Q Median 3Q Max
-2.1339 -0.8590 0.1310 0.9259 2.3060
382 9 • Régression linéaire simple

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.4135 0.5924 10.83 <2e-16 ***
masse 1.7001 0.1309 12.99 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.12 on 70 degrees of freedom


Multiple R-squared: 0.7068, Adjusted R-squared: 0.7026
F-statistic: 168.8 on 1 and 70 DF, p-value: < 2.2e-16

Vous prenez la valeur 1, 12 cm et vous l’élevez au carré, ce qui vous donne l’estimation de s2 :
1, 2544 cm2 .
Remarque : comme cela a été indiqué dans le cours, vous auriez pu utiliser la fonction
anova et lire la valeur du carré moyen résiduel qui est bien sûr égale à 1, 254 cm2 .

12) Pour tester les deux hypothèses suivantes :


H0 : b0 = 0 contre H1 : b0 = 0 ,
il faut vérifier que les variables erreurs sont indépendantes et suivent la loi normale centrée et de
variance s2 . La condition d’indépendance est vérifiée compte tenu du protocole expérimental
qui a été suivi. La procédure pour vérifier les deux conditions restantes est en deux temps :
– calculer les résidus,
– faire un test de Shapiro-Wilk sur ces résidus et évaluer l’homogénéité des variances.
Pour cela, tapez les lignes de commande suivantes :

> residus<-residuals(droite_lauriers)
> shapiro.test(residus)

R vous renvoie alors :

Shapiro-Wilk normality test

data: residus
W = 0.9653, p-value = 0.04439

Comme la p-valeur du test est strictement inférieure à a = 5 %, le test est significatif au seuil
a = 5 %. Donc vous rejetez H0 au seuil a = 5 % et vous acceptez H1 au seuil a = 5 % avec
un risque d’erreur de première espèce a = 5 %. Donc, vous êtes obligé(e) de stopper là car
l’hypothèse de normalité n’est pas vérifiée. Vous ne pouvez pas mettre en place le test de Student
demandé.
Solution des exercices 383

Pour vérifier l’homoscédasticité des erreurs, tracez les résidus en fonction de la masse en tapant
la ligne de commande suivante :

> plot(lauriers$masse,résidus)


2

● ● ●


● ●

● ● ● ●
● ●

● ●
1

● ●

● ●
● ● ● ● ● ●


● ●
residus




0



● ●
● ●
● ● ●

● ● ● ●

● ●
−1

● ●

● ●
● ●
● ●
● ●
● ●


−2


3 4 5 6

lauriers$masse
© Dunod – La photocopie non autorisée est un délit.

Figure 9.3

Les résidus ne montrent pas le défaut d’homoscédasticité des erreurs, ni d’effet systématique.
Donc une approche par permutation est donc envisageable (cf. question suivante).
13) En utilisant la théorie reposant sur la loi normale, nous devrions fournir la même réponse
qu’à la question précédente et donc la même conclusion. Le recours aux tests de permutation
permet de procéder au test demandé.
Installez la bibliothèque lmPerm et chargez-la en mémoire. Pour utiliser l’approche par
permutation, il suffit de remplacer l’appel de la fonction lm par lmp.

> lmp(taille~masse,lauriers)
384 9 • Régression linéaire simple

[1] "Settings: unique SS : numeric variables centered"


Call:
lmp(formula=taille~masse,data=lauriers)
Coefficients:
(Intercept) masse
13.92 1.70

Vous constaterez que lmp travaille par défaut avec des variables centrées, et ainsi pour repro-
duire les résultats précédents de la fonction lm, vous devez utiliser l’option center=FALSE.

Remarque : la valeur de 13,92 correspond bien à la moyenne des tailles calculées à la


question 8).

> (perm_lauriers~lmp(taille~masse,lauriers,center=FALSE))

> lmp(taille~masse,lauriers,center=FALSE)
[1] "Settings: unique SS "
Call:
lmp(formula=taille~masse,data=lauriers,center=FALSE)
Coefficients:
(Intercept) masse
6.414 1.700

Les résidus sont toujours les mêmes, ainsi que les estimations de b0 et de b1 ou le coefficient
de détermination R 2 . Seule change la méthode avec laquelle est évaluée la significativité du test
de Student :

H0 : b1 = 0
contre
H1 : b1 = 0.

Pour afficher la p-valeur calculée par permutation, tapez :

> summary(perm_lauriers)

Call:
lmp(formula= taille~masse,data=lauriers,center=FALSE)
Solution des exercices 385

Residuals:
Min 1Q Median 3Q Max
-2.1339 -0.8590 0.1309 0.9259 2.3060
Coefficients:
Estimate Iter Pr(Prob)
masse 1.7 5000 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.12 on 70 degrees of freedom
Multiple R-Squared: 0.7068,Adjusted R-squared: 0.7026
F-statistic: 168.8 on 1 and 70 DF, p-value: < 2.2e-16 }

Le test est significatif au seuil a = 5 % car la p-valeur calculée est < 2e-16. Cette p-valeur
a été calculée sur la base de 5 000 permutations des données. Il est possible d’augmenter ce
nombre grâce à l’option maxIter. Nous rejetons H0 au seuil a = 5 % et décidons que H1 est
vraie au seuil a = 5 %. Le risque associé à cette décision est un risque d’erreur de première
espèce qui vaut 5 %.

14) À la vue de ces résultats, le jardinier semble avoir raison sur le fait qu’il existe une rela-
tion linéaire entre la taille et la masse d’un follicule de laurier rose puisque le coefficient de
détermination est égal à 70,7 % et que b1 = 0.

Si l’hypothèse de normalité était vérifiée, vous pourriez :


B
S
U – obtenir les intervalles de confiance à 95 % autour des paramètres de la régression en exécutant
la ligne de commande :

> confint(droite_lauriers)
© Dunod – La photocopie non autorisée est un délit.

– obtenir un intervalle de confiance à 95 % pour la valeur moyenne de Y sachant que X = 4, 8 g


en exécutant la ligne de commande :

> predict(droites_lauriers,list(masse=c(4.8)),interval="confidence")

De plus, comme R2 est assez élevé,

– obtenir un intervalle de prévision à 95 % pour la valeur individuelle de Y sachant que X = 4, 8 g


en exécutant la ligne de commande :

> predict(droites_lauriers,list(masse=c(4.8)),interval="prediction")
386 9 • Régression linéaire simple

Exercice 9.2
1) Pour isoler les données sur les bignones, vous pouvez taper la ligne de commande suivante :

> bignones<-subset(Mesures5,subset=(Mesures5$espece=="bignone"))[,c(1,4)]

Pour obtenir le graphique, tapez la ligne de commande suivante :

> plot(masse~masse_sec,data=bignones,pch=19)
35


30
25


20
masse



15

● ● ●
● ●


●● ● ●

10


● ●
● ● ● ●
● ●
● ●
● ●
● ●●
● ● ●
● ● ●

●● ●
5


● ● ●●
● ● ●
● ● ● ●●
● ● ●
● ●

● ●●

0

0 1 2 3 4 5 6

masse_sec

Figure 9.4

2) Il semblerait qu’en regardant la figure 9.4, une relation linéaire pourrait exister entre les deux
variables masse et masse_sec d’une gousse de bignone.
3) a-

> droite_bignones<-lm(masse~masse_sec,data=bignones)
> coef(droite_bignones)
Solution des exercices 387

(Intercept) masse_sec
-0.5391407 4.8851935

La pente est égale à 4,8851935 et l’ordonnée à l’origine à −0,5391407 g.

> residus<-residuals(droite_bignones)
> plot(bignones$masse_sec,residus)

b-



6



● ●
4


● ● ●



2





●●
residus

● ●
● ● ● ●

● ● ●


● ●

0


● ● ●
● ●
●● ●
● ●

● ●
●● ●

● ●
−2

● ●
● ●

● ●
●●
● ●



−4

● ●

0 1 2 3 4 5 6
© Dunod – La photocopie non autorisée est un délit.

bignones$masse_sec

Figure 9.5

Les résidus n’ont pas l’air correct car ils présentent une forme en trompette, ce qui remet en ques-
tion de l’homoscédasticité des erreurs. Vous procéderez dans la suite à un test pour vous assurer
que ce défaut est significatif au seuil de a = 5 %. Par contre, les résidus semblent être répartis
aléatoirement au-dessus ou en-dessous de l’axe des abscisses. Vous notez également l’absence
d’un effet systématique qui se traduirait par exemple par une forme de banane. L’hypothèse
d’indépendance n’est pas remise en question.
Malgré l’inhomogénéité des variances, l’estimation de la pente et de l’ordonnée à l’origine
restent sans biais. Il sera, par contre, nécessaire de tenir compte de l’hétéroscédasticité des
erreurs pour la mise en œuvre des procédures de test et la construction des intervalles de
confiance.
388 9 • Régression linéaire simple

4)

> fitted(droite_bignones)

111 112 113 114 115 116 117


14.116440 4.834572 16.070517 31.703136 16.559037 20.467191 9.719766
...
...
174 175 176 177 178 179 180
4.346053 9.231246 4.834572 6.788650 6.788650 6.300130 3.857533

Les ordonnées &yi se lisent sous les nombres entiers. Ils varient de 111 à 180 car ils proviennent
du tableau de données complet Mesures5 où ils correspondent aux numéros des lignes contenant
les observations réalisées sur les gousses de bignone.
5)

> abline(coef(droite_bignones),col="red",lwd=2)
35


30
25


20
masse



15

● ● ●
● ●


●● ● ●

10


● ●
● ● ● ●
● ●
● ●
● ●
● ● ●●
● ●
● ● ●

●● ●
5


● ● ●●
● ● ●
● ● ● ●● ● ●
●● ●

● ●●

0

0 1 2 3 4 5 6

masse_sec

Figure 9.6

6)

> predict(droite_bignones,(masse_sec=2.5))
Solution des exercices 389

1
11.67384

Une estimation plausible de Y pour x0 = 2,5 g est égale à 11,67384 g.


7) Pour calculer cet écart, vous tapez la ligne de commande suivante :

> residuals(droite_bignones)[bignones$masse_sec==2.5]

145
-2.673843

Cet écart s’appelle l’écart résiduel.


8) D’une part, vous pouvez taper la ligne de commande suivante pour obtenir y n :

> mean(bignones$masse)

Vous obtenez le résultat suivant :

[1] 7.521429

D’autre part, faites le calcul suivant :

> -0.5391407+4.8851935*mean(bignones$masse_sec)

Vous obtenez le résultat suivant :

[1] 7.521429
© Dunod – La photocopie non autorisée est un délit.

Pour limiter les erreurs d’arrondi, vous auriez pu utiliser la ligne de commande suivante :

> coef(droite_bignones)[1]+coef(droite_bignones)[2]*mean(bignones$masse_sec)

(Intercept)
7.521429

Vous avez donc vérifié numériquement que la droite des moindres carrés ordinaires passe par le
point moyen (x n , y n ). Il est possible de démontrer que ce résultat est vrai pour toutes les droites
des moindres carrés ordinaires.
9) Pour obtenir le coefficient de détermination, vous pouvez taper la ligne de commande sui-
vante :
390 9 • Régression linéaire simple

> summary(droite_bignones)

Elle renvoie les résultats suivants :

Call:
lm(formula=masse~masse_sec,data=bignones)
Residuals:
Min 1Q Median 3Q Max
-4.6279 -1.7444 -0.2961 1.4310 6.4295
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.5391 0.5657 -0.953 0.344
masse_sec 4.8852 0.2912 16.774 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.497 on 68 degrees of freedom
Multiple R-squared: 0.8054, Adjusted R-squared: 0.8025
F-statistic: 281.4 on 1 and 68 DF, p-value: < 2.2e-16

En suivant les indications du cours, vous déterminez que le coefficient de détermination R 2 est
environ égal à 80,54 %.
10) Pour récupérer les variations, vous pouvez taper la ligne de commande suivante :

> anova(droite_bignones)

Elle renvoie comme résultat :

Analysis of Variance Table


Response: masse
Df Sum Sq Mean Sq F value Pr(>F)
masse_sec 1 1754.44 1754.44 281.36 < 2.2e-16 ***
Residuals 68 424.01 6.24
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Donc la variation expliquée par la variable est égale à 1 754,44 g2 et la variation totale est
égale à 1 754,44 + 424,01 = 2 178,45 g2 . Maintenant, pour retrouver la valeur du coefficient
de détermination R 2 , il faut diviser 1 754,44 g2 par 2 178,45 g2 , ce qui donne 0,8053 ou encore
80,53 %. Vous retrouvez bien la valeur obtenue à la question précédente.
Solution des exercices 391

11) Le modèle ne semble pas homoscédastique. L’estimation d’une variance commune pour
toutes les erreurs n’est pas pertinente.
12) et 13) Pour tester les deux jeux d’hypothèses suivants :

H0 : b0 = 0 H0 : b1 = 0
contre et contre
H1 : b0 = 0 H1 : b1 = 0.

il faut vérifier que les variables erreurs sont indépendantes et suivent la loi normale centrée et de
variance s2 . La condition d’indépendance est vérifiée compte tenu du protocole expérimental
qui a été suivi. La procédure pour vérifier les deux conditions restantes est en trois temps :
– calculer les résidus,
– faire un test de Shapiro-Wilk sur les résidus,
– faire un test de White sur les résidus si l’hypothèse de normalité des erreurs n’est pas
rejetée.

> residus<-residuals(droite_bigognes)
> shapiro.test(residus)

Shapiro-Wilk normality test


data: residus
W=0.9821, p-value=0.4161

Les résidus sont au nombre de 70  30. Le test de normalité est donc fiable. La p-valeur du
test est strictement supérieure à a = 5 %, le test n’est pas significatif au seuil a = 5 %. Nous
© Dunod – La photocopie non autorisée est un délit.

conservons, par défaut, l’hypothèse nulle H0 de normalité des erreurs.


Le risque d’erreur associé à cette décision est un risque d’erreur de deuxième espèce b.
Nous ne pouvons pas l’évaluer dans le cas présent mais il est considéré comme satisfaisant car
l’effectif de l’échantillon, auquel le test de Shapiro-Wilk est appliqué vaut 70 et donc dépasse
30. En effet :

> length(residus)

>[1] 70

Le test de White est un cas particulier du test de Breusch-Pagan qui est disponible dans la
bibliothèque lmtest. Les lignes de commande suivantes nous permettent de l’exécuter :
392 9 • Régression linéaire simple

> library(lmtest)
> bptest(droite_bignones, ~masse_sec + I(masse_sec^2), data = bignones)

studentized Breusch-Pagan test


data: droite_bignones
BP = 20.238, df = 2, p-value = 4.031e-05

Le test de White permet de s’intéresser aux deux hypothèses « H0 : les erreurs sont
homoscédastiques » contre « H1 : les erreurs sont hétéroscédastiques ». L’hypothèse de
normalité des erreurs n’a pas été remise en cause, le test de White est donc fiable. La p-valeur
du test est inférieure ou égale à a = 5 %, le test est significatif au seuil a = 5 %. Nous
rejetons l’hypothèse nulle H0 d’homoscédasticité des erreurs au seuil a = 5 % et décidons
que l’hypothèse alternative H1 d’hétéroscédasticité des erreurs est vraie au seuil a = 5 %.
Les variances des erreurs présentent un défaut d’homogénéité significatif. Les conditions
d’utilisation ne sont pas remplies et il n’est pas possible de procéder à des tests ou de construire
des intervalles de confiance avec la théorie classique.
Comme nous l’avions perçu graphiquement, les erreurs ne sont pas homoscédastiques, il faut
tenir compte de cette inhomogénéité des variances lors de l’estimation des paramètres du modèle
puis de la mise en œuvre des tests de Student ou du test global de Fisher pour la régression.

> library(sandwich)
> vcovHC(droite_bignones)

(Intercept) masse_sec
(Intercept) 0.2782291 -0.1714076
masse_sec -0.1714076 0.1397390

Ce sont les estimations, tenant compte de l’inhomogénéité des variances, de la matrice de


variance-covariance des estimateurs b̂0 et b̂1 .
Voici la ligne de commande qui permet de réaliser les tests de Student des coefficients b0 et b1 .

> coeftest(droite_bignones,df="inf",vcov=vcovHC)

z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.53914 0.52747 -1.0221 0.3067
masse_sec 4.88519 0.37382 13.0684 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Solution des exercices 393

Voici la ligne de commande qui permet de réaliser le test de Fisher global du modèle de
régression linéaire simple.

> waldtest(droite_bignones,vcov=vcovHC)

Wald test
Model 1: masse~masse_sec
Model 2: masse~1
Res.Df Df F Pr(>F)
1 68
2 69 -1 170.78 < 2.2e-16 ***
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Pour construire les intervalles de confiance autour des paramètres, vous pouvez utiliser la
bibliothèque hcci.

> library(hcci)
> ?hcci

L’aide de la bibliothèque hcci vous apprend qu’il existe plusieurs procédures permettant de
tenir compte de l’hétéroscédasticité. La fonction vcovHC utilise la méthode HC3 par défaut et la
fonction HC, la méthode HC4 avec le paramètre k = 0,7 par défaut. Les méthodes HC3, HC4
et HC5 sont recommandées. En comparant leurs résultats, vous constatez qu’elles aboutissent
toutes aux mêmes conclusions au seuil de a = 5 % : conservation, par défaut, de « H0 : b0 = 0 »
pour le test de l’ordonnée à l’origine et décision que « H1 : b1 = 0 » est vraie.

> HC(droite_bignones,method=3)
© Dunod – La photocopie non autorisée est un délit.

[,1] [,2]
[1,] 0.2782291 -0.1714076
[2,] -0.1714076 0.1397390

> coeftest(droite_bignones,df="inf", vcov=HC(droite_bignones,method=3))

z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.53914 0.52747 -1.0221 0.3067
masse_sec 4.88519 0.37382 13.0684 <2e-16 ***
394 9 • Régression linéaire simple

---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> vcovHC(droite_bignones,type="HC4")

(Intercept) masse_sec
(Intercept) 0.4035131 -0.2603917
masse_sec -0.2603917 0.2022249

> coeftest(droite_bignones,df="inf",
+ vcov=vcovHC(droite_bignones,type="HC4"))

z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.53914 0.63523 -0.8487 0.396
masse_sec 4.88519 0.44969 10.8634 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> vcovHC(droite_bignones,type="HC4m")

(Intercept) masse_sec
(Intercept) 0.3020561 -0.1891167
masse_sec -0.1891167 0.1526165

> coeftest(droite_bignones,df="inf",
+ vcov=vcovHC(droite_bignones,type="HC4m"))

z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.53914 0.54960 -0.981 0.3266
masse_sec 4.88519 0.39066 12.505 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Solution des exercices 395

> HC(droite_bignones,method=4,k=0.7)

[,1] [,2]
[1,] 0.4035131 -0.2603917
[2,] -0.2603917 0.2022249

> coeftest(droite_bignones,
+ df="inf", vcov=HC(droite_bignones,method=4,k=0.7))

z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.53914 0.63523 -0.8487 0.396
masse_sec 4.88519 0.44969 10.8634 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> vcovHC(droite_bignones,type="HC5")

(Intercept) masse_sec
(Intercept) 0.4141695 -0.2662869
masse_sec -0.2662869 0.2047638

> coeftest(droite_bignones,
© Dunod – La photocopie non autorisée est un délit.

+ df="inf", vcov=vcovHC(droite_bignones,type="HC5"))

z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.53914 0.64356 -0.8377 0.4022
masse_sec 4.88519 0.45251 10.7958 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> HC(droite_bignones,method=5)
396 9 • Régression linéaire simple

[,1] [,2]
[1,] 0.4141695 -0.2662869
[2,] -0.2662869 0.2047638

> coeftest(droite_bignones,
+ df="inf", vcov=HC(droite_bignones,method=5))

z test of coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.53914 0.64356 -0.8377 0.4022
masse_sec 4.88519 0.45251 10.7958 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Passons à la construction d’intervalles de confiance sur les paramètres b0 et b1 de la régression


linéaire simple. Nous devons passer par cette étape de réécriture du modèle pour pouvoir utiliser
les fonctions Pboot et Tboot de la bibliothèque hcci.

> y=bignones$masse
> x=bignones$masse_sec
> model=lm(y~x)

Commencez par utiliser une technique de bootstrap simple.

> Pboot(model, significance = 0.05, double = FALSE, J=1000, K = 100,


+ distribution = "rademacher")

$beta
[1] -0.5391407 4.8851935
$ci_lower_simple
[1] -1.525008 4.190880
$ci_upper_simple
[1] 0.4131857 5.5959062
$ci_lower_double
logical(0)
$ci_upper_double
logical(0)

Continuez avec une technique de bootstrap t simple.


Solution des exercices 397

> Tboot(model, significance = 0.05, double = FALSE, J=1000, K = 100,


+ distribution = "rademacher")

$beta
[1] -0.5391407 4.8851935
$ci_lower_simple
[1] -1.764021 3.982058
$ci_upper_simple
[1] 0.7863737 5.7994540
$ci_lower_double
logical(0)
$ci_upper_double
logical(0)
$J
[1] 1000
$K
[1] 100

Utilisez maintenant une technique de bootstrap double pour estimer plus précisément les inter-
valles de confiance. Commencez par le bootstrap percentile double.

> Pboot(model, significance = 0.05, double = TRUE, J=1000, K = 100,


+ distribution = "rademacher")

$beta
[1] -0.5391407 4.8851935
© Dunod – La photocopie non autorisée est un délit.

$ci_lower_simple
[1] -1.496296 4.242878
$ci_upper_simple
[1] 0.3944334 5.5317251
$ci_lower_double
[1] -1.698017 4.156247
$ci_upper_double
[1] 0.7604135 5.6514974

Continuez avec une technique de bootstrap t double.

> Tboot(model, significance = 0.05, double = TRUE, J=1000, K = 100,


+ distribution = "rademacher")
398 9 • Régression linéaire simple

$beta
[1] -0.5391407 4.8851935
$ci_lower_simple
[1] -1.836769 3.977175
$ci_upper_simple
[1] 0.7325968 5.8360778
$ci_lower_double
[1] -2.627933 3.836480
$ci_upper_double
[1] 1.347561 5.958359
$J
[1] 1000
$K
[1] 100

Les intervalles de confiance et les tests donnent des informations cohérentes.


Le modèle étant hétéroscédastique, la construction d’intervalles de prédiction n’est pas fiable.
Chapitre 10

Analyse de la variance à un facteur

Are the effects of A and B different? They are always different — for some decimal place —
for any A and B. 
De John W. Tukey,  The philosophy of multiple comparisons , Statistical Science, 6, 1991.
[...] a hypothesis test tells us whether the observed data are consistent with the null hypo-


thesis, and a confidence interval tells us which hypotheses are consistent with the data. 
De William C. Blackwelder,  “Proving the null hypothesis” in clinical trials , Controlled
Clinical Trials, 3(4), 1982.

Objectifs de ce chapitre
➤ introduire le vocabulaire de la théorie de l’analyse de la variance
➤ présenter le modèle statistique associé à l’analyse de la variance
➤ mettre en place le test de Fisher
➤ mettre en place le test des comparaisons multiples
➤ calculer les puissances des tests

10.1 INTRODUCTION
10.1.1 Objectif
L’analyse de la variance est l’une des procédures les plus utilisées dans les applications de la
statistique ainsi que dans les méthodes d’analyse de données. Elle permet de comparer, entre
400 10 • Analyse de la variance à un facteur

plusieurs populations, les espérances de variables aléatoires indépendantes qui suivent des
lois normales de même variance.

10.1.2 Exemple
Des forestiers ont réalisé des plantations d’arbres en trois endroits. Plusieurs années plus tard,
ils souhaitent savoir si la hauteur moyenne des arbres est identique dans les trois forêts. Chacune
des forêts constitue une population et dans chacune d’entre elles, un échantillon d’arbres est tiré
au sort. Puis la hauteur de chaque arbre est mesurée en mètres.

Forêt 1 23,4 24,4 24,6 24,8 24,9 25,0 25,5 25,8 26,1 26,2
Forêt 2 18,9 21,1 21,1 21,3 21,7 22,1 22,2 22,5 22,7 23,5
Forêt 3 22,5 22,9 23,4 23,7 23,9 24,0 24,0 24,2 24,3 24,5

Cette écriture du tableau est dite  désempilée . Vous pouvez l’écrire sous forme standard
( empilée ), c’est-à-dire avec deux colonnes, une pour la forêt et une pour la hauteur, et trente
lignes, une pour chaque mesure réalisée.

Arbre Forêt Hauteur (en m) Arbre Forêt Hauteur (en m)


1 Forêt 1 23,4 6 Forêt 2 22,1
2 Forêt 1 24,4 7 Forêt 2 22,2
3 Forêt 1 24,6 8 Forêt 2 22,5
4 Forêt 1 24,8 9 Forêt 2 22,7
5 Forêt 1 24,9 10 Forêt 2 23,5
6 Forêt 1 25 1 Forêt 3 22,5
7 Forêt 1 25,5 2 Forêt 3 22,9
8 Forêt 1 25,8 3 Forêt 3 23,4
9 Forêt 1 26,1 4 Forêt 3 23,7
10 Forêt 1 26,2 5 Forêt 3 23,9
1 Forêt 2 18,9 6 Forêt 3 24
2 Forêt 2 21,1 7 Forêt 3 24
3 Forêt 2 21,1 8 Forêt 3 24,2
4 Forêt 2 21,3 9 Forêt 3 24,3
5 Forêt 2 21,7 10 Forêt 3 24,5

Remarque : les données sont saisies et traitées sous cette forme dans la plupart des
logiciels.
10.2 Modélisation statistique 401

10.2 MODÉLISATION STATISTIQUE


10.2.1 Définitions et notations

Définition 10.1 Pour chaque mesure, deux variables sont observées :


1. la forêt à laquelle appartient l’arbre. La variable  Forêt  est une variable qualitative avec
trois modalités bien déterminées. Elle est appelée le facteur. Ici le facteur  Forêt  est
totalement contrôlé par l’expérimentateur et est donc à effets fixes,
2. la hauteur de l’arbre. C’est une mesure. La variable  Hauteur  est une variable quantitative.
Elle est appelée la réponse.

Notations :
– La variable mesurée à l’issue d’une telle expérience est notée Y .
– Pour les observations, deux indices sont utilisés :
• le premier indice indique le numéro du groupe dans la population ( Forêt ), noté en
général i,
• le second indice indique le numéro de l’observation dans chacun des groupes qui com-
posent l’échantillon ( Arbre ), noté en général j.
– Les observations sont en général notées par yi, j où i varie de 1 à I et j de 1 à n i .

Définition 10.2 Lorsque les I échantillons sont tous de même taille, c’est-à-dire n i = J pour i
variant de 1 à I , l’expérience est dite équilibrée.

Remarque :
1. Lorsque l’expérience est équilibrée, l’effectif total n est égal à I J .
2. Lorsque les effectifs des échantillons sont très différents, les différences qu’il est
possible de détecter sont supérieures à celles d’une expérience équilibrée qui aurait le
même effectif total. L’analyse est donc moins performante.

Seul le plan équilibré sera détaillé par la suite mais les logiciels de statistique vous permettent
B d’analyser aussi des expériences déséquilibrées.
S
U

Définition 10.3 En se plaçant dans le cas équilibré, les moyennes de chaque échantillon sont
définies et notées par :
1
J
yi = yi, j , i = 1, . . . , I ,
J
j=1
402 10 • Analyse de la variance à un facteur

et les variances de chaque échantillon par :

1
J
si2 (y) = (yi, j − y i )2 , i = 1, . . . , I .
J
j=1

Attention, cette dernière formule exprime la variance non corrigée. Très souvent, dans les
logiciels de statistique, c’est la variance corrigée qui est utilisée : au lieu d’être divisée par J,
elle est divisée par J − 1.

Retour à l’exemple des forêts :


les lignes de commande ci-dessous vont vous permettre de calculer les quantités évoquées
ci-dessus. Il faut d’abord commencer par rentrer les données sous R. Pour cela, tapez les lignes
de commande suivantes :

> foret<-rep(1:3,c(10,10,10))
> hauteur<-c(23.4,24.4,24.6,24.9,25,26.2,26.1,24.8,25.5,25.8,18.9,21.1,21.1,
+ 22.1,22.5,23.5,22.7,21.3,22.2,21.7,22.5,22.9,23.7,24,24,24.5,24.3,24.2,
+ 23.4,23.9)
> foret<-factor(foret)
> arbre<-data.frame(foret,hauteur)
> rm(foret)
> rm(hauteur)
> arbre

La sortie que R produit n’a pas été reproduite intégralement par souci de gain de place. En voici
donc un extrait :

foret hauteur
1 1 23.4
2 1 24.4
................
................
29 3 23.4
30 3 23.9

Pour obtenir les moyennes dans chaque échantillon, vous tapez les deux lignes de commande
suivantes :

> moyennes<-tapply(arbre$hauteur,arbre$foret,mean)
> moyennes
10.2 Modélisation statistique 403

R vous affiche :
1 2 3
25.07 21.71 23.74

Pour obtenir les variances corrigées dans chaque échantillon, vous tapez les deux lignes de
commande suivantes :

> variances<-tapply(arbre$hauteur,arbre$foret,var)
> variances

Elles vous renvoient :


1 2 3
0.7356667 1.5565556 0.4026667

10.2.2 Modèle statistique


Le modèle statistique, dans le cas équilibré, s’écrit sous la forme suivante :
Yi, j suit la loi N (mi ; s) , pour i = 1, . . . , I et j = 1, . . . , J ,
où mi désigne l’espérance dans la population i. Ainsi vous constatez que, si les lois des variables
Yi, j sont différentes, elles ne peuvent différer que par leur espérance. Il y a donc un simple
décalage entre elles.
Le plus souvent, ce modèle statistique est écrit de la façon suivante :
B
S
U Yi,j = m + ai + ´i,j ,

où les variables ´i,j suivent la loi normale N (0; s) pour i = 1, . . . , I et j = 1, . . . , J et les ai


vérifient la contrainte :
I
ai = 0.
© Dunod – La photocopie non autorisée est un délit.

i=1

Vous avez donc la correspondance :

mi = m + ai pour i = 1, . . . , I.

10.2.3 Trois conditions fondamentales


Vous supposez que les variables d’erreur ´i, j satisfont les trois conditions fondamentales
suivantes :
1. Les variables aléatoires ´i, j sont indépendantes.
2. Les variables ´i, j ont toutes la même variance inconnue s2 > 0. C’est la condition
d’homogénéité des variances ou d’homoscédasticité.
3. Les variables ´i, j suivent la loi normale centrée et de variance s2 > 0.
404 10 • Analyse de la variance à un facteur

10.3 TEST DE COMPARAISON DE PLUSIEURS ESPÉRANCES


Vous désirez choisir entre les deux hypothèses suivantes :
H0 : m1 = m2 = · · · = m I
contre
H1 : les espérances mi ne sont pas toutes égales.
Ou de manière équivalente :
H0 : a1 = a2 = · · · = a I = 0
contre
H1 : les effets ai ne sont pas tous nuls.
La méthode qui permet de procéder à ce choix, à l’aide d’un test, est appelée l’analyse de la
variance. Le cas détaillé dans la suite demeure le cas équilibré.

10.3.1 Deux propriétés fondamentales


Le test est fondé sur deux propriétés.
– Première propriété :
la moyenne de toutes les observations est la moyenne des moyennes de chaque échantillon.
Ceci s’écrit :
1  1  1
J I I J I
yn = yi, j = yi, j = yi .
n n I
j=1 i=1 i=1 j=1 i=1
Remarque : vous pouvez vérifier cette propriété sur l’exemple des forêts. En tapant la
ligne de commande suivante :
> moy.g<-mean(arbre$hauteur)
> moy.g

Vous obtenez :

[1] 23.50667

qui est aussi égal à :


> mean(moyennes)

En effet, en tapant cette ligne de commande, vous obtenez le résultat suivant :

[1] 23.50667
10.3 Test de comparaison de plusieurs espérances 405

– Deuxième propriété :
la variance de toutes les observations est la somme de la variance non corrigée des
moyennes et de la moyenne des variances non corrigées. Ceci s’écrit :

1  1 1 2
I J I I
2
s (y) = (yi, j − y n )2 = (y i − y n )2 + si (y). (10.1)
n I I
i=1 j=1 i=1 i=1

Remarque : vous pouvez faire en exercice la vérification de cette égalité en vous servant
des données de l’exemple des forêts.

Retour à l’exemple des forêts :


comme vous avez pu vous en rendre compte, le test porte sur la comparaison des espérances. À
cette étape, il serait bon de tracer les boîtes à moustaches de la variable hauteur en fonction de
la variable foret. Pour cela, tapez les lignes de commande suivantes :

> plot(arbre$foret,arbre$hauteur)
> points(1:3,moyennes,pch="@")
> abline(h=moy.g)

Le résultat est le graphique suivant :


© Dunod – La photocopie non autorisée est un délit.

Figure 10.1
406 10 • Analyse de la variance à un facteur

10.3.2 Le résultat fondamental de l’analyse de la variance


En multipliant les deux membres de l’équation (10.1) par n, vous obtenez :
⎛ ⎞

I 
J 
I 
I 
J
(yi, j − y n )2 = J (y i − y n )2 + ⎝ (yi, j − y i )2 ⎠,
i=1 j=1 i=1 i=1 j=1

ou encore ce qui s’écrit :

SCtot = SC f ac + SCres

Définition 10.4 La variation totale est le terme défini par :


I 
J
SCtot = (yi, j − y n )2 .
i=1 j=1

Elle indique la dispersion des données autour de la moyenne générale.

Définition 10.5 La variation due au facteur est le terme défini par :


I
SC f ac = J (y i − y n )2 .
i=1

Elle indique la dispersion des moyennes autour de la moyenne générale.

Définition 10.6 La variation résiduelle est le terme défini par :


⎛ ⎞

I J
SCres = ⎝ (yi, j − y i )2 ⎠.
i=1 j=1

Elle indique la dispersion des données à l’intérieur de chaque échantillon autour de sa moyenne.

Définition 10.7 Le carré moyen dû au facteur est le terme défini par C M f ac = SC f ac /(I − 1).

Définition 10.8 Le carré moyen résiduel est le terme défini par C Mres = SCres /(n − I ). Si
les variables d’erreur ´i, j sont indépendantes et de même variance s2 , le carré moyen résiduel
est une estimation sans biais de cette variance s2 .
10.3 Test de comparaison de plusieurs espérances 407

10.3.3 Test de l’analyse de la variance


Conditions d’application du test :
les trois conditions fondamentales d’application du test sont détaillées au paragraphe 10.2.3.
Hypothèses du test :

H0 : m1 = m2 = · · · = m I
contre
H1 : les espérances mi ne sont pas toutes égales.

Ou de manière équivalente :

H0 : a1 = a2 = · · · = a I = 0
contre
H1 : les effets ai ne sont pas tous nuls.

Statistique du test :
si les trois conditions fondamentales sont satisfaites et si l’hypothèse nulle H0 est vérifiée, alors
C M f ac
la variable F(obs) = est une réalisation de la variable aléatoire F qui suit la loi de
C Mres
Fisher F(I − 1; n − I ).
Décision et conclusion du test :
pour un seuil a donné, des tables de la loi de Fisher vous fournissent une valeur critique ca telle
que P (F  ca ) = 1 − a. Alors vous décidez :

H0 est vraie si F(obs) < ca ,
H1 est vraie si F(obs)  ca .

Vous pouvez aussi raisonner avec la p-valeur, comme dans les autres tests vus précédemment.
Plusieurs fonctions du logiciel R permettent de réaliser ce test :
B
S – anova appliquée à un objet produit par lm,
U
– summary utilisée sur un objet produit par aov.
408 10 • Analyse de la variance à un facteur

10.3.4 Tableau de l’analyse de la variance

Définition 10.9 Le tableau de l’analyse de la variance résume l’ensemble de la procédure.

Sources Sommes Degrés Carrés


de Variation des carrés de liberté moyens F(obs) Fcritique

C M f ac
Due au facteur SC f ac I −1 C M f ac ca
C Mres

Résiduelle SCres n−I C Mres


Totale SCtot n−1

Retour à l’exemple des forêts :


vous devez commencer par indiquer au logiciel R qu’il doit utiliser la même contrainte sur les
paramètres du modèle que vous. Dans le cas équilibré celle-ci s’écrit a1 + · · · + a I = 0. Avant de
débuter n’importe quelle analyse de la variance, vous exécuterez toujours la ligne commande :

> options(contrasts=c("contr.sum","contr.poly"))

Pour obtenir le tableau de l’analyse de la variance en utilisant les fonctions anova et lm, il
faut taper les deux lignes de commande suivantes :

> modele1<-lm(hauteur~foret,data=arbre)
> anova(modele1)

qui renvoient :

Analysis of Variance Table

Response: hauteur
Df Sum Sq Mean Sq F value Pr(>F)
foret 2 57.265 28.6323 31.874 7.809e-08 ***
Residuals 27 24.254 0.8983
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Pour obtenir le tableau de l’analyse de la variance en utilisant les fonctions aov et summary,
il faut taper les deux lignes de commande suivantes :

> modele1_aov<-aov(hauteur~foret,data=arbre)
> summary(modele1_aov)
10.4 Vérification des trois conditions fondamentales et conclusion 409

qui renvoient un tableau identique à celui que vous venez d’obtenir :

Df Sum Sq Mean Sq F value Pr(>F)


foret 2 57.26 28.632 31.87 7.81e-08 ***
Residuals 27 24.25 0.898
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Pour indiquer à R que, dans le cas équilibré, les estimations des effets ai de chaque groupe
B doivent être de somme nulle, et donc de suivre la convention indiquée au début du paragraphe
S
U
10.2.2, vous devez exécuter la commande :

> options(contrasts=c("contr.sum","contr.poly"))

10.4 VÉRIFICATION DES TROIS CONDITIONS FONDAMENTALES ET


CONCLUSION
10.4.1 Condition d’indépendance
Il n’existe pas, dans un contexte général, de test statistique simple permettant d’étudier
l’indépendance. Ce sont les conditions de l’expérience qui vous permettront d’affirmer que
cette condition est remplie.

10.4.2 Condition de normalité


Vous ne pourrez pas, en général, la tester pour chaque échantillon. En effet le nombre d’observa-
tions est souvent très limité pour chaque échantillon. Vous allez donc la tester sur l’ensemble
des données.
© Dunod – La photocopie non autorisée est un délit.

Si les trois conditions fondamentales sont satisfaites et si vous notez :


´i, j = Yi, j − mi ,
alors les variables ´i, j suivent toutes la même loi N (0; s).
Vous cherchez à calculer les réalisations des variables d’erreur ´i, j sur l’échantillon. Pour cela
vous devez connaître la valeur observée yi, j et les espérances mi . Ces dernières étant inconnues,
1
J
vous les estimez avec les estimateurs de la moyenne Y i avec Y i = Yi, j . Vous en déduisez
J
j=1
les estimations y i .
Définition 10.10 Les quantités suivantes, notées &
ei, j et définies par :
&
ei, j = yi, j − y i , pour i = 1, . . . , I et j = 1, . . . , J ,
s’appellent les résidus.
410 10 • Analyse de la variance à un facteur

Remarque : la notation & ei, j souligne que les résidus peuvent s’interpréter comme des
estimations des variables d’erreur. Vous désignez par & ´i, j la variable aléatoire dont le
résidu &
ei, j est la réalisation.

Vous désirez tester la normalité des variables d’erreur ´i, j avec le test de Shapiro-Wilk. Vous
utilisez l’échantillon formé par les résidus pour réaliser ce test.
Hypothèses du test :

H0 : les variables d’erreur ´i, j suivent une loi normale


contre
H1 : les variables d’erreur ´i, j ne suivent pas une loi normale.

Condition d’application du test :


ce test nécessite l’indépendance des variables d’erreur.
Statistique du test :
dans le cadre de ce livre, la statistique du test de Shapiro-Wilk ne sera pas donnée.
Décision et conclusion du test :
vous utiliserez la p-valeur donnée par R ou un autre logiciel de statistique pour conclure. Des
études ont montré que, lorsque l’effectif de l’échantillon est supérieur ou égal à 30, la puissance
du test de Shapiro-Wilk est acceptable.
Retour à l’exemple des forêts :
avec le logiciel R, en tapant les deux lignes de commande suivantes

> residus<-residuals(modele1)
> shapiro.test(residus)

vous obtenez :
Shapiro-Wilk normality test
data: residus
W = 0.95202, p-value = 0.1914
La p-valeur étant strictement supérieure à a = 5 %, le test n’est pas significatif au seuil a = 5 %.
Vous décidez de conservez l’hypothèse nulle H0 au seuil a = 5 %. Le risque d’erreur associé
à cette décision est un risque de deuxième espèce b. Vous ne pouvez pas l’évaluer dans le cas
présent mais il est considéré comme satisfaisant car l’effectif de l’échantillon, auquel le test de
Shapiro-Wilk est appliqué, vaut 30 et donc dépasse 30. En effet :

> length(residus)

[1] 30

Vous décidez donc que l’hypothèse de normalité des variables d’erreur est satisfaite.
10.4 Vérification des trois conditions fondamentales et conclusion 411

10.4.3 Condition d’homogénéité des variances


Plusieurs tests permettent de tester l’égalité de plusieurs variances. Parmi ceux-ci, le test le plus
utilisé est le test de Bartlett dont le protocole est le suivant.
Hypothèses du test :

H0 : s21 = s22 = . . . = s2I


contre
H1 : les variances si2 ne sont pas toutes égales.

Conditions d’application du test :


ce test nécessite la normalité et l’indépendance des variables dont les variances sont comparées.
Statistique du test :
une réalisation de la statistique du test de Bartlett, pour des plans équilibrés ou non, est égale à :
- .
1 
I
B(obs) = (n − I ) ln(C Mres ) − (n i − 1) ln(sc,i
2
) ,
C1
i=1


• la quantité C1 est définie par :
I  
1  1 1
C1 = 1 + − ,
3(I − 1) ni − 1 n−I
i=1
• C Mres le carré moyen résiduel et sc,i
2
la variance corrigée de l’échantillon d’ordre i.
Si l’hypothèse nulle H0 est vérifiée, alors la variable Bobs est une réalisation de la variable
aléatoire B qui suit asymptotiquement la loi du x2 (I − 1).
En pratique, vous pouvez l’appliquer lorsque les effectifs n i des I échantillons sont tous au
moins égaux à trois.
Décision et conclusion du test :
pour un seuil donné a, des tables de la loi du Khi-deux vous fournissent une valeur critique ca
telle que P (B  ca ) = 1 − a. Alors vous décidez

H0 est vraie si B(obs) < ca ,
H1 est vraie si B(obs)  ca .
Mais comme vous utilisez le plus souvent un logiciel de statistique, vous aurez à votre disposition
la p-valeur du test pour conclure. Attention cette p-valeur est également calculée en ayant
recours à l’approximation mentionnée ci-dessus.
La fonction sous R qui permet de réaliser ce test est la fonction bartlett.test. Il vous est
B recommandé de consulter l’aide pour savoir comment il faut la paramétrer.
S
U
412 10 • Analyse de la variance à un facteur

Retour à l’exemple des forêts :


en tapant la ligne de commande suivante :

> bartlett.test(residus~foret,data=arbre)

vous obtenez :

Bartlett test of homogeneity of variances

data: residus by foret


Bartlett’s K-squared = 3.8798, df = 2, p-value = 0.1437

La p-valeur étant strictement supérieure à a = 5 %, le test n’est pas significatif au seuil a = 5 %.


Vous conservez l’hypothèse nulle H0 au seuil a = 5 % avec un risque d’erreur de deuxième
espèce b qu’il faudrait évaluer. Malheureusement ce calcul est trop complexe pour être exposé
dans ce livre. Vous décidez donc que l’hypothèse d’égalité des variances des erreurs est satisfaite.

10.4.4 Et si les conditions ne sont pas vérifiées que faire ?


Dans le cas où les conditions ne sont pas vérifiées, il vous faut alors envisager un test non
paramétrique. L’esprit du test de Kruskal-Wallis est similaire à celui de l’analyse de la variance :
il permet de détecter des décalages entre les différentes populations lorsque les variances des
différentes populations sont égales. Pour vérifier l’égalité des variances sans avoir à faire une
hypothèse de normalité, vous pourrez par exemple utiliser le test non paramétrique de Levene
disponible avec la fonction levene.test dans la bibliothèque car.
La fonction sous R qui permet de réaliser le test de Kruskal-Wallis est la fonction kruskal.test.
B
S
U

10.4.5 Conclusion de l’analyse de la variance


Retour à l’exemple des forêts :
pour obtenir une estimation des paramètres m, a1 , a2 et a3 du modèle par la méthode des
moindres carrés, qui est valable dès que les conditions d’indépendance et d’homogénéité des
variances1 sont vérifiées, vous pouvez exécuter la commande

> coef(modele1)

1. Pour vérifier l’égalité des variances sans avoir à faire une hypothèse de normalité, vous pourrez par exemple
utiliser le test non paramétrique de Levene disponible avec la fonction levene.test dans la bibliothèque car.
10.4 Vérification des trois conditions fondamentales et conclusion 413

(Intercept) foret1 foret2


23.506667 1.563333 -1.796667

Vous constatez que R, comme la plupart des logiciels de statistique, ne propose pas de valeur
estimée pour l’effet a3 associé à la Forêt 3. Celle-ci se déduit des valeurs estimées des effets de
& i , sont, comme les
la Forêt 1 et de la Forêt 2 en utilisant le fait que les estimations des effets, a
&1 + a
effets ai , de somme nulle : a &2 + a& 3 = 0. Par conséquent vous tapez la commande suivante
pour déterminer une estimation du coefficient associé à la Forêt 3 :

> -sum(coef(modele1)[2:3])

[1] 0.2333333

La fonction dummy.coef permet d’obtenir directement les valeurs de tous les coefficients.

> dummy.coef(modele1)

Full coefficients are


(Intercept): 23.50667
foret: 1 2 3
1.5633333 -1.7966667 0.2333333

En fait les trois conditions fondamentales sont remplies car la condition de normalité est égale-
ment vérifiée, vous pouvez donc procéder au test de Fisher de l’analyse de la variance. Comme
la p-valeur du tableau est inférieure ou égale à a = 5 %, le test est significatif au seuil a = 5 %.
Vous rejetez H0 au seuil a = 5 % et vous décidez que H1 est vraie au seuil a = 5 % avec un
risque d’erreur de première espèce a = 5 %. Il y a donc une différence entre les espérances de
la hauteur des arbres selon le type de forêts.
Vous avez décidé que les espérances sont différentes dans leur ensemble. Vous analyserez ce
cas par la suite avec un test de comparaisons multiples pour déterminer celles qui différent
les unes des autres.

Remarque : 1. La fonction granova.1w de la bibliothèque granova permet de construire


une représentation graphique illustrant la méthode et les résultats de l’analyse de la
variance.

> library(granova)
> granova.1w(arbre$hauteur,arbre$foret)
414 10 • Analyse de la variance à un facteur

$grandsum
Grandmean df.bet df.with MS.bet
23.51 2.00 27.00 28.63
MS.with F.stat F.prob SS.bet/SS.tot
0.90 31.87 0.00 0.70
$stats
Size Contrast Coef Wt’d Mean Mean Trim’d Mean Var. St. Dev.
2 10 -1.80 21.71 21.71 21.82 1.56 1.25
3 10 0.23 23.74 23.74 23.87 0.40 0.63
1 10 1.56 25.07 25.07 25.10 0.74 0.86
Dependent variable(response)

Contrast coefficients based on group means ans sizes

Figure 10.2
10.4 Vérification des trois conditions fondamentales et conclusion 415

2. La fonction granovagg.1w de la bibliothèque granovaGG permet de construire une


représentation graphique illustrant la méthode et les résultats de l’analyse de la variance.

> library(granovaGG)
> granovagg.1w(arbre$hauteur,arbre$foret)

By-group summary statistics for your input data (ordered by group means)
group group.mean trimmed.mean contrast variance
2 2 21.71 21.82 -1.80 1.56
3 3 23.74 23.87 0.23 0.40
1 1 25.07 25.10 1.56 0.74
standard.deviation group.size
2 1.25 10
3 0.63 10
1 0.86 10
Below is a linear model summary of your input data
Call:
lm(formula = score ~ group, data = owp$data)
Residuals:
Min 1Q Median 3Q Max
-2.8100 -0.4550 0.0750 0.5425 1.7900
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 23.5067 0.1730 135.844 < 2e-16 ***
group1 1.5633 0.2447 6.388 7.66e-07 ***
group2 -1.7967 0.2447 -7.342 6.75e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.9478 on 27 degrees of freedom
Multiple R-squared: 0.7025,Adjusted R-squared: 0.6804
F-statistic: 31.87 on 2 and 27 DF, p-value: 7.809e-08
416 10 • Analyse de la variance à un facteur

One−way ANOVA displaying 3 groups

10

10

10
2

1
26 ●


25 ●







Dependent variable (response)

●●
● Group Means
24 ●
● ● ● ● MS−between
● MS−within

● ●

22 ●

● ● Grand Mean
●●
● Group Mean Line

19 ●

F = 31.87
−1.8

0.23

1.6
0

Contrast coefficients based on group means

Figure 10.3

10.5 COMPARAISONS MULTIPLES


10.5.1 Objectif
Lorsque pour la comparaison des espérances la décision est  l’hypothèse alternative H1 est
vraie , pour déterminer quelles sont les différences, vous procédez à des tests qui comparent
les moyennes entre elles. Ce sont les tests de comparaisons multiples, adaptations du test de
Student. Un des tests les plus connus est le test de Tukey ou le test de Tukey-Kramer2 .

2. Le test de Tukey est initialement prévu dans le cas où le plan est équilibré, tandis que le test de Tukey-Kramer lui
est prévu dans le cas déséquilibré.
10.5 Comparaisons multiples 417

10.5.2 Le test de Tukey-Kramer


Les moyennes observées y i sont rangées par ordre croissant. Vous les notez alors :

y (1) , y (2) , . . . , y (I ) ,

et les espérances associées :


m(1) , m(2) , . . . , m(I ) .

Hypothèses du test :
pour chaque i < i  , vous considérez :

H0 : m(i) = m(i  ) contre H1 : m(i  ) > m(i) .

Conditions d’application du test :


les trois conditions fondamentales doivent être remplies. Le facteur étudié doit être à effets fixes,
posséder plus de trois modalités et avoir un effet significatif sur la réponse.
Statistique du test :
vous considérez le rapport :

y (i  ) − y (i)
Ti  ,i (obs) = '  ·
s R2 1 1
+
2 ni  ni
Si l’hypothèse nulle H0 est vérifiée et si les conditions d’application sont remplies, le rapport
Ti  ,i (obs) est une réalisation de la variable aléatoire Ti  ,i qui, suit la loi appelée étendue studen-
tisée et qui est notée T% n − I ; I .
Décision et conclusion du test :
pour un seuil a donné, des tables de l’étendue studentisée vous fournissent une valeur critique
ca telle que P (T  ca ) = 1 − a. Alors vous décidez :

H0 est vraie si ti  ,i (obs) < ca ,
H1 est vraie si ti  ,i (obs)  ca .
Vous pouvez aussi raisonner et conclure avec la p-valeur du test donnée par le logiciel de
statistique que vous utilisez, comme vous avez pris l’habitude de faire.
Remarque : la valeur critique ca ne dépend que des entiers n − I , degrés de liberté de
la somme des carrés résiduelle, et de I , nombre de groupes dont les espérances sont
comparées.

La fonction sous R qui permet de réaliser le test des comparaisons multiples est la fonction
B TukeyHSD. Mais attention, elle s’applique uniquement sur un modèle qui a été créé avec la
S
U
fonction aov.
418 10 • Analyse de la variance à un facteur

Retour à l’exemple des forêts :


vous pouvez appliquer la procédure de Tukey-Kramer de comparaisons multiples puisque :
1. les trois conditions fondamentales de l’analyse de la variance sont remplies,
2. le facteur  Forêt  est à effets fixes,
3. le facteur  Forêt  possède plus de trois modalités,
4. le facteur  Forêt  a un effet significatif sur la  Hauteur  des arbres.
Vous tapez les lignes de commande suivantes :

> modele2<-aov(hauteur~foret,data=arbre)

Remarque : lorsque le modèle a été ajusté avec la fonction aov, la fonction


model.tables permet d’obtenir les valeurs de tous les coefficients du modèle.

model.tables(modele2)

Tables of effects
foret
foret
1 2 3
1.5633 -1.7967 0.2333

TukeyHSD(modele2)

Tukey multiple comparisons of means


95% family-wise confidence level
Fit: aov(formula = hauteur ~ foret, data = arbre)
$foret
diff lwr upr p adj
2-1 -3.36 -4.4109317 -2.3090683 0.0000000
3-1 -1.33 -2.3809317 -0.2790683 0.0110330
3-2 2.03 0.9790683 3.0809317 0.0001544

Et pour obtenir un graphique, vous tapez la ligne de commande suivante :

> plot(TukeyHSD(modele2))
10.6 Puissance des tests de l’analyse de la variance à un facteur 419

Figure 10.4

10.6 PUISSANCE DES TESTS DE L’ANALYSE DE LA VARIANCE


À UN FACTEUR
10.6.1 Introduction
© Dunod – La photocopie non autorisée est un délit.

La puissance d’un test est une fonction complexe des différents paramètres de ce test. Quelques
relations à retenir :
• Les erreurs de première espèce et de deuxième espèce sont antagonistes, c’est-à-dire
qu’elles évoluent en sens contraire. Si les autres paramètres du test sont fixés, plus vous
diminuez le risque de commettre une erreur de première espèce, plus vous augmentez
celui de commettre une erreur de deuxième espèce et réciproquement, plus vous diminuez
le risque de commettre une erreur de deuxième espèce, plus vous augmentez celui de
commettre une erreur de première espèce.
• Plus les effets du facteur sont marqués, plus la puissance est grande.
• Plus la dispersion de l’erreur est faible, plus la puissance est grande.
• Plus le nombre de répétitions effectuées pour une modalité du facteur est important, plus
la puissance est grande.
420 10 • Analyse de la variance à un facteur

Parmi tous les paramètres ci-dessous, le seuil du test a étant fixé, il n’est possible pour
vous que d’agir sur le nombre de répétitions effectuées pour une modalité du facteur. C’est
pourquoi vous avez un intérêt particulier à bien choisir ce paramètre lorsque vous planifiez votre
expérience si vous souhaitez garantir un niveau de puissance correct pour les tests que vous
réaliserez.

10.6.2 Puissance dans le cas d’un modèle à effets fixes


Rappel : Les ai sont liés à m1 , . . . ,m I et m par la relation ai = mi − m.

Vous vous intéressez à la puissance 1 − b, où b est le risque de commettre une erreur de


deuxième espèce, du test F d’analyse de la variance pour le test de l’hypothèse

H0 : a1 = a2 = · · · = a I = 0
contre
H1 : il existe i 0 ∈ {1, 2, . . . , I } tel que ai0 = 0.

Cette puissance 1 − b est donnée par la formule suivante :


! "
1 − b = P F  (I − 1; I (J − 1); l) > F(I − 1; I (J − 1); 1 − a) ,

où F(I − 1; I (J − 1); 1 − a) est le 100(1 − a) quantile de la loi de Fisher à I − 1 et I (J − 1)


degrés de liberté et F  (I − 1; I (J − 1); l) est la variable aléatoire qui suit une loi de Fisher
non-centrale à I − 1 et I (J − 1) degrés de liberté et de paramètre de non-centralité l. Ce
paramètre de non-centralité l vaut :

J  2
I
l= ai .
2s2
i=1

Pour une loi de Fisher non centrale à n1 et n2 degrés de liberté et de paramètre de non-centralité
l, le paramètre de non-centralité normalisé f est défini par :
(
2l
f = .
v1 + 1

Le paramètre de non-centralité normalisé vaut donc :




1J 
I
f = ai2 .
s I
i=1
10.6 Puissance des tests de l’analyse de la variance à un facteur 421

Si le nombre de répétitions n i effectué pour chaque modalité Ai du facteur A n’est pas


constant, c’est-à-dire si le plan expérimental n’est pas équilibré, le paramètre de non-centralité
l devient :

1 
I
l= n i ai2 .
2s2
i=1

Le paramètre de non-centralité normalisé f est alors :




1 1 
I
f = n i ai2 .
s I
i=1

Vous constatez que la puissance évolue bien comme indiqué au début de cette section lorsque,
pour tout i variant de 1 à I , l’un des ai , I , n i , s et a varient, les autres étant fixés.
La fonction qui permet de calculer des puissances avec R est la fonction power.anova.test.
B
S
U

10.6.3 Puissance a posteriori


Vous obtenez la puissance a posteriori du test de l’absence d’effet du facteur en remplaçant, dans
la formule appropriée ci-dessus, les valeurs des paramètres par les estimations que vous avez
obtenues en réalisant l’analyse de la variance. Généralement vous considérez qu’une puissance
de 0,8 est satisfaisante.

10.6.4 Détermination du nombre de répétitions


Une autre approche, à privilégier lorsque vous faites de la planification expérimentale, serait
© Dunod – La photocopie non autorisée est un délit.

de déterminer a priori le nombre de répétitions J nécessaires pour obtenir une valeur de la


puissance du test supérieure à un niveau fixé à l’avance. L’intérêt de cette démarche réside dans
le fait que vous ne savez pas a priori si le test que vous allez réaliser sera significatif ou non à
un seuil a fixé à l’avance. Le fait de ne pas rejeter H0 en ayant un risque élevé de commettre
une erreur de deuxième espèce rendrait cette décision très peu fiable et ne permettrait pas de
conclure avec une confiance suffisante à l’absence d’un effet sur la réponse du facteur étudié.
Généralement vous considérez qu’une puissance de 0,8 est satisfaisante ; dans certains cas vous
viserez même une puissance de 0,9.
Vous pouvez utiliser directement la formule ci-dessus pour déterminer le nombre de répétitions
nécessaires à l’obtention d’une valeur minimale de puissance. Il faut néanmoins avoir une idée

I
de la valeur minimale que peut prendre la somme n i ai2 et la valeur maximale que peut avoir
i=1
s2 . Ces valeurs doivent être déterminées par un expert du domaine considéré.
422 10 • Analyse de la variance à un facteur

EN RÉSUMÉ

Commande Description
options(contrasts= Permet d’imposer à R l’utilisation de la contrainte
c("contr.sum", a1 + a2 + · · · + a I = 0.
"contr.poly"))
lm(y~fact) Permet de construire le modèle linéaire associé à l’analyse de
la variance de la réponse y par le facteur fact.
anova(s) Permet d’obtenir le tableau de l’analyse de la variance de
l’objet s produit par la fonction lm.
coef(s) Permet d’obtenir les coefficients de l’objet s.
aov(y~fact) Construit un modèle d’analyse de la variance de la réponse y
par le facteur fact.
summary(s) Permet d’obtenir le tableau de l’analyse de la variance de
l’objet s produit par la fonction aov.
shapiro.test Permet de réaliser un test de normalité de Shapiro-Wilk.
bartlett.test Permet de réaliser un test de Bartlett d’égalité de variance.
levene.test Permet de réaliser un test de Levene d’égalité de variance.
granova.1w(y~fact) Permet de réaliser un graphique illustrant la procédure de
l’analyse de la variance de la réponse y par le facteur fact.
granovagg.1w(y~fact) Permet de réaliser un graphique illustrant la procédure de
l’analyse de la variance de la réponse y par le facteur fact.
TukeyHSD(s) Permet de réaliser un test de comparaisons multiples de Tukey
de l’objet s produit par la fonction aov.
plot(hsd) Permet de représenter graphiquement le résultat du test de
comparaisons multiples de Tukey stocké dans l’objet hsd
produit par la fonction TukeyHSD.
power.anova.test Calcule la puissance pour un modèle d’analyse de la variance
à un facteur à effets fixes.
kruskal.test Permet de réaliser le test non paramétrique de Kruskal-Wallis.

Pour utiliser la fonction granova.1w, il faut au préalable charger le package granova.


Exercices 423

EXERCICES

Exercice 10.1 Mangez des pommes !


Nous souhaitons comparer la teneur en vitamine C de six variétés de pommes notées V1 ; V2 ;
V3 ; V4 ; V5 et V6 . Pour chaque variété la teneur en vitamine C, exprimée en mg/(100 g), a été
mesurée dans cinq pommes prises au hasard. Nous obtenons les données suivantes regroupées
dans le tableau ci-dessous.

Variété 1 Variété 2 Variété 3 Variété 4 Variété 5 Variété 6

93,6 95,3 94,5 98,8 94,6 93,2


95,3 96,9 97,0 98,2 97,8 94,4
96,0 95,8 97,8 97,8 98,0 93,8
93,7 97,3 97,0 97,2 95,0 95,6
96,2 97,7 98,3 97,9 98,9 94,8

Qu’est-il possible de conclure ?


Pour répondre à cette question, vous allez procéder à une analyse de la variance à un facteur
à effets fixes.
1) Écrivez le modèle statistique de l’analyse de la variance à un facteur fixe pour ce problème.
© Dunod – La photocopie non autorisée est un délit.

2) Quelles sont les conditions qui doivent être vérifiées pour pouvoir appliquer la théorie du
modèle linéaire ? Sont-elles remplies ?
3) Donnez le tableau de l’analyse de la variance correspondant à cette étude.
4) Réalisez le test de Fisher au seuil de significativité de 5 %. Qu’en déduisez-vous ?
5) Donnez une estimation de la variance s2 .
6) Dans le cas de cette étude, pouvez-vous faire des comparaisons multiples ? Si oui, expliquez
pourquoi puis procédez alors aux comparaisons. Que pouvez-vous conclure ?

Exercice 10.2 Traitement contre l’urée


Cinq centres hospitaliers utilisent un traitement différent pour combattre le taux élevé d’urée
dans le sang chez les malades atteints de lésions rénales. Le caractère étudié, noté Y , est le taux
424 10 • Analyse de la variance à un facteur

d’urée (en décigrammes par litre de sang) après traitement. Dans chaque centre hospitalier, nous
l’avons mesuré chez sept patients.

Traitement 1 Traitement 2 Traitement 3 Traitement 4 Traitement 5

4,5 7,5 8,0 2,0 6,5


2,5 3,0 6,5 7,5 5,5
6,0 2,5 6,0 4,0 6,0
4,5 4,0 3,5 2,5 4,5
3,0 2,0 5,0 5,0 4,0
5,5 4,0 7,0 3,5 7,0
3,5 5,5 5,0 6,5 5,5

Qu’est-il possible de conclure ?


Pour répondre à cette question, vous allez procéder à une analyse de la variance à un facteur
à effets fixes.
1) Proposez un modèle statistique permettant d’étudier une relation entre le taux d’urée dans
le sang et le traitement. Précisez la nature de chacune des variables présentes dans le modèle
statistique proposé.
2) Les conditions d’utilisation du modèle linéaire sont-elles vérifiées ?
3) Donnez le tableau de l’analyse de la variance correspondant à cette étude.
4) Pouvez-vous conclure à une éventuelle significativité du traitement sur le taux d’urée dans le
sang ? Pour répondre à cette question, utilisez un test. Vous citerez le nom du test, les hypothèses
du test, la statistique du test et donnerez la conclusion du test au seuil de significativité de 5 %.
5) Donnez une estimation de la variance s2 .
6) Pouvez-vous séparer les traitements en groupes ne présentant pas de différence significative au
seuil de 5 % ? Si oui, expliquez comment vous procédez. Dans le cas de l’affirmatif, faites cette
répartition en groupes homogènes, en indiquant les traitements et les moyennes correspondantes
du taux d’urée dans le sang.
Du mal à démarrer 425

DU MAL À DÉMARRER

➩ Exercice 10.1 et 10.2


1) Relisez la page 401.
2) Relisez les pages 409, 411 et 411.
3) Relisez la page 408.
4) Relisez la page 408.
5) Relisez la page 406.
6) Relisez la page 417.

SOLUTION DES EXERCICES

Exercice 10.1
1) Le modèle statistique permettant d’étudier la relation entre le taux d’urée dans le sang et le
traitement s’écrit de la façon suivante :
© Dunod – La photocopie non autorisée est un délit.

Yi, j = m + ai + ´i, j ,

où les variables ´i, j sont indépendantes et suivent une loi normale centrée et de variance inconnue
s2 pour i variant de 1 à I et j variant de 1 à J .
Pour que le modèle ne comporte pas trop de paramètres, nous imposons aux ai la contrainte
suivante :
I
ai = 0.
i=1

Malheureusement, le langage R n’utilise pas cette contrainte par défaut. Pour le forcer à le faire
vous tapez l’instruction :

> options(contrasts=c(unordered="contr.sum", ordered="contr.poly"))


426 10 • Analyse de la variance à un facteur

2) Nous allons vérifier que les conditions d’utilisation du modèle linéaire sont remplies.
– Indépendance. Comme les variétés de pommes sont différentes et que nous avons mesuré
la teneur en vitamine C sur 5 pommes différentes récoltées sur 5 pommiers différents, les
erreurs sont bien indépendantes.
– Normalité. Nous allons réaliser le test de Shapiro Wilk sur les 30 résidus, en tapant les
lignes de commande suivantes :

> variete<-rep(1:6,c(5,5,5,5,5,5))
> vitamine<-c(93.6,95.3,96,93.7,96.2,95.3,96.9,95.8,97.3,97.7,94.5,97,97.8,97,
98.3,98.8,98.2,97.8,97.2,97.9,94.6,97.8,98,95,98.9,93.2,94.4,93.8,95.6,94.8)
> variete<-factor(variete)
> exo1<-data.frame(variete,vitamine)
> modele1<-aov(vitamine~variete,data=exo1)
> residus1<-residuals(modele1)
> shapiro.test(residus1)

Remarque : L’instruction gl(6,5) est plus simple et donne le même résultat que la
première instruction.

Nous obtenons :

Shapiro-Wilk normality test


data: residus1
W=0.9563,p-value = 0.2485

Comme la p-valeur est strictement supérieure à a = 5 %, le test n’est pas significatif au seuil
a = 5 %. Nous décidons de conserver l’hypothèse nulle H0 au seuil a = 5 %. Le risque d’erreur
associé à cette décision est un risque de deuxième espèce b. Nous ne pouvons pas l’évaluer dans
le cas présent mais il est considéré comme satisfaisant car l’effectif de l’échantillon, auquel le
test de Shapiro-Wilk est appliqué, vaut 30 et donc dépasse 30. En effet :

> length(residus1)

[1] 30

Nous décidons donc que l’hypothèse de normalité des erreurs est satisfaite.
– Homogénéité. Nous allons réaliser le test de Bartlett sur les 30 résidus en tapant la ligne de
commande suivante :

> bartlett.test(residus1~variete,data=exo1)
Solution des exercices 427

Bartlett test of homogeneity of variances


data: residus1 by variete
Bartlett’s K-squared=5.6023, df=5, p-value=0.3469

La p-valeur étant strictement supérieure à a = 5 %, le test n’est pas significatif au seuil


a = 5 %. Nous décidons de conserver l’hypothèse nulle H0 au seuil a = 5 %. Le risque
d’erreur associé à cette décision est un risque de deuxième espèce b qu’il faudrait évaluer.
Malheureusement ce calcul est trop complexe. Nous décidons donc que l’hypothèse d’égalité
des variances des erreurs est satisfaite.
3) Pour obtenir le tableau de l’analyse de la variance, vous pouvez taper les lignes de commande
suivantes :

> modele1

Call:
aov(formula=vitamine~variete,data=exo1)
Terms:
variete Residuals
Sum of Squares 45.836 38.512
Deg. of Freedom 5 24
Residual standard error: 1.266754
Estimated effects may be unbalanced

> summary(modele1)
© Dunod – La photocopie non autorisée est un délit.

Df Sum Sq Mean Sq F value Pr(>F)


variete 5 45.84 9.167 5.713 0.00131 **
Residuals 24 38.51 1.605
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Sources Sommes des Degrés de Carrés moyens Fobs Pr(>F)


de Variation carrés liberté
Due au facteur 45,836 5 9,1672 5,7128 0,00131
Résiduelle 38,512 24 1,6047
Totale 84,348 29
428 10 • Analyse de la variance à un facteur

4) Pour répondre à l’éventuelle significativité, nous allons utiliser le test de Fisher qui a été
construit à la question précédente. Les hypothèses de ce test sont les suivantes :

H0 : les espérances mi sont toutes égales


contre
H1 : les espérances mi ne sont pas toutes égales.

La statistique du test de Fisher est égale à 5,7128.


Comme la p-valeur est inférieure à a = 5 %, le test est significatif. Nous décidons de rejeter
l’hypothèse nulle H0 et par conséquent d’accepter l’hypothèse alternative H1 . Nous commettons
un risque d’erreur de première espèce a égal à 5 %. Il y a donc un effet de la variété de la
pomme sur la teneur en vitamine C au risque a = 5 %.
La procédure d’analyse de la variance peut être illustrée avec le graphique de la figure 10.5
créé par l’instruction suivante :

> granovagg.1w(vitamine,group=variete)

By-group summary statistics for your input data (ordered by group means)
group group.mean trimmed.mean contrast variance
6 6 94.36 94.33 -1.92 0.85
1 1 94.96 95.00 -1.32 1.54
2 2 96.60 96.67 0.32 1.03
5 5 96.86 96.93 0.58 3.73
3 3 96.92 97.27 0.64 2.14
4 4 97.98 97.97 1.70 0.34
standard.deviation group.size
6 0.92 5
1 1.24 5
2 1.01 5
5 1.93 5
3 1.46 5
4 0.58 5
The following groups are likely to be overplotted
group group.mean contrast
5 5 96.86 0.58
3 3 96.92 0.64
Below is a linear model summary of your input data
Call:
lm(formula = score ~ group, data = owp$data)
Solution des exercices 429

Residuals:
Min 1Q Median 3Q Max
-2.420 -0.795 0.150 0.925 2.040
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 96.2800 0.2313 416.298 < 2e-16 ***
group1 -1.3200 0.5172 -2.552 0.01748 *
group2 0.3200 0.5172 0.619 0.54189
group3 0.6400 0.5172 1.238 0.22785
group4 1.7000 0.5172 3.287 0.00311 **
group5 0.5800 0.5172 1.122 0.27316
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.267 on 24 degrees of freedom
Multiple R-squared: 0.5434,Adjusted R-squared: 0.4483
F-statistic: 5.713 on 5 and 24 DF, p-value: 0.001311

One−way ANOVA displaying 6 groups


5

5
5

5
6

2
5
3

99 ●



98 ●

●● ●



Dependent variable (response)

●● Group Means
97 ●
97
97 MS−between

● MS−within


© Dunod – La photocopie non autorisée est un délit.



● ●
● Grand Mean
95 ●
● ● Group Mean Line


94 ●



93 ●

F = 5.71
−1.9

−1.3

0.32
0.58
0.64

1.7
0

Contrast coefficients based on group means

Figure 10.5
430 10 • Analyse de la variance à un facteur

Sur le graphique, nous constatons que la variabilité de moyennes de chaque groupe (représen-
tées par des triangles) semble plus importante que la dispersion des mesures au sein de chacun
des groupes (représentées par des points). Le carré situé en bas à droite permet de comparer plus
précisément ces variations. En effet, son aire correspond à la variation totale des mesures et la
zone plus claire à l’intérieur de ce carré est la proportion de la variation totale qui provient de la
variation résiduelle tandis que la zone plus foncée à l’intérieur du carré est celle provenant de la
variation due au facteur. La couleur du carré est rouge, ce qui indique que le test de Fisher est
significatif au seuil de 5 %.
5) Donnons une estimation de la variance s2 . Pour cela, nous lisons le carré moyen résiduel
dans le tableau de l’analyse de la variance. Elle vaut 1,6047.
6) Dans le cas de cette étude, nous pouvons faire des comparaisons multiples. En effet, le test de
Fisher étant significatif, nous pouvons procéder à ces comparaisons multiples. Pour cela, nous
tapons la ligne de commande suivante :

> Tukey1 <- TukeyHSD(modele1, conf.level = 0.95)


> Tukey1

Notez que l’option conf.level vaut par défaut 0,95 et qu’il n’est donc pas nécessaire de la
faire apparaître puisque vous travaillez au seuil de 5 %. Nous obtenons :

Tukey multiple comparisons of means


95% family-wise confidence level
Fit: aov(formula = ~ variete, data = exo1)
$variete diff lwr upr p adj
2-1 1.64 -0.8371495 4.11714947 0.3468489
3-1 1.96 -0.5171495 4.43714947 0.1803668
4-1 3.02 0.5428505 5.49714947 0.0107386
5-1 1.90 -0.5771495 4.37714947 0.2058535
6-1 -0.60 -3.0771495 1.87714947 0.9733815
3-2 0.32 -2.1571495 2.79714947 0.9985151
4-2 1.38 -1.0971495 3.85714947 0.5310572
5-2 0.26 -2.2171495 2.73714947 0.9994551
6-2 -2.24 -4.7171495 0.23714947 0.0926651
4-3 1.06 -1.4171495 3.53714947 0.7697394
5-3 -0.06 -2.5371495 2.41714947 0.9999996
6-3 -2.56 -5.0371495 -0.08285053 0.0399329
5-4 -1.12 -3.5971495 1.35714947 0.7278111
6-4 -3.62 -6.0971495 -1.14285053 0.0017510
6-5 -2.50 -4.9771495 -0.02285053 0.0470143

Les p-valeurs inférieures à 5 % sont entre la variété 1 et la variété 4, entre la variété 3 et la


variété 6, entre la variété 4 et la variété 6 et entre la variété 5 et la variété 6.
Solution des exercices 431

La fonction cld de la bibliothèque multcomp associée à la fonction glht de la bibliothèque


glht permet de créer automatiquement des groupes de moyennes homogènes au seuil de 5 %
de la manière suivante :

> wht = glht(modele1, linfct = mcp(variete = "Tukey"))


> cld(wht)

1 2 3 4 5 6
"ab" "ac" "bc" "c" "bc" "a"

Ainsi les moyennes des groupes 2, 6 et 1 sont dans un groupe homogène car elles ont toutes
en commun la lettre « a ».
Il existe un graphique qui permet de faciliter la lecture des résultats de la procédure. Vous
l’obtenez en tapant l’instruction suivante :

> plot(Tukey1)

Les différences entre les moyennes sont significatives au seuil de 5 % lorsque l’intervalle
associé ne contient pas 0.
95% family-wise confidence level
2-1
4-1
6-1
© Dunod – La photocopie non autorisée est un délit.

4-2
6-2
5-3
5-4
6-5

-6 -4 -2 0 2 4

Differences in mean levels of variete

Figure 10.6
432 10 • Analyse de la variance à un facteur

Remarque : la bibliothèque ggplot2 permet d’obtenir une représentation analogue et de


ces comparaisons multiples.

> CI <- confint(wht)


> fortify(CI)
> ggplot(CI,aes(lhs,estimate,ymin=lwr,ymax=upr))+geom_pointrange()+
+ geom_hline(yintercept = 0)

Figure 10.7

Voici un graphique avec une indication de la p-valeur.

> ggplot(aes(lhs,estimate),data=fortify(summary(wht)))+
+ geom_linerange(aes(ymin=lwr,ymax=upr),data=CI)+
+ geom_text(aes(y=estimate+1,label=round(p,3)))+
+ geom_hline(yintercept = 0)+
+ geom_point(aes(size=p),data=summary(wht))+scale_size(trans="reverse")
Solution des exercices 433

Figure 10.8

Pour finir, voici le graphique des boîtes à moustaches des valeurs de chacun des groupes avec
© Dunod – La photocopie non autorisée est un délit.

une indication des groupes homogènes formés par les moyennes au moyen de lettres. Vous devez
installer la bibliothèque multcompView dont vous allez utiliser la fonction multcompLetters.

> generate_label_df <- function(HSD,flev){


+ Tukey.levels <- HSD[[flev]][,4]
+ Tukey.labels <- multcompLetters(Tukey.levels)[’Letters’]
+ plot.labels <- names(Tukey.labels[[’Letters’]])
+ boxplot.df <- ddply(exo1,flev, function (x) max(fivenum(x$vitamine))+0.2)
+ plot.levels <- data.frame(plot.labels,labels=Tukey.labels[[’Letters’]],
+ stringsAsFactors = FALSE)
+ labels.df <- merge(plot.levels,boxplot.df,by.x=’plot.labels’,by.y=flev,
+ sort = FALSE)
+ return(labels.df)
+ }
434 10 • Analyse de la variance à un facteur

> p_base <- ggplot(exo1,aes(x=variete,y=vitamine))+geom_boxplot()+


+ geom_text(data=generate_label_df(Tukey1,’variete’), aes(x=plot.labels,
+ y=V1,label=labels))
> p_base

Vous obtenez le graphique suivant :


Vitamine

Variété

Figure 10.9

Exercice 10.2
1) Le modèle statistique que nous proposons est le modèle de l’analyse de la variance à un
facteur à effets fixes. Le taux de l’urée est la variable à expliquer ou encore la réponse, et le
traitement est le facteur explicatif.
Solution des exercices 435

2) Nous allons vérifier les conditions d’utilisation du modèle linéaire.


– Indépendance. Comme les centres hospitaliers sont différents et que nous avons mesuré
l’urée chez 7 patients différents dont nous supposons qu’ils n’ont pas de lien de parenté,
les variables d’erreur sont bien indépendantes.
– Normalité. Nous allons réaliser le test de Shapiro Wilk sur ces 35 données, en tapant ces
lignes de commande suivantes :

> traitement<-rep(1:5,c(7,7,7,7,7))
> taux<-c(4.5,2.5,6,4.5,3,5.5,3.5,7.5,3,2.5,4,2,4,5.5,8,6.5,6,3.5,5,
7,5,2,7.5,4,2.5,5,3.5,6.5,6.5,5.5,6,4.5,4,7,5.5)
> traitement<-factor(traitement)
> exo2<-data.frame(traitement,taux)
> modele2<-aov(taux~traitement,data=exo2)
> residus2<-residuals(modele2)
> shapiro.test(residus2)

Nous obtenons :

Shapiro-Wilk normality test


data: residus
W = 0.9744, p-value = 0.5734

Comme la p-valeur est strictement supérieure à a = 5 %, le test n’est pas significatif au seuil
a = 5 %. Nous décidons de conserver l’hypothèse nulle H0 au seuil a = 5 %. Le risque d’erreur
associé à cette décision est un risque de deuxième espèce. Nous ne pouvons pas l’évaluer dans
le cas présent mais il est considéré comme satisfaisant car l’effectif de l’échantillon, auquel le
test de Shapiro-Wilk est appliqué, vaut 35 et donc dépasse 30. En effet :
© Dunod – La photocopie non autorisée est un délit.

> length(residus2)

[1] 35

Homogénéité. Nous allons réaliser le test de Bartlett sur ces 35 données en tapant la ligne de
commande suivante :

> bartlett.test(residus2~traitement,data=exo2)

Bartlett test of homogeneity of variances


data: residus2 by traitement
Bartlett’s K-squared = 3.1361, df = 4, p-value = 0.5353
436 10 • Analyse de la variance à un facteur

La p-valeur étant strictement supérieure à a = 5 %, le test n’est pas significatif au seuil


a = 5 %. Nous décidons de conserver l’hypothèse nulle H0 au seuil a = 5 %. Le risque
d’erreur associé à cette décision est un risque de deuxième espèce b qu’il faudrait évaluer.
Malheureusement ce calcul est trop complexe. Nous décidons donc que l’hypothèse d’égalité
des variances des variables d’erreur est satisfaite.
3) Pour obtenir le tableau de l’analyse de la variance, vous pouvez taper les lignes de commande
suivantes :

> modele1<-lm(taux~traitement,data=exo2)
> anova(modele1)

Analysis of Variance Table


Response:
taux Df Sum Sq Mean Sq F value Pr(>F)
traitement 4 19.043 4.7607 1.8687 0.1419
Residuals 30 76.429 2.5476

Sources de Sommes des Degrés de Carrés Fobs Pr(> F)


Variation carrés liberté moyens
Due au facteur 19,043 4 4,7607 1,8687 0,1419
Résiduelle 76,429 30 2,5476
Totale 95,472 34

4) Pour répondre à l’éventuelle significativité, nous allons utiliser le test de Fisher qui a été
construit à la question précédente. Les hypothèses de ce test sont les suivantes :

H0 : les espérances mi sont toutes égales


contre
H1 : les espérances mi ne sont pas toutes égales.

La statistique du test de Fisher est égale à 1,8687.


Comme la p-valeur est supérieure à a = 5 %, le test n’est pas significatif. Nous décidons de
ne pas rejeter l’hypothèse nulle H0 et par conséquent de l’accepter. Nous commettons un risque
d’erreur de deuxième espèce b que nous pouvons évaluer dans ce cas présent en tapant la ligne
de commande suivante :

> power.anova.test(5,7,19.043,76.42857)
Solution des exercices 437

Balanced one-way analysis of variance power calculation


groups = 5
n = 7
between.var = 19.043
within.var = 76.42857
sig.level = 0.05
power = 0.4684833
NOTE: n is number in each group

Comme la puissance (1 − b) est égale à 0,4684833, l’erreur de deuxième espèce b est égale
à 0,5315167. Cette erreur est relativement importante.
Si nous voulions une puissance égale à 0,80 il faudrait prendre au moins 13 patients par
groupe.
Ce résultat a été trouvé en tapant la ligne de commande suivante :

>power.anova.test(groups=5,between.var=19.043,within.var=76.42857,power=.80)

Balanced one-way analysis of variance power calculation


groups = 5
n = 12.96035
between.var = 19.043
within.var = 76.42857
sig.level = 0.05
power = 0.8
NOTE: n is number in each group
© Dunod – La photocopie non autorisée est un délit.

La procédure d’analyse de la variance peut être illustrée avec le graphique de la figure 10.10
créé par l’instruction suivante :

> granovagg.1w(taux,group=traitement)

By-group summary statistics for your input data (ordered by group means)
group group.mean trimmed.mean contrast variance
2 2 4.07 3.8 -0.76 3.62
1 1 4.21 4.2 -0.61 1.65
4 4 4.43 4.3 -0.40 4.12
5 5 5.57 5.6 0.74 1.12
3 3 5.86 5.9 1.03 2.23
438 10 • Analyse de la variance à un facteur

standard.deviation group.size
2 1.90 7
1 1.29 7
4 2.03 7
5 1.06 7
3 1.49 7
Below is a linear model summary of your input data
Call:
lm(formula = score ~ group, data = owp$data)
Residuals:
Min 1Q Median 3Q Max
-2.4286 -1.0714 -0.0714 1.0357 3.4286
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.8286 0.2698 17.897 <2e-16 ***
group1 -0.6143 0.5396 -1.138 0.2639
group2 -0.7571 0.5396 -1.403 0.1708
group3 1.0286 0.5396 1.906 0.0662 .
group4 -0.4000 0.5396 -0.741 0.4643
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.596 on 30 degrees of freedom
Multiple R-squared: 0.1995,Adjusted R-squared: 0.09272
F-statistic: 1.869 on 4 and 30 DF, p-value: 0.1419

Sur le graphique nous constatons que la variabilité de moyennes de chaque groupe (représen-
tées par des triangles) est faible par rapport à la dispersion des mesures au sein de chacun des
groupes (représentées par des points).
Le carré situé en bas à droite permet de comparer plus précisément ces variations. En effet,
son aire correspond à la variation totale des mesures et la zone plus claire à l’intérieur de ce carré
est la proportion de la variation totale qui provient de la variation résiduelle tandis que la zone
plus foncée à l’intérieur du carré est celle provenant de la variation due au facteur. La couleur
du carré est bleue, ce qui indique que le test de Fisher n’est pas significatif au seuil a = 5 %.

Remarque : la valeur critique du test est de qf(0.95,4,30) = 2,689628 > Fobs =


1, 8687. La décision à l’aide de la valeur critique est donc également de conserver l’hypo-
thèse nulle H0 .
Solution des exercices 439

One−way ANOVA displaying 5 groups

7
2

3
8 ●

● ●

● ●

● ● ●
Dependent variable (response)

● ● ● Group Means
5.9
MS−between
5.6 ● ● ●●
MS−within
● ●●

●● ●
4.4
4.2
4.1 ●● ● ● ● Grand Mean

● Group Mean Line


● ● ●

● ●

● ● ●

2 ● ●

F = 1.87
−0.76

−0.61

−0.4

0.74
0

Contrast coefficients based on group means

Figure 10.10
© Dunod – La photocopie non autorisée est un délit.

5) Donnons une estimation de la variance s2 . Pour cela, nous lisons le carré moyen résiduel
dans le tableau de l’analyse de la variance. Elle vaut 2,5476.
6) Nous ne pouvons pas séparer les traitements puisque le test de Fisher qui a été réalisé à la
question 4) nous a indiqué que les moyennes mi sont toutes égales.
Index

A carré moyen
dû au facteur 406
abaques 296
résiduel 406
ajustement linéaire 364
centre de masse 366
analyse de la variance 399, 404
classe 103
approximation
modale 141
de la loi binomiale
coefficient
par la loi de Poisson 204
d’aplatissement
par la loi normale 204
de Fisher 154
de la loi hypergéométrique par la loi binomiale
204 de Pearson 154
argument 36, 50 d’association 235
asymptotiquement sans biais voir estimateur d’association de Pearson 235
asymptotiquement sans biais d’asymétrie
de Fisher 153
de Pearson 153
B de Bravais-Pearson 233
biais de l’estimateur 259 de corrélation linéaire observé 233
boîte de corrélation linéaire théorique 233
à moustaches 135 de variation 152
de distribution 136 composantes 23
boxplot 136 coordonnées 23
correction de continuité 205
de Yates 276, 309, 343
C couple
caractère 93 covariance 232
multiple 94 distribution
qualitatif 94 des effectifs 223
quantitatif 93 des fréquences 223
continu 94 distribution conjointe 223
discontinu 94 effectif 223
discret 94 fréquence 223
simple 94 tableau de contingence 223
Index 441

courbes de puissance 296 de la valeur xi 100


covariance 232 marginal 227
effectifs
cumulés
D
polygone des, 116
densité de la loi de probabilité 190 diagramme en bâtons des, 115
densité de probabilité 190 distributions marginales 227
diagramme observés 342, 345
circulaire 116 polygone des, 115, 130
 en camembert  116 théoriques 342, 345
tige-feuilles 139 effets 409
distribution éléments 23
empirique 101 erreur
observée 101 de deuxième espèce 293
distribution statistique de première espèce 293
continue 101 estimateur 258
discrète 101 écart quadratique moyen 259
groupée 104 asymptotiquement sans biais 259
non groupée 101 biais de l’, 259
donnée manquante 39 choix d’un, 259
données 51 convergent 259
droite de régression 365 d’une proportion 262
de l’espérance 260
de la variance 260
E
non biaisé 259
écart quadratique moyen voir estimateur écart qualité d’un, 259
quadratique moyen relativement plus efficace 259
écart-type 149 sans biais 259
corrigé 150 sans biais optimal 259
empirique 150 estimation
© Dunod – La photocopie non autorisée est un délit.

écarts réduits 344 ensembliste 263


échantillon 92 par intervalle de confiance 263
aléatoire 256, 258 ponctuelle 258
exhaustif 256 étendue 147
n- 258 étendue interquartile 147
non aléatoire 256 expérience équilibrée 401
probabiliste 256
échantillonnage
exhaustif 92
F
non-exhaustif 92 facteur 24, 401
effectif à effets fixes 401
cumulé en ai 103 fluctuations d’échantillonnage 256
cumulé en xi 100 fonction 48
de ]ai ; ai+1 ] 103 fonction de répartition 189, 190
de la sous-population 229 fonction de survie 203
442 Index

formule de Huygens 148 espérance inconnue 271


formules 50 pour l’ordonnée à l’origine b0 371
fréquence pour la pente b1 370
conditionnelle 229 pour le paramètre l de la loi de Poisson 277
cumulée en ai 103
cumulée en xi 100
L
de ]ai ; ai+1 ] 103
de la valeur xi 100 liste 24
distribution conditionnelle 229 loi
marginale 227 binomiale 192
fréquences de Bernoulli 190
cumulées de Fisher-Snedecor 201
polygone des, 116, 130 de Pascal 194
diagramme en bâtons des, 115 de Pearson 198
distributions marginales 227 de Poisson 195
polygone des, 115, 130 de Student 199
du Khi-deux 198
exponentielle 203
H
géométrique 194
histogramme 130 hypergéométrique 193
de Tukey 139 normale 197
homogénéité des variances 403 normale centrée et réduite 196
homoscédasticité 403 uniforme discrète 191
hypothèse loi de la variable aléatoire 189
alternative 292
nulle 292
M
matrice 23, 40
I
médiane 143
individus 92 médiane des écarts absolus à la médiane 150
intervalle de confiance méthode des moindres carrés ordinaires 364
d’une proportion 273 miroirs 3
méthode asymptotique 273, 276 modalité 94
méthode de Clopper-Pearson 273 mode 141
méthode de l’ellipse 273 moment centré d’ordre r 153
méthode de Wald 273, 276 moyenne arithmétique 145
méthode de Wilson 273, 275 moyenne conditionnelle 230
méthode du score 273, 275 moyennes marginales 228
méthode exacte 273
de l’espérance
N
variance connue 264
variance inconnue 264 n-échantillon 258
de la variance niveau de significativité 293
espérance connue 270 nominal 94
Index 443

O règle
de Freedman-Diaconis 104
objet 23, 26
de Scott 104
classe 27
de Sturges 104
mode 27
régression linéaire 364
nom des colonnes 27
coefficient directeur 365
taille 27
ordonnée à l’origine 365
opérateur d’affectation 24
pente 365
option 50
régression linéaire simple 368
ordinal 94
relativement plus efficace voir estimateur
relativement plus efficace
P réponse 401
résidu de l’ajustement 367
plurimodale 141 résidus 409
population 92 risque d’erreur
prédicteur 366 de deuxième espèce 293
puissance de première espèce 293
a posteriori 421 robustesse d’unité 296
analyse de la variance 420
d’un test statistique 293
S
somme des carrés
Q
des résidus 367
QQPlot voir Quantile to Quantile Plot due à la régression 366
quantile d’ordre a 144 totale 366
Quantile to Quantile Plot 325 statistique 92
quartile d’ordre 143
premier 144 de l’échantillon 258
troisième 144 de test 294
© Dunod – La photocopie non autorisée est un délit.

statistiques 92
stéréogramme 231, 248
R
R1
aide du logiciel 10
T
bibliothèque 7 tableau
installer le logiciel 5 de contingence 223, 319
package 7 de données 24, 52
script 13 de données brutes 223
rapport de corrélation empirique 234 de l’analyse de la variance 368, 408
rapport de corrélation théorique 234 de l’effectif de chaque valeur 101
région des effectifs cumulés 101
critique 294 des fréquences 102
d’acceptation 294 des fréquences cumulées 102
444 Index

test valeur
bilatéral 294 aberrante 136
d’adéquation d’une loi à une loi donnée 344 ajustée 367
d’hypothèse 292 prédite 366
de comparaison avec une norme 297 prévue 367
de Fisher-Freeman-Halton 347 variable
de Freeman-Halton 347 à expliquer 366
de Mac-Nemar 348 aléatoire
de Shapiro-Wilk 265, 271 continue 190
des rangs signés de Wilcoxon 302 discrète 189
des signes 302 contrôlée 401
du x2 d’indépendance 341 de décision 294
exact de Fisher 318, 345 explicative 366
le plus puissant 296 expliquée 366
robustesse d’un, 296 variables aléatoires indépendantes 232
statistique 292 variables d’erreur 369, 403
unilatéral 294 variance
test de comparaison conditionnelle 230
de deux proportions sur deux populations corrigée 148
échantillons appariés 349 de l’échantillon 149
échantillons indépendants 346 de la population 149
de p proportions sur q populations
empirique 148
échantillons appariés 349
estimée 149
échantillons indépendants 348
inter-modalités 234
test de Student
intra-modalités 234
comparaison avec une norme 301
marginale 229
comparaison de deux populations 311
résiduelle 369
test de Bartlett 411
variation
test de Kruskal-Wallis 412
due au facteur 406
test de Tukey 416
expliquée par la régression 366
test de Tukey-Kramer 416
inexpliquée par la régression 367
test de Welch 312
résiduelle 367, 406
test de White 370
théorème de Fisher 264 totale 366, 406
vecteur 23, 28
concaténer 32
U recyclage 35
unimodale 141
unités statistiques 92
Z
zone
V d’acceptation 294
v.a.r. voir variable aléatoire réelle de rejet 294
78282 - (I) - OSB 80° - VIO - NRI
Dépôt légal : septembre 2018
Achevé d’impression par Dupli-Print
www.dupli-print.fr
Imprimé en France

Vous aimerez peut-être aussi