Vous êtes sur la page 1sur 76

TP de Statistiques: Utilisation du logiciel R

Anne 2006-2007
2
Table des matires
Introduction i
1 Premiers pas avec R 1
1.1 R est une calculatrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 R est une calculatrice scientique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 R est un langage de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3.1 Cration de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3.2 Notion dobjet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 R est un langage pour les statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1 Fonctions statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.2 Importation de donnes dans R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.3 Reprsentations graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Distributions et tests classiques 9
2.1 Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Distribution normale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.2 Autres distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Quelques tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Comparaison de moyennes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.2 Comparaison de 2 variances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.3 Test de normalit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.4 Comparaison de frquences (=proportions) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.5
2
sur table de contingence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.6 Comparaison de distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 Corrlation, rgression simple et analyse de variance un facteur 17
3.1 Analyse de corrlation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Rgression linaire simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.1 Les objets lm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.2 Travail sur les modles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 Analyse de variance (ANOVA) un facteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.1 1 facteur, 2 modalits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.2 1 facteur, plusieurs modalits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.3 LANOVA non-paramtrique : le test de Kruskal-Wallis . . . . . . . . . . . . . . . . . . . . . . . 24
3.4 Rgression non-linaire simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4 Le modle linaire 29
4.1 Spcier un modle dans R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2 tude de variables quantitatives : La rgression linaire multiple . . . . . . . . . . . . . . . . . . . . . . . 30
4.3 tude de variables qualitatives : Lanalyse de variance plusieurs facteurs . . . . . . . . . . . . . . . . . 30
4.3.1 Effectifs non-balancs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3.2 ANOVA hirarchise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.3.3 Effet xe/alatoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.4 Variables quantitatives et qualitatives : lanalyse de covariance. . . . . . . . . . . . . . . . . . . . . . . . 35
3
4 TABLE DES MATIRES
4.5 Selection de modles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.6 Non orthogonalit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.6.1 Modle I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.6.2 Modle II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.7 Autres modles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.7.1 Modle linaire gnralis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.7.2 Maximum de vraisemblance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
A Quelques fonctions graphiques 43
A.1 Modier les paramtres graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
A.2 Graphes composs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
A.3 Fonctions de dessin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
A.4 Le paquetage lattice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
A.5 Sauvegarder un graphe dans un chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
B Que faire quand lhypothse de normalit nest pas vrie ? 47
B.1 Cas des tests simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
B.2 Cas du modle linaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
B.2.1 Solution n
o
1 : tests non-paramtriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
B.2.2 Solution n
o
2 : normaliser les donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
B.2.3 Solution n
o
3 : utilisation dun modle linaire gnralis (GLM) . . . . . . . . . . . . . . . . . . 49
C Programmer avec R : la drive gntique 51
C.1 Le sujet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
C.2 volution de la population aprs plusieurs gnrations . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
C.3 Suivi en temps rel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
C.4 volution moyenne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
C.5 Inuence de la taille de la population . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
D Reprsentation 3D et introduction RGL : randonne dans la valle de lUbaye. 55
D.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
D.2 Calcul du prole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
D.3 Reprsentation 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
D.4 Utilisation de RGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
D.4.1 Trac du trajet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
E Mmento 59
E.1 Systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
E.2 Manipulation de vecteurs/facteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
E.3 Statistiques descriptives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
E.4 Graphiques (paquettages graphics et lattice) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
E.5 Dessin : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
E.6 Tests statistiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
E.7 Formules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
E.8 Modles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
E.9 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
E.10 Jeux de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
E.11 Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
E.12 Programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
E.13 Quelques paquetages utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Introduction
La libert, cest lobissance la loi que lon sait prescrite.
Jean-Jacques Rousseau.
Prsentation
R est un logiciel libre bas sur le logiciel commercial S (Bell Laboratories), avec qui il est dans une large mesure
compatible (http ://www.r-project.org). R est un environnement ddi aux statistiques et lanalyse de donnes. Le terme
environnement signie que lensemble des programmes disponibles forme un tout cohrent, modulable et extensible au
lieu dtre une simple association de programmes accomplissant chacun une tche spcique. R est ainsi la fois un
logiciel et un langage de programmation, permettant de combiner les outils fournis dans des analyses pousses, voire de
les utiliser pour en construire de nouveaux. Un autre avantage est quil est trs facile de se constituer sa propre bote
outils que lon utilisera sur plusieurs jeux de donnes, et ce sans avoir rinventer la roue chaque fois. R est disponible
pour beaucoup de plates-formes, dont Unix/Linux, Mac-OS et Windows(95 et +). Pour un tutoriel simple, se rfrer
celui dmmanuel Paradis : R pour les dbutants (http ://cran.r-project.org/doc/contrib/rdebuts_fr.pdf).
Dmarrage
R fonctionne en mode console, cest dire quon interagit avec lui en tapant des commandes. Les rsultats de ces
commandes peuvent safcher directement dans la console, ou bien dans des fentres (pour les graphiques par exemple,
voir gure 1). Sous Windows, on dispose dune interface graphique, avec une fentre console qui est lquivalent de celle
de Linux, mais plusieurs fonctionnalits sont accessibles directement via les menus (dont laide !). Par la suite, on se
focalisera sur la version Linux en donnant les noms de toutes les commandes utilises, sachant que sous Windows il y a
parfois plus simple...
Quelques rgles simples pour travailler sous Linux
Un des avantages de Linux, cest quil est possible de faire chaque chose de plusieurs manires diffrentes. Cette
diversit peut cependant devenir trs vite pnible (pour vos chers enseignants). Voici donc quelques rgles an de travailler
efcacement. Vous tes en droit de ne pas les utiliser. Cela impliquera toutefois que vous sachiez ce que vous faites, et
vous en serez tenu comme responsable !
Nous travaillerons en mode console. Une console (on dit aussi un terminal), est une application qui possde une simple
fentre o lon peut taper du texte. Au dmarrage cette fentre est vide et possde seulement une invite (= un prompt) qui
ressemble ceci :
[user1@babasse user1]$
Entre crochets, on trouve tout dabord le nom de lutilisateur connect et celui de lordinateur, puis le rpertoire courant.
Le prompt est ici le dollar. Par dfaut, le rpertoire courant est au dbut celui de lutilisateur qui a lanc la console. On
peut ensuite y taper des lignes de commandes, qui seront excutes aprs avoir appuy sur Entre . Le terme ligne de
commande ne doit pas effrayer, il sagit souvent du simple nom dun programme. Pour ouvrir une console, voir gure 2.
Nous allons crer un rpertoire de travail, nomm stats . La commande a utiliser sappelle mkdir (= make
directory = cre un rpertoire), et on procde comme suit :
mkdir stats
On va ensuite se dplacer dans ce rpertoire en utilisant la commande cd (= change directory) :
i
ii INTRODUCTION
FIG. 1 Quelques fentres sous R : 1) Dmarrage de R, 2 et 3) fentres graphiques.
cd stats
Le rpertoire courant est maintenant stats . On va ensuite crer un sous-rpertoire nomm data , qui contiendra des
jeux de donnes :
mkdir data
Le rpertoire data a t cr dans stats , puisque cest maintenant le rpertoire courant. On peut lister le contenu
dun rpertoire en tapant la commande ls
1
:
[jdutheil@Deedlit jdutheil]$ mkdir stats
1
Le prompt gur ici([jdutheil@Deedlit jdutheil]$) correspond celui de lordinateur sous lequel ce document a t crit, le votre est
diffrent et correspond votre ordinateur !
iii
FIG. 2 Pour lancer un terminal, cliquer sur le bureau avec le boutons droit de la souris. Un menu contextuel apparat,
cliquer sur konsole pour lancer la console de KDE.
[jdutheil@Deedlit jdutheil]$ cd stats/
[jdutheil@Deedlit stats]$ mkdir data
[jdutheil@Deedlit stats]$ ls
data/
[jdutheil@Deedlit stats]$
Le rpertoire stats contient pour linstant un seul sous-rpertoire data . Nous allons en crer un deuxime nomm
scripts , qui sera utile pour sauvegarder votre travail :
mkdir scripts
Dmarrer et arrter R
Fermer toutes les consoles ouvertes. Lancer un nouvelle console. Se dplacer dans le rpertoire de travail stats :
cd stats
Lancer R en tapant la commande R. Quelque chose comme ceci doit apparatre :
[jdutheil@Deedlit jdutheil]$ R
R : Copyright 2006, The R Foundation for Statistical Computing
Version 2.3.1 (2006-06-01)
ISBN 3-900051-07-0
R est un logiciel libre livr sans AUCUNE GARANTIE.
Vous pouvez le redistribuer sous certaines conditions.
Tapez license() ou licence() pour plus de dtails.
iv INTRODUCTION
R est un projet collaboratif avec de nombreux contributeurs.
Tapez contributors() pour plus dinformation et
citation() pour la faon de le citer dans les publications.
Tapez demo() pour des dmonstrations, help() pour laide
en ligne ou help.start() pour obtenir laide au format HTML.
Tapez q() pour quitter R.
>
Ce message peut varier, suivant la version installe, lordinateur utilis, etc.
Important : Le prompt a chang, il sagit maintenant du signe >. Cela signie que vous tes sous R et non dans la
console. Le fonctionnement est similaire, except que la console attend des lignes de commande R et non des lignes de
commande de Linux.
La premire commande que nous allons apprendre est celle pour arrter R et retourner la console :
1 q()
Plusieurs remarques de porte gnrale :
1. Dans ce document, toutes les commandes Rapparatront dans un encadr avec lignes numrotes, comme ci-dessus.
Le prompt (>) nest pas gur.
2. Une commande R comprend toujours des parenthses. Parfois, comme ici, ces parenthses seront vides. Dans la
plupart des commandes cependant, elles contiendront des arguments (on dit aussi paramtres).
Une fois appuy sur Entre, la question suivante apparat :
Save workspace image? [y/n/c]:
R vous demande si vous voulez sauvegarder lespace de travail. Les rponses possibles sont :
y = yes (oui !)
n = no (non !)
c = cancel (annul !)
Si vous rpondez oui (en tapant y puis Entre ), R vas enregistrer votre travail. Lorsque vous relancerez R,
vous retrouverez ce que vous avez fait la fois prcdente. Les sances de TP sont largement indpendantes, aussi vous
naurez pas besoin de ce que vous avez fait la sance davant. Nanmoins, il est recommand de sauvegarder votre travail,
particulirement si vous ne lavez pas termin la sance prcdente.
Important !
Si vous quittez R en cliquant sur la croix de la console, cela revient avoir choisi loption no .
Ce systme ne permet que de sauvegarder le contenu de la mmoire de R, ainsi que les commandes prcdemment
tapes. Il est trs peu pratique pour garder une trace de votre travail, et ne permet pas de le dplacer sur un autre
ordinateur par exemple. Nous allons donc voir une autre manire de sauvegarder, que nous vous RECOMMANDONS
VIVEMENT DUTILISER.
Sauvegarder son travail : utilisation des scripts
Il est possible dcrire des commandes R dans un chier, et de demander R de lire ce chier et dexcuter toutes
les commandes qui sont dedans. Un tel chier de commande sappelle un script. Ce systme est trs intressant car il
constitue un trs bon et trs simple moyen de sauvegarde. Il permet aussi de stocker toute une analyse, et ainsi de trouver
facilement dventuelles erreurs. Un autre intrt, et non des moindres, est quil permet de refaire sans se fatiguer une
analyse sur un autre jeu de donnes, ou bien lorsquon se rend compte dune erreur dans les donnes. En pratique, vous
aurez surtout besoin de ce systme lorsque vous vous attaquerez aux projets. Son utilisation prcoce vous garrantira un
gain de temps pour la suite.
Voici comment crer un script :
1. Ouvrir une nouvelle console
2. Se dplacer dans le rpertoire stats/scripts que vous avez cr :
cd stats/scripts
v
3. Ouvrir un diteur de texte. Il en existe plusieurs, nous allons utiliser kwrite , lditeur de KDE :
kwrite &
Note : ne pas oublier le "&" la n, qui dit Linux de lancer le programme et de retourner la console ensuite. Si
vous loubliez, vous devrez fermer lditeur avant de pouvoir rutiliser la console.
kwrite ressemble beaucoup au bloc-notes de Windows. Vous pouvez y taper vos commandes, puis sauvegarder votre
travail en utilisant le menu Fichier enregistrer sous . Enregistrer votre chier dans le rpertoire stats/scripts . Il
est recommand de nommer les scripts nom_de_chier.R ou nom_de_chier.r , mais ce nest pas obligatoire. Vous
pouvez simplement les nommer nom_de_chier.txt .
Vous pouvez ensuite copier-coller vos commandes dans R(CRTL + c pour copier, CTRL + v pour coller). Vous pouvez
ainsi excuter plusieurs lignes de commande la fois, et refaire ainsi toute un analyse trs rapidement. Nous verrons quil
existe aussi une autre manire de faire.
Tout ce qui suit le cractre sera ignor par R, ce qui permet de documenter votre code. L encore, ce nest
pas obligatoire, mais VIVEMENT RECOMMAND, de suivre le patron suivant :
# Fichier: TP1.R
# Auteur: Etudiant Studieux
# Date: 30 septembre 2006
# Objet: code du TP N1
#+----------------+
#| Exercice 1 |
#+----------------+
blabla
Vous pouvez organiser votre rpertoire scripts en crant un chier par sance de TP par exemple.
Obtenir de laide
La deuxime commande R de ce document est la commande help . Elle prend en argument le nom de la commande
pour laquelle on veut des informations. Par exemple :
1 help(q)
Par dfaut, laide est afche dans la console. On peut utiliser les ches pour faire dler le texte, et on tape q (sans
parenthses cette fois) pour quitter laide et retourner dans R
2
. Une manire plus conviviale consiste utiliser laide au
format html (web). Pour cela, on dit dabord R douvrir un navigateur (ici konqueror , le navigateur de KDE) :
1 help.start(browser="konqueror")
Cette commande a pour effet douvrir une fentre externe (aprs un petit laps de temps). On peut alors naviguer dans
laide comme sur une page web ordinaire. Ensuite, si on tape
1 help(q)
laide safchera automatiquement au format html (voir gure 3). Note : laide est en anglais !
2
Attention ! ne pas confondre le q pour quitter laide (qui permet juste de basculer lafchage), avec le q() pour quitter R! Ce systme est
propre Linux. Sous Windows, laide safche dans une fentre part.
vi INTRODUCTION
FIG. 3 Aide au format HTML.
Chapitre 1
Premiers pas avec R : prsentation du logiciel et
manipulation de donnes
Quest-ce que R?
Cette premire sance fait un petit tour dhorizon des capacits de R. On expose quelques notions de base, fastidieuses
mais ncessaires pour la suite.
1.1 R est une calculatrice
R permet de faire les oprations de calcul lmentaire. Essayez les commandes suivantes :
1 3+5
2 2
*
4
3 3-8
4 2.1-6
*
2.5
5 3
*
2-5
*
(2-4)/6.02
6 2^2
etc.
1.2 R est une calculatrice scientique
R permet de faire des calculs plus labors. Il utilise pour cela des fonctions. Plusieurs fonctions prdnies sont
disponibles. Que font les fonctions suivantes ?
1 sqrt(4)
2 abs(-4)
3 log(4)
4 sin(0)
5 exp(1)
6 round(3.1415,2)
R possde aussi en mmoire la valeur de quelques constantes mathmatiques :
1 pi
2 cos(2
*
pi)
1.3 R est un langage de programmation
1.3.1 Cration de variables
On peut stocker en mmoire des donnes, rsultats, etc. :
1
2 CHAPITRE 1. PREMIERS PAS AVEC R
1 x<-3.14
On a ainsi cr une variable de nom x contenant la valeur 3.14. La che, obtenu en tapant < et est appele oprateur
daffectation. Cet oprateur dit que la variable x doit contenir la valeur 3.14. Si cette variable nexiste pas, elle est cre.
Si elle existe, son contenu est remplac par la nouvelle valeur.
Pour rappeler le contenu dune variable, il suft de taper son nom :
> x
[1] 3.14
Nous reviendrons plus tard sur la signication du "[1]".
Les variables ainsi cres peuvent tre appeles nimporte quand, y compris lors de la cration de nouvelles variables :
1 y<-2
*
x
> y
[1] 6.28
Toutes les variables cres sont stockes dans la mmoire de R. On peut obtenir la liste des objets stocks par la fonction
ls (liste)
1
:
1 ls()
> ls()
[1] "x" "y"
On peut effacer une variable avec la fonction rm (remove) :
1 rm("x")
2 ls()
> rm("x")
> ls()
[1] "y"
1.3.2 Notion dobjet
R est un langage dit "orient objet". Cette notion a plusieurs implications importantes que nous ne dtaillerons pas
ici. Ce quil faut retenir, cest quon peut manipuler des variables de plusieurs types dans R. Au cours des TP, nous en
utiliserons plusieurs.
Le premier type, le plus simple, est le vecteur. Un vecteur est un tableau une dimension, par exemple [1,2,5,3,-5,0]
est un tableau de 6 nombres.
Cration dun vecteur
Voici comment on cre un tel tableau dans R :
1 t<-c(1,2,5,3,-5,0)
La fonction c prend en argument une liste de valeurs et les colle dans un tableau. Ici, ce tableau est stock dans la variable
t. On peut afcher son contenu en tapant son nom :
> t
[1] 1 2 5 3 -5 0
Il y a dautres manires de crer des vecteurs. . . tudiez les lignes de commande suivantes :
1 rep(2.34, 5)
2 2:7
3 6:1
4 seq(from=1, to=2, by=0.25)
5 seq(from=1, to=2, length=7)
1
Noter la diffrence avec la commande ls de la console, qui liste le contenu dun rpertoire.
1.3. R EST UN LANGAGE DE PROGRAMMATION 3
Important : Lorsquon afche un vecteur de grande taille, R lcrit sur plusieurs lignes :
1 seq(from=1, to=100, by=1)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
[19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
[37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
[55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
[73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
[91] 91 92 93 94 95 96 97 98 99 100
Le numro entre crochets dsigne lindice (= la position dans le vecteur) de la premire valeur afche sur la ligne. Il
est noter que dans R, tous les nombres sont des vecteurs de taille 1. Cest pourquoi quand vous afchez une valeur (un
vecteur de taille 1 donc), un 1 entre crochets apparat au dbut de la ligne.
Oprations sur les vecteurs
Tous les oprateurs et les fonctions vues prcdemment peuvent tre utiliss sur des vecteurs.
Exercice 1 Oprations sur les vecteurs
crer un vecteur x quelconque. Que font les commandes suivantes ?
1 x+1
2 x
*
2
3 log(x)
4 x>2
crer un vecteur y de mme taille que x. Que font les commandes suivantes ?
1 x+y
2 x
*
y
crer un vecteur z de taille diffrente de x. Que font les commandes suivantes ?
1 x+z
2 x
*
z
Accs aux lments dun vecteur
On peut accder aux lments dun vecteur grce loprateur "[]".
1 x<-c(1,3,-2,0,1.3,-6.43)
2 x[1]
3 x[3]
> x<-c(1,3,-2,0,1.3,-6.43)
> x[1]
[1] 1
> x[3]
[1] -2
Cet oprateur peut prendre en arguments des valeurs ngatives, ou mme plusieurs valeurs, on parle alors de masque.
Examinez les commandes suivantes. Que font-elles ?
1 x[-4]
2 x[c(1,3)]
3 x[c(-4,-5,-1)]
4 x[c(TRUE,FALSE,TRUE,TRUE,FALSE,FALSE)]
5 x[c(TRUE,FALSE)]
6 x[x<1]
4 CHAPITRE 1. PREMIERS PAS AVEC R
1.4 R est un langage pour les statistiques
1.4.1 Fonctions statistiques
R possde plusieurs fonctions statistiques. Que font les fonctions suivantes ?
1 sum(x)
2 length(x)
3 mean(x)
4 sd(x)
5 median(x)
6 var(x)
7 summary(x)
Exercice 2 Moyenne et variance
crez un vecteur x de taille > 10
calculez la moyenne des lments de x, sans utiliser la fonction mean. Comparer les rsultats ceux de la fonction
mean.
calculez la variance des lments de x, sans utiliser la fonction var. Comparez les rsultats ceux de la fonction
var.
1.4.2 Importation de donnes dans R
Format des donnes
R lit des chiers plats, cest--dire contenant seulement du texte et non des donnes binaires. En dautres termes, pas
de donnes Word ou Excel ! Ces chiers plats sont assez simples : chaque ligne correspond une ligne du tableau, et les
colonnes sont spares par un espace (voir gure 1.1). Les colonnes peuvent aussi tre spares par des tabulations, des
virgules, des points-virgules... A noter que la premire ligne contient les noms des colonnes.
"beak_size" "survival"
10,81 1
8,74 0
10,04 0
9,75 0
9,76 0
9,55 0
8,7 0
9,62 0
9,22 0
8,79 0
9,61 0
9,02 0
7,85 0
9,01 0
...
FIG. 1.1 Exemple de chier de donnes texte.
Rpeut lire nimporte quel chier texte suivant ce format. On utilise pour ce faire la commande read.table. Celle-ci
prend plusieurs arguments, dont le nom du chier lire et des arguments optionnels :
sep (caractre) caractre de sparation de colonnes ;
dec (caractre) caractre de dcimale ("." ou ",") ;
quot (caractre) caractre de dlimitation du texte("\"" ou "" ou "" (vide)) ;
header (boolen) dit si la premire ligne est une entte ;
row.names (entier) numro de la colonne considrer comme noms de lignes. Si absent, les lignes sont numro-
tes.
etc . . .
1.4. R EST UN LANGAGE POUR LES STATISTIQUES 5
Jusqu la n de cette sance, nous allons travailler sur un jeu de donnes rel. Ce jeu de donnes, reprsent partielle-
ment sur la gure 1.1 comporte les tailles de bec de pinsons de Darwin dans larchipel des Galapagos. Pour chaque oiseau
captur, on mesure la largeur du bec dans une premire campagne de capture. Loiseau est marqu puis une deuxime
campagne de capture est organise. Si au terme de cette deuxime campagne un oiseau bagu nest pas revu, il est consi-
dr comme mort. Chaque ligne du tableau reprsente un oiseau. La premire colonne contient la taille du bec, et la
deuxime colonne la survie (un 1 signie que loiseau a t revu lors de la deuxime campagne).
Ce jeu de donnes est stock dans un chier nomm "beak_size.cvs", tlchargeable depuis le site web de luniversit.
Enregistrez le dans votre rpertoire data.
On importe ensuite ce chier dans R avec la commande suivante :
1 becs <- read.table("data/beak_size.csv", header=TRUE, sep="\t", dec=",")
On prcise ici que le chier possde une entte, que les colonnes sont spares par des tabulations et que les dcimales
sont codes par une virgule (et non un point). Le jeu de donnes sera stock dans la variable becs.
Notion de dataframe
La variable becs est un objet de type dataframe, analogue une feuille de calcul Excel ou OpenOfce. Tout comme
les vecteurs, les dataframes sont des objets, mais plus labors et spcialement dsigns pour le stockage de donnes. Il
sagit plus ou moins dun tableau 2 dimensions (une matrice), mais avec en plus des noms de colonnes, des noms de
lignes, etc. Trs gnralement, et ce sera toujours le cas en ce qui nous concerne, les lignes dun dataframe seront des
individus (ici des pinsons) et les colonnes des variables (ici la taille du bec et la survie). Ainsi, la ligne 5, colonne 2, on
a la survie du pinson n5. On accde cet lment en tapant
1 becs[5,2]
Loprateur [] fonctionne exactement comme pour les vecteurs, sauf quil prend 2 arguments spars par une virgule. Le
premier dsigne les lignes, le second les colonnes. tudiez les lignes de commandes suivantes :
1 becs[c(1,2,5,10),1]
2 becs[-(10:750),1]
Il est aussi possible domettre le terme des lignes ou des colonnes (mais attention ne pas oublier la virgule !). Que font
les commandes suivantes :
1 becs[4,]
2 becs[,2]
Il est galement possible dutiliser les noms de lignes et de colonnes au lieu des numros. Vriez que les 2 lignes de
commandes suivantes sont quivalentes :
1 becs[1:5, 1]
2 becs[1:5, "beak_size"]
On peut galement utiliser la syntaxe suivante :
1 becs$beak_size
Il existe beaucoup dautres fonctionnalits propres aux dataframes. Nous nous contenterons de celles-ci pour le moment.
Prenez simplement note des fonctions suivantes :
1 dim(becs)
2 nrow(becs)
3 ncol(becs)
4 row.names(becs)
5 col.names(becs)
1.4.3 Reprsentations graphiques
Finalement, pour terminer cette premire sance, nous allons faire un petit tour des fonctionnalits graphiques de R.
6 CHAPITRE 1. PREMIERS PAS AVEC R
La fonction plot
La fonction plot est la fonction gnrique de graphe. Littralement, elle reprsente graphiquement un objet. son
rsultat dpend donc du type de lobjet lui-mme. Comparer son effet sur un vecteur :
1 plot(1:10)
celui sur un dataframe :
1 plot(becs)
Il est possible de paramtrer lafchage obtenu (couleurs, etc). Voici un bref aperu des options de la fonction plot,
vous pouvez regarder laide pour plus de dtails. Nous aurons de toute faon loccasion de revenir sur lutilisation de cette
fonction.
type (chane de caractres) "p" pour points, "l" pour lignes, "b" pour les deux (both) ;
main (chane de caractres) un titre pour le graphique ;
sub (chane de caractres) un sous-titre pour le graphique ;
xlab (chane de caractres) un titre pour laxe des abscisses ;
ylab (chane de caractres) un titre pour laxe des ordonnes ;
col (vecteur de chanes de caractres) la ou les couleur(s) utiliser ;
etc . . .
Essayez la commande suivante :
1 plot(becs, xlab="Taille du bec", ylab="Survie",
2 col="blue", main="Survie des Pinsons")
Cette reprsentation nest pas trs satisfaisante, on aurait prfr mettre la survie en abscisse. Cest bien sr possible car
plot accepte quon lui donne en argument des vecteurs dabscisses et dordonnes :
1 plot(x=becs[,"survival"], y=becs[,"beak_size"],
2 xlab="Taille du bec", ylab="Survie",
3 col="blue", main="Survie des Pinsons")
Note : on aurait pu obtenir un rsultat similaire en changeant les colonnes dans becs, mais cette manire de faire est plus
gnrale. Il en existe aussi une autre :
1 plot(becs[,"beak_size"] ~ becs[,"survival"],
2 xlab="Taille du bec", ylab="Survie",
3 col="blue", main="Survie des Pinsons")
Le symbole signie "en fonction de". Nous le reverrons plus loin, notamment pour le modle linaire.
Un autre problme avec notre reprsentation est que laxe des abscisses est gradu (0, 0.2, 0.4, . . . , 1). Cette graduation
est inutile car nous savons que nous avons seulement les valeurs 0 et 1. En fait, ces valeurs 0 et 1 sont un code que nous
avons dni (1 pour vivant, 0 pour mort). La valeur numrique na pas de sens, nous aurions trs bien pu convenir de "A"
pour vivant et "B" pour mort, ou mme des mots "vivant" et "mort". En statistiques, une telle variable est dite discrte par
opposition aux variables continues (comme la taille du bec). Dans R, les variables continues sont codes par des vecteurs,
les variables discrtes par des facteurs. Un facteur est trs similaire un vecteur, et la plupart de ce quon a dit pour
les vecteurs reste vrai pour les facteurs. Un facteur possde simplement en plus la liste des valeurs possibles quil peut
prendre (ici "vivant" et "mort", ou "1" et "0"), on parle de modalits. Nous reviendrons galement sur ce point.
Ce qui nous importe pour le moment, cest que notre variable "survival" est un vecteur et non un facteur. Ceci est du
au fait que, par dfaut, R considre une variable numrique comme un vecteur. Nous naurions pas eu ce problme si on
avait crit dans le chier "A" et "B" au lieu de "0" et "1". Nanmoins, pas besoin de tout changer, il suft de dire R de
convertir la variable en facteur : ceci est effectu par la fonction as.factor.
1 plot(x=as.factor(becs[,"survival"]), y=becs[,"beak_size"],
2 xlab="Taille du bec", ylab="Survie",
3 col="blue", main="Survie des Pinsons", type="l")
Il est possible deffectuer la conversion en facteur dnitivement :
1 becs[,"survival"] <- as.factor(becs[,"survival"])
2 plot(x=becs[,"survival"], y=becs[,"beak_size"],
3 xlab="Taille du bec", ylab="Survie",
4 col="blue", main="Survie des Pinsons", type="l")
1.4. R EST UN LANGAGE POUR LES STATISTIQUES 7
Si vous demandez R dafcher la variable "survival" :
1 becs[,"survival"]
vous voyez que lafchage a chang (un peu !) :
> becs[,"survival"]
[1] 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[38] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
...
[704] 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[741] 1 0 1 1 1 1 1 1 1 1 0
Levels: 0 1
Il a rajout la ligne Levels: 0 1, qui afche les modalits voques plus haut. Il est possible dafcher et de changer
le nom des modalits avec la fonction level :
1 levels(becs[,"survival"]) <- c("Mort", "Vivant")
2 becs[,"survival"]
[1] Vivant Mort Mort Mort Mort Mort Mort Mort Mort Mort
[11] Mort Mort Mort Mort Mort Mort Mort Mort Mort Mort
...
[721] Mort Mort Vivant Vivant Mort Mort Vivant Vivant Vivant Vivant
[731] Vivant Vivant Vivant Vivant Vivant Vivant Vivant Vivant Vivant Vivant
[741] Vivant Mort Vivant Vivant Vivant Vivant Vivant Vivant Vivant Vivant
[751] Mort
Levels: Mort Vivant
Vous aurez remarqu que lafchage a chang : plot a reconnu que labscisse est un facteur, et a utilis un afchage en
"bote moustaches". Ceci est li au fait que plot est une fonction gnrique, il existe dautres fonctions qui permettent
deffectuer pas mal de reprsentations (voir la gure 1.2 pour quelques exemples). Nous allons en voir une qui permet
deffectuer des histogrammes.
Cration dhistogrammes
Les histogrammes sont effectus par la fonction hist. Elle prend en argument un vecteur numrique :
1 hist(becs[,"beak_size"])
Plusieurs arguments peuvent aussi tre passs :
freq (boolen) dit si les barres reprsentent les effectifs (TRUE) ou des pourcentages (FALSE) ;
breaks (entier) dit le nombre (approximatif) de classes utiliser ;
labels (boolen) dit sil faut tiqueter les barres ;
main (chane de caractres) un titre pour le graphique ;
xlab (chane de caractres) un titre pour laxe des abscisses ;
ylab (chane de caractres) un titre pour laxe des ordonnes ;
col (vecteur de chanes de caractres) couleurs pour les barres ;
etc . . .
(se rfrer la documentation pour une liste complte).
1 hist(becs[,"beak_size"], breaks=20, labels=TRUE, col="red",
2 xlab="Taille du bec", ylab="Nombre dobservations",
3 main="Pinsons de Darwin : taille du bec")
Exercice 3 Concours desthtique.
Tracer la courbe f(x) = sin(x) pour x [2, 2], de telle sorte quelle soit le plus joli possible !
8 CHAPITRE 1. PREMIERS PAS AVEC R
1 means<-sapply(
2 (split(becs[,"beak_size"], becs[,"survival"])),
3 mean)
4 sds <-sapply(
5 (split(becs[,"beak_size"], becs[,"survival"])),
6 sd)
7 names(means) <- c("Morts", "Vivants")
8 bp<-barplot(means, col=c("yellow", "orange"),
9 ylim=c(0,13), ylab="Taille du bec")
10 f <- function(i) {
11 x <- bp[i,]
12 y <- means[i]+1.96
*
sds[i]
13 lines(c(x,x,x-0.25,x+0.25), c(means[i], y, y, y))
14 }
15 f(1)
16 f(2)
1 freqs<-sapply(
2 (split(becs[,"beak_size"], becs[,"survival"])),
3 length)
4 names(freqs) <- c("Morts", "Vivants")
5 pie(freqs, labels=paste(names(freqs),
6 round(freqs
*
100/sum(freqs)),"%"),
7 density=c(0,10))
1 tailles<-cut(becs[,"beak_size"], breaks=5:15)
2 survies<-becs[,"survival"]
3 levels(survies) <- c("Morts", "Vivants")
4 t<-table(survies, tailles)
5 t[1,] <- t[1,]/sum(t[1,])
6 t[2,] <- t[2,]/sum(t[2,])
7 barplot(t, beside=TRUE, legend=TRUE)
FIG. 1.2 Exemple de graphiques obtenus sous R Le code est donn en guise dexemple, il nest pas tudier ce stade.
Chapitre 2
Distributions et tests classiques
Dans ce TP nous allons voir comment effectuer des tests sous R.
2.1 Distributions
R possde plusieurs distributions de probabilit en mmoire, sous forme de fonctions. Nous verrons comment uti-
liser ces fonctions pour la loi normale, puis nous indiquerons les autres fonctions disponibles pour les autres lois, leur
fonctionnement tant trs similaire.
2.1.1 Distribution normale
La fonction pnorm est la fonction de rpartition dune loi normale. Elle prend en argument une valeur q (q pour
quantile) et retourne la probabilit de lvnement < X q.
La fonction qnorm (fonction quantile) est la fonction inverse : elle prend en argument une probabilit p et renvoie q
tel que Pr(< X q) = p.
Ces deux fonctions prennent aussi deux autres arguments qui sont les paramtres de la loi normale : mean son esp-
rance et sd son cart-type, initialiss par dfaut 0 et 1 (loi centre rduite). Essayez les lignes de commande suivantes :
1 pnorm(0)
2 qnorm(0.5)
3 pnorm(1, mean=1, sd=0.1)
4 qnorm(0.5, mean=1, sd=0.1)
La fonction dnorm quant elle prend les mmes arguments que la fonction pnorm, mais renvoie la densit et non la
fonction de rpartition.
Finalement, la fonction rnorm gnre des nombres alatoires selon une loi normale (le paramtre n permet de spci-
er le nombre de tirages effectuer).
Exercice 4 Calculs de probabilits
Pour une loi normale desprance 5 et de variance 2 :
1. Faire une reprsentation graphique de sa fonction de rpartition et de sa densit sur [0, 10].
2. Calculer la probabilit des vnements :
X 0
X 5
1 < X 3
X > 10
3. Calculer entre quelles valeurs 95% des tirages de X sont compris.
4. Mme question que la prcdente, mais pour une loi normale centre rduite.
9
10 CHAPITRE 2. DISTRIBUTIONS ET TESTS CLASSIQUES
2.1.2 Autres distributions
Voir le tableau 2.1 pour un rsum des distributions disponibles.
NB : Les fonctions p
*
et q
*
possdent galement un argument lower.tail qui par dfaut prend la valeur vraie.
Cette option correspond au calcul de Pr(X x), alors que lower.tail=FALSE correspond au calcul Pr(X > x) =
1 Pr(X x).
Exercice 5 Tests la main. . .
1. Gnrer un vecteur u de 10 nombres alatoires selon une loi normale desprance -1 et de variance 1, et un vecteur
v desprance 1 et de variance 2.
2. Estimer les moyennes et variances des distributions partir de ces tirages.
3. Comparaison de moyennes :
(a) Calculer la statistique de Student :
t
obs
=

1

2
_

2
n
1
+

2
n
2
,
avec

2
=
(n
1
1)

2
1
+ (n
2
1)

2
2
n
1
+ n
2
2
.
(b) Calculer la probabilit, sous lhypothse nulle dgalit des moyennes, que cette statistique soit au moins
gale celle observe. La diffrence est-elle signicative ?
4. Comparaison de variances :
(a) Calculer le ratio des variances.
(b) Calculer la probabilit, sous lhypothse nulle dhomoscdasticit, que le ratio attendu soit suprieur ou
gal au ratio observ (rappel : le rapport de deux variances de lois normales suit une loi de Fischer, de
paramtres n
1
1 et n
2
1, o n
1
et n
2
sont les tailles des chantillons observs). Les variances sont-elles
signicativement diffrentes ?
2.2 Quelques tests
Grce ses fonctions de calcul numrique avanc telles que les fonctions de distributions de probabilit, R permet
deffectuer peu prs nimporte quel test statistique.
Nanmoins la procdure peut tre laborieuse lorsque lon effectue certains tests trs utiliss (dits classiques) comme
ceux proposs dans lexercice 2. Cest pourquoi R possde un certain nombre de tests tout prts sous forme de fonctions.
Nous allons en voir quelques uns.
2.2.1 Comparaison de moyennes
Test de Student, dit test t
Le test de Student est effectu par la fonction t.test. Cette fonction permet en fait de faire plusieurs tests diffrents,
selon les paramtres spcis :
Comparer une moyenne dchantillon une moyenne thorique : on spcie lchantillon par le paramtre x et la
moyenne thorique par le paramtre mu :
1 t.test(rnorm(10,mean=1),mu=1)
One Sample t-test
data: rnorm(10, mean = 1)
t = -0.0335, df = 9, p-value = 0.974
alternative hypothesis: true mean is not equal to 1
95 percent confidence interval:
0.1586634 1.8167746
sample estimates:
mean of x
0.987719
2.2. QUELQUES TESTS 11
La fonction renvoie plusieurs informations : le type de test (one-sample t-test), les donnes, la valeur de la statistique
(t), le nombre de degrs de libert (df), le risque de premire espce (= p-value), lhypothse alternative, la moyenne
estime et son intervalle de conance. Par dfaut ce dernier est donn 5%, mais on peut changer ce comportement
en spciant le paramtre conf.level qui par dfaut prend la valeur 0.95.
Comparer deux chantillons entre eux passs par les paramtres x et y. Le paramtre mu dsigne alors la diffrence
de moyennes thoriques entre les deux chantillons (0 par dfaut = galit des moyennes).
1 t.test(rnorm(10,mean=5), rnorm(10,mean=1))
Welch Two Sample t-test
...
t = 11.4811, df = 17.619, p-value = 1.311e-09
...
L encore, remarquer la loquacit de la sortie de la fonction. . .
1 t.test(rnorm(10,mean=5), rnorm(10,mean=1), mu=4)
Welch Two Sample t-test
...
t = 0.7913, df = 17.558,
p-value = 0.4393
...
Il est noter que par dfaut, les chantillons peuvent tre issus de distributions ayant des variances diffrentes
(correction de Welch). . . Pour effectuer un vrai test de Student, il faut spcier le paramtre var.equal=TRUE
(FALSE par dfaut).
Il reste deux paramtres dcrire : le premier, alternative permet de spcier si on veut un test bilatral ("two.sided")
ou unilatral ("less" ou "greater" suivant le sens). Le second paramtre permet deffectuer un test modi pour des donnes
apparies (paired=TRUE, FALSE par dfaut).
Le test de Mann-Whitney Wilcoxon
Le test de Mann-Whitney Wilcoxon (non-paramtrique) seffectue par la fonction wilcox.test. Cette fonction
accepte les mmes arguments que t.test. Deux arguments supplmentaires sont galement disponibles :
exact p-value exacte calcule, sinon approximation normale. Par dfaut, lapproximation est effectue si la taille
des chantillons est > 50.
correct [Correction de continuit si approximation normale.]
2.2.2 Comparaison de 2 variances
Test de Fisher, dit test F
La fonction var.test permet de comparer les variances de deux chantillons (Test de Fischer). Les paramtres de
cette fonction sont :
x et y les chantillons comparer (vecteurs) ;
alternative = "two.sided" (dfaut), "less" or "greater" ;
conf.level le seuil de lintervalle de conance du rapport de variances observ (0.95 par dfaut) ;
ratio le rapport thorique des variances (1 par dfaut = galit des variances).
Cette fonction est donc similaire t.test, de mme que sa sortie :
1 var.test(rnorm(10,sd=1),rnorm(10,sd=2))
F test to compare two variances
data: rnorm(10, sd = 1) and rnorm(10, sd = 2)
F = 0.2839, num df = 9, denom df = 9, p-value = 0.07462
12 CHAPITRE 2. DISTRIBUTIONS ET TESTS CLASSIQUES
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.07052118 1.14305165
sample estimates:
ratio of variances
0.2839179
Comparaison de 2 variances : tests non-paramtriques
Il existe deux versions non-paramtriques du test F, le test de Ansari-Bradley et le test de Mood. Ils sont effectus sous
R en utilisant les fonctions ansari.test et mood.test, qui fonctionnent de manire similaire var.test
Note : Les fonctions t.test, wilcox.test, var.test, ansari.test et mood.test prennent en argument
deux chantillons sous forme de deux vecteurs. Il est galement possible de les utiliser en leur passant un vecteur de
donnes et un facteur deux modalits. Les fonctions compareront alors automatiquement les donnes de la modalit 1
avec les donnes de la modalit 2, exemple : comparez
1 v1 <- rnorm(10)
2 v2 <- rnorm(12)
3 t.test(v1,v2)
et
4 v <- c(v1, v2)
5 f <- as.factor(c(rep(1,10), rep(2,12)))
6 t.test(v~f)
Comparaison de k variances
Il existe des tests permettant de comparer la variance de plus de 2 chantillons. Ces tests sont notamment utiliss pour
tester lhypothse dhomoscdasticit (= galit des variances) lors dune ANOVA. Il existe 2 tests, le test de Bartlett
(paramtrique) et le test de Fligner-Killeen (non-paramtrique). Ces deux tests fonctionnent de la mme manire : ils
prennent en argument une formule du type vecteur facteur, comme les tests prcdents, sauf que cette fois-ci le
facteur peut avoir plus de 2 modalits. Il est galement possible dappeler les fonctions en passant le vecteur et le facteur
spars par une virgule. A la manire des tests prcdents, on aussi passer directement les chantillons, mais sous forme
dune liste
1
. Nous aurons loccasion de revenir sur ces tests lorsque nous verrons lANOVA.
Exercice 6 Reprendre les vecteurs u et v de lexercice 5 et effectuer un test t et un test F. Comparer les statistiques et
les p-values obtenues.
2.2.3 Test de normalit
Il existe plusieurs manires de tester la normalit dune variable. Un des tests les plus utiliss est le test de Shapiro-
Wilk. Son utilisation est trs simple puisquil suft dutiliser la fonction shapiro.test sur le vecteur contenant les
valeurs tester :
1 shapiro.test(rnorm(100))
Attention : lhypothse nulle de ce test est que les donnes suivent une loi normale ! Une p-value signicative implique
donc que les donnes ne sont pas normales. Trs gnralement, on souhaite donc que le test ne soit pas signicatif !
Exercice 7 Survie et taille de bec.
Utiliser le jeu de donnes "beak_size.cvs" du chapitre 1. Convertissez la variable "survival" en facteur. En cas de
difcult, se reporter au chapitre prcdent.
En utilisant les tests vus prcdemment, essayez de rpondre la question : La taille du bec a-t-elle une inuence sur
la survie des Pinsons ?
1
Les listes constituent un nouveau type dobjet que nous verrons plus tard.
2.2. QUELQUES TESTS 13
2.2.4 Comparaison de frquences (=proportions)
La fonction prop.test permet de comparer des frquences observes des frquences thoriques ou entre elles.
Son fonctionnement est l encore trs similaire aux fonctions vues prcdemment. On peut passer en arguments au choix :
x et n les effectifs des succs et les effectifs totaux. Lhypothse nulle teste est alors que toutes les proportions (
x
n
)
sont gales.
x, n et p, o p est le vecteur des proportions attendues. Lhypothse nulle teste est que toutes les proportions
observes sont gales aux proportions thoriques.
2.2.5
2
sur table de contingence
La fonction chisq.test effectue un test de
2
sur table de contingence. On peut passer au choix en arguments :
x et p, des vecteurs de probabilits (
2
dajustement, identique prop.test 2)
x et y, des vecteurs deffectifs, (table de contingence 2 dimensions)
x o x est une matrice deffectifs (table de contingence de taille n)
Quelques fonctions utiles. . . La fonction cut permet de dcouper un vecteur et de le transformer en facteur, en faisant
des catgories. Cette fonction accepte plusieurs arguments, comparer :
1 x<-1:10
2 cut(x,2)
3 cut(x,2,labels=c("inf","sup"))
4 cut(x,4)
5 cut(x,4,labels=1:4)
6 cut(x,breaks=c(0,3,7,10))
7 cut(x,breaks=c(0,3,7,10), labels=c("A","B","C"))
On peut bien sr stocker les rsultats dans une variable :
7 f<-cut(x,breaks=c(0,3,7,10), labels=c("A","B","C"))
Il est possible de reprsenter graphiquement un facteur. Que fait la commande suivante ?
7 plot(f)
La fonction table permet de construire une table de contingence. Elle prend en argument 1 ou plusieurs facteurs et
construit le tableau crois des effectifs :
1 x<-rnorm(100, mean=1)
2 y<-rnorm(100, mean=-2, sd=2)
3 fx<-cut(x,4)
4 fy<-cut(y,4)
5 t<-table(fx,fy)
6 t
fy
fx (-8.75,-5.55] (-5.55,-2.35] (-2.35,0.853] (0.853,4.05]
(-1.99,-0.539] 2 0 4 1
(-0.539,0.917] 1 19 21 4
(0.917,2.37] 2 17 20 3
(2.37,3.83] 0 3 1 2
t est un objet de type table, qui ressemble beaucoup une matrice. Il existe une reprsentation particulire pour ces objets :
6 plot(t)
On dispose galement de reprsentations 3D. . . . Voici par exemple une manire de reprsenter graphiquement une distri-
bution binormale :
1 x<-rnorm(10000, mean=1)
2 y<-rnorm(10000, mean=-2, sd=2)
3 fx<-cut(x,15)
14 CHAPITRE 2. DISTRIBUTIONS ET TESTS CLASSIQUES
4 fy<-cut(y,15)
5 t<-table(fx,fy)
6 plot(t)
7 image(t)
8 contour(t)
9 persp(t, theta=30, phi=30, col=topo.colors(15))
La gure 2.1 reprsente les rsultats de ces commandes.
x
fx
f
y
(3.1,2.56] (2.56,2.02] (2.02,1.48] (1.48,0.939] (0.939,0.399] (0.399,0.141] (0.141,0.681] (0.681,1.22] (1.22,1.76] (1.76,2.3] (2.3,2.84] (2.84,3.38] (3.38,3.92] (3.92,4.46] (4.46,5]
(

1
0
.
2
,

9
.
1
6
]
(

9
.
1
6
,

8
.
1
3
]
(

8
.
1
3
,

7
.
1
]
(

7
.
1
,

6
.
0
8
]
(

6
.
0
8
,

5
.
0
5
]
(

5
.
0
5
,

4
.
0
2
]
(

4
.
0
2
,

2
.
9
9
]
(

2
.
9
9
,

1
.
9
6
]
(

1
.
9
6
,

0
.
9
3
3
]
(

0
.
9
3
3
,
0
.
0
9
5
1
]
(
0
.
0
9
5
1
,
1
.
1
2
]
(
1
.
1
2
,
2
.
1
5
]
(
2
.
1
5
,
3
.
1
8
]
(
3
.
1
8
,
4
.
2
1
]
(
4
.
2
1
,
5
.
2
4
]
0.0 0.2 0.4 0.6 0.8 1.0
0
.
0
0
.
2
0
.
4
0
.
6
0
.
8
1
.
0
0.0 0.2 0.4 0.6 0.8 1.0
0
.
0
0
.
2
0
.
4
0
.
6
0
.
8
1
.
0
t
Y
Z
FIG. 2.1 Exemples de reprsentations 3D.
2.2. QUELQUES TESTS 15
Exercice 8 Comparaison des distributions de tailles de bec. Comparez les distributions des tailles de bec des pinsons qui
survivent et ceux qui meurent. Sont-elles identiques ?
2.2.6 Comparaison de distributions
Le dernier test "classique" que nous allons voir est le test de Kolmogorov-Smirnov. Il est effectu par la fonction
ks.test. Cette fonction prend deux arguments (+ les traditionnels alternative et exact) :
1. x le vecteur tester
2. y un deuxime vecteur comparer avec le premier, ou bien une chane de caractres contenant le nom dune
fonction de distribution. Dans ce cas on peut passer en arguments supplmentaires ks.test les arguments de la
fonction.
Important : pour fonctionner correctement, les vecteurs ne doivent pas contenir dlments rpts. On pourra donc
utiliser la fonction unique si besoin. Il est possible dutiliser ce test pour tester la normalit dune fonction :
1 x<-runif(30)
2 ks.test(x, "pnorm", mean=2, sd=sqrt(2))
One-sample Kolmogorov-Smirnov test
data: x
D = 0.7629, p-value = 1.332e-15
alternative hypothesis: two.sided
Exercice 9 Tests de normalit.
Utiliser le jeu de donnes "beak_size.csv". Nous allons travailler sur la variable beak_size, an de tester sa normalit.
Effectuez un test de Shapiro sur cette variable. Conclusion ?
Dcoupez cette variable en une dizaine de classes gales (on pourra prendre 5:14 pour simplier). Effectuer la
reprsentation graphique correspondante.
Calculer les effectifs thoriques de ces classes, si la variable suivait une loi normale de mme moyenne et de mme
variance. Comparer les effectifs thoriques aux effectifs observs. Conclusion ?
Ajouter au graphe prcdent la courbe thorique. On pourra pour cela regarder la documentation de la fonction
lines. Il est noter que la fonction plot applique un facteur renvoie les coordonnes des abscisses, que lon
peut rcuprer dans une variable.
16 CHAPITRE 2. DISTRIBUTIONS ET TESTS CLASSIQUES
N
o
m
D
e
n
s
i
t

P
a
r
a
m

t
r
e
s
F
o
n
c
t
i
o
n
s
N
o
r
m
a
l
e
f
(
x
)
=
1

(
x

)
2
2

,
l
a
m
o
y
e
n
n
e
e
t
l

c
a
r
t
-
t
y
p
e
d
n
o
r
m
(
x
,
m
e
a
n
=
0
,
s
d
=
1
)
p
n
o
r
m
(
q
,
m
e
a
n
=
0
,
s
d
=
1
)
q
n
o
r
m
(
p
,
m
e
a
n
=
0
,
s
d
=
1
)
r
n
o
r
m
(
n
,
m
e
a
n
=
0
,
s
d
=
1
)
U
n
i
f
o
r
m
e
f
(
x
)
=
_ _ _
0
,

x
<
a
1
b

a
,

[
a
,
b
]
1
,

x
>
b
a
,
b
l
e
s
e
x
t
r
e
m
a
d
u
n
i
f
(
x
,
m
i
n
=
0
,
m
a
x
=
1
)
p
u
n
i
f
(
q
,
m
i
n
=
0
,
m
a
x
=
1
)
q
u
n
i
f
(
p
,
m
i
n
=
0
,
m
a
x
=
1
)
r
u
n
i
f
(
n
,
m
i
n
=
0
,
m
a
x
=
1
)
E
x
p
o
n
e
n
t
i
e
l
l
e
f
(
x
)
=

l
a
v
i
t
e
s
s
e
d
e
x
p
(
x
,
r
a
t
e
=
1
)
p
e
x
p
(
q
,
r
a
t
e
=
1
)
q
e
x
p
(
p
,
r
a
t
e
=
1
)
r
e
x
p
(
n
,
r
a
t
e
=
1
)
G
a
m
m
a
f
(
x
)
=
1
s
a

(
a
)
x
a

1
e

x
/
s
a
,
s
l
a
f
o
r
m
e
e
t
l

c
h
e
l
l
e
(
=
1
/
v
i
t
e
s
s
e
)
d
g
a
m
m
a
(
x
,
s
h
a
p
e
,
r
a
t
e
=
1
)
p
g
a
m
m
a
(
q
,
s
h
a
p
e
,
r
a
t
e
=
1
)
q
g
a
m
m
a
(
p
,
s
h
a
p
e
,
r
a
t
e
=
1
)
r
g
a
m
m
a
(
n
,
s
h
a
p
e
,
r
a
t
e
=
1
)
L
o
g
i
s
t
i
q
u
e
f
(
x
)
=
1 s
e
x

m
s

1
+
e
x

m
s

2
m
,
s
l
a
p
o
s
i
t
i
o
n
e
t
l

c
h
e
l
l
e
d
l
o
g
i
s
(
x
,
l
o
c
a
t
i
o
n
=
0
,
s
c
a
l
e
=
1
)
p
l
o
g
i
s
(
q
,
l
o
c
a
t
i
o
n
=
0
,
s
c
a
l
e
=
1
)
q
l
o
g
i
s
(
p
,
l
o
c
a
t
i
o
n
=
0
,
s
c
a
l
e
=
1
)
r
l
o
g
i
s
(
n
,
l
o
c
a
t
i
o
n
=
0
,
s
c
a
l
e
=
1
)

2
f
n
(
x
)
=
_
x
n
/
2

1
e

x
/
2
2
n
/
2

(
n
/
2
)
,

x
>
0
0
,

0
n
l
e
n
o
m
b
r
e
d
e
d
e
g
r

s
d
e
l
i
b
e
r
t

d
c
h
i
s
q
(
x
)
p
c
h
i
s
q
(
q
)
q
c
h
i
s
q
(
p
)
r
c
h
i
s
q
(
n
)
t
d
e
S
t
u
d
e
n
t
f
n
(
x
)
=

(
n
+
1
2
)

(
n 2
)
_
1
+
x
2 n
_

n
+
1
2
n
l
e
n
o
m
b
r
e
d
e
d
e
g
r

s
d
e
l
i
b
e
r
t

d
t
(
x
,
d
f
)
p
t
(
q
,
d
f
)
q
t
(
p
,
d
f
)
r
t
(
n
,
d
f
)
F
d
e
F
i
s
h
e
r
f
n
1
,
n
2
=

(
n
1
+
n
2
2
)

(
n
1
2
)

(
n
2
2
)
_
n
1
n
2
_
n
1
/
2

x
n
1
/
2

1
_
1
+
n
1
n
2
x
_

n
1
+
n
2
2
,

x
>
0
n
1
,
n
2
n
o
m
b
r
e
s
d
e
d
e
g
r

s
d
e
l
i
b
e
r
t

d
f
(
x
,
d
f
1
,
d
f
2
)
p
f
(
q
,
d
f
1
,
d
f
2
)
q
f
(
p
,
d
f
1
,
d
f
2
)
r
f
(
n
,
d
f
1
,
d
f
2
)
T
A
B
.
2
.
1

Q
u
e
l
q
u
e
s
d
i
s
t
r
i
b
u
t
i
o
n
s
c
o
n
t
i
n
u
e
s
.
O
n
n
o
t
e

l
a
f
o
n
c
t
i
o
n
f
a
c
t
o
r
i
e
l
l
e
g

r
a
l
i
s

e
:

(
x
)
_

0
t
x

1
e

t
d
t
Chapitre 3
Corrlation, rgression simple et analyse de
variance un facteur
Ce TP aborde quelques tests de corrlation, ainsi que les rgressions simples (linaire et autres) et lanalyse de variance
(paramtrique et non paramtrique). Dans ce chapitre, nous allons principalement continuer travailler sur les Pinsons de
Darwin. On utilise un nouveau jeu de donnes, nomm "beak_size_heritability.csv". Pour chaque individu, on a mesur
la taille de son bec, ainsi que celles de ses parents. Voici les variables disponibles :
id Lidentiant de lindividu.
beak_size Taille du bec.
survival Survie (voir jeu de donnes "beak_size").
mother_id Identiant de la mre.
father_id Identiant du pre.
mother_size Taille du bec de la mre.
father_size Taille du bec du pre.
3.1 Analyse de corrlation
La fonction cor calcule le coefcient de corrlation de deux vecteurs. Deux arguments peuvent tre spcis :
method prend pour valeur une chane de caractres prcisant le type de corrlation calculer. Par dfaut sa valeur
est "Pearson", mais on peut aussi calculer un coefcient de corrlation de Spearman ou de Kendall.
use permet de prciser comment traiter les valeurs manquantes :
"all.obs" (dfaut) utilise toutes les valeurs et conduit une erreur si des donnes manquent,
"complete.obs" utilise seulement les donnes compltes dans chacun des vecteurs,
"pairwise.complete.obs" utilise seulement les paires pour lesquelles les 2 donnes sont disponibles.
La fonction cor.test permet de tester si un coefcient de corrlation est signicativement diffrent de 0. Les argu-
ments sont les mmes que cor, avec en plus les arguments traditionnels des tests classiques (alternative, exact,
conf.level, cf. chapitre prcdent.).
Exercice 10 Dimorphisme sexuel et homogamie chez les Pinsons de Darwin.
Rcuprez le chier "beak_size_heritability.csv" sur le site de luniversit et copiez le dans le rpertoire stats/data.
Importez ce jeu de donnes dans R, en le stockant dans une variable nomme becs.h.
Question liminaire : y a-t-il un dimorphisme sexuel pour la taille du bec ?
Testez sil y a homogamie pour la taille du bec
1
.
3.2 Rgression linaire simple
R ne dispose pas de fonction de rgression linaire. Il dispose cependant dune panoplie doutils permettant de tra-
vailler sur le modle linaire, la rgression linaire simple en tant un cas particulier. Nous introduisons ici les outils de
modle linaire sous R, qui seront appliqus au cas de la rgression simple. Ils seront approfondis dans le chapitre suivant.
1
On rappelle que lhomogamie dsigne le fait que des individus ne sapparient pas pour la reproduction de manire alatoire, mais par ressemblance
selon un ou plusieurs caractres.
17
18 CHAPITRE 3. CORRLATION, RGRESSION SIMPLE ET ANALYSE DE VARIANCE UN FACTEUR
3.2.1 Les objets lm
Les modles linaires sont des objets de classe lm que lon cre par la fonction. . . lm( !) Cette fonction prend en
argument une formule, puis ventuellement quelques options.
Le point important est la spcication du modle par une formule. Pour le cas de la rgression linaire simple, cest
assez simple : la rgression de y par x scrit tout simplement y ~ x, ou y et x sont des variables, vecteurs pour la
rgression, mais nous verrons plus tard que x peut aussi tre un facteur. Il est noter que par dfaut, les modles incluent
toujours lintersection avec lorigine. Si on veut effectuer une rgression de type y = a.x et non y = a.x + b, il faut
explicitement enlever lintersection dans la formule : y ~ x - 1.
Les variables utiliser sont souvent dans un objet dataframe, aussi plutt que dcrire
lm(donnees[,"y"] ~ donnees[,"x"])
ce qui peut savrer fastidieux si on a beaucoup de variables, on crira
lm(y ~ x, data=donnees)
La fonction lm peut prendre plusieurs arguments, notamment :
weights un vecteur de poids pour lajustement selon les moindres carrs,
na.action une fonction pour traiter les donnes manquantes (NA = Not Available). Attention, le fonctionnement
est ici quelque peu diffrent de la fonction cor, puisquon passe une fonction et non une chane de caractres.
Plusieurs fonctions sont prdnies et doivent tre utilises :
"na.fail" (dfaut, quivalent "all.obs") renvoie une erreur si une donne manquante est rencontre,
"na.omit" enlve toutes les observations ayant au moins une donne manquante (quivalent "pairwise.complete.obs"
dans le cas de la rgression simple),
"na.exclude" est similaire la prcdente, mais marque "NA" dans les sorties de fonctions (voir section
suivante).
"na.pass" ne fait rien ! A ne pas utiliser donc. . .
subset permet de travailler sur un sous-jeu de donnes : prend en argument un vecteur (ex : c(1:10) travaille
seulement sur les 10 premires lignes, c(-2,-4) enlve les lignes 2 et 4, etc.)
3.2.2 Travail sur les modles
Plusieurs fonctions prennent en argument un objet de classe lm :
coefficients (ou simplement coef) permet de rcuprer les coefcients de la rgression, pente de la droite et
ordonne lorigine.
fitted.values (ou simplement fitted) rcupre les valeurs estimes (les y
i
, soient les points sur la droite
pour chaque x
i
).
residuals (ou simplement resid) renvoie les rsidus (les y
i
y
i
, les distances de chaque point par rapport
la droite, selon les moindre carrs de type I).
summary imprime un rsum du modle, avec coefcients et tests de signicativit.
print imprime une courte description du modle.
deviance calcule la somme des carrs rsiduelle.
predict (prend en argument un deuxime dataframe avec les mmes variables explicatives que celui utilis pour
ajuster le modle) permet de prdire des valeurs partir du modle.
AIC calcule le critre informatif dAkaike
2
. Peut prendre plusieurs modles en argument.
abline ajoute la droite de rgression un graphe.
tude sur un exemple :
Nous traiterons la question de lhomogamie chez les Pinsons (exercice 10), mais en effectuant une rgression linaire
et non un test de corrlation.
Nous construisons un modle, que lon stocke dans une variable nomme lm, puis nous en afchons le contenu :
1 model <- lm(father_size ~ mother_size, data=becs.h)
2 model
2
Akaikes Information Criterion, gal 2.ln(L) + 2K, o L est la vraisemblance du modle et K le nombre de paramtres. Voir le chapitre 4,
section "slection de modles" pour lutilisation de ce critre.
3.2. RGRESSION LINAIRE SIMPLE 19
> model
Call:
lm(formula = father_size ~ mother_size, data = becs.h)
Coefficients:
(Intercept) mother_size
3.5371 0.5958
Lafchage fournit les coefcients du modle. La droite de rgression a pour quation father_size = 0.5958mother_size+
3.5371. On peut reprsenter la droite en faisant :
3 plot(father_size ~ mother_size, data=becs.h, col="blue")
4 abline(model, col="red")
La gure 3.1 montre le rsultat produit.
Notez lutilisation de la formule dans plot : celle-ci est strictement quivalente
plot(becs.h[,"mother_size"], becs.h[,"father_size"], col="blue").
Notez bien linversion des variables : dans un cas on dclare y en fonction de x, dans lautre x puis y.
La fonction termplot est similaire abline, mais ajoute notamment les intervalles de conance, ainsi que des
histogrammes de chaque variable. On se reportera la documentation pour une description dtaille, un exemple est
montr sur la gure 3.1(d).
Validation du modle.
Nous allons vrier a posteriori les hypothses du modle.
Normalit des rsidus On peut rcuprer les rsidus grce la fonction residuals. On en fait ensuite un histo-
gramme et on teste la normalit :
5 model.res <- residuals(model)
6 hist(model.res)
7 shapiro.test(model.res)
> shapiro.test(model.res)
Shapiro-Wilk normality test
data: model.res
W = 0.972, p-value = 0.7566
Les rsidus ne sont pas signicativement diffrents dune loi normale.
La fonction gnrique plot applique un objet de type lm trace 4 graphes, que lon fait dler en appuyant sur
"entre". On peut les afcher simultanment en procdant comme suit :
8 par(mfrow = c(2, 2), oma = c(0, 0, 2, 0))
9 plot(model)
Le rsultat est montr dans la gure 3.1. On a :
En haut gauche : graphe des rsidus.
En haut droite : droite de Henry (Trac Quantile-Quantile).
En bas gauche : Scale-Location plot (ou Spread-Location plot), graphe de la racine des rsidus (moins biais que
rsidus simples).
En bas droite : distance de Cook (une longue distance indique un point mal modlis et susceptible de "tirer" la
corrlation (outlier)).
20 CHAPITRE 3. CORRLATION, RGRESSION SIMPLE ET ANALYSE DE VARIANCE UN FACTEUR
8 9 10 11
8
.
0
8
.
5
9
.
0
9
.
5
1
0
.
0
1
0
.
5
mother_size
f
a
t
h
e
r
_
s
i
z
e
(a) Utilisation de la fonction abline
Histogram of model.res
model.res
F
r
e
q
u
e
n
c
y
0.5 0.0 0.5
0
1
2
3
4
5
(b) Histogramme des rsidus
8.5 9.0 9.5 10.0 10.5

0
.
5
0
.
0
0
.
5
Fitted values
R
e
s
i
d
u
a
l
s
Residuals vs Fitted
2
1
21
2 1 0 1 2

1
0
1
2
Theoretical Quantiles
S
t
a
n
d
a
r
d
i
z
e
d

r
e
s
i
d
u
a
l
s
Normal QQ plot
2
1
21
8.5 9.0 9.5 10.0 10.5
0
.
0
0
.
5
1
.
0
1
.
5
Fitted values
S
t
a
n
d
a
r
d
i
z
e
d

r
e
s
i
d
u
a
l
s
ScaleLocation plot
2
1
21
5 10 15 20
0
.
0
0
.
2
0
.
4
0
.
6
0
.
8
1
.
0
Obs. number
C
o
o
k

s

d
i
s
t
a
n
c
e
Cooks distance plot
1
2
21
lm(formula = father_size ~ mother_size, data = becs.h)
(c) Rsultat de la fonction plot
8 9 10 11

1
.
5

1
.
0

0
.
5
0
.
0
0
.
5
1
.
0
1
.
5
mother_size
P
a
r
t
i
a
l

f
o
r

m
o
t
h
e
r
_
s
i
z
e
(d) Rsultat de la fonction termplot
FIG. 3.1 Quelques graphes obtenus sur un modle.
Homoscdasticit Le paquet lmtest contient un ensemble de tests ddis aux modles linaires. Plusieurs tests sont
disponibles, on pourra utiliser par exemple le test de Harrison-McCabe, qui a pour hyomthse nulle que les rsidus suivent
des lois normales de mme variance :
10 hmctest(model)
> hmctest(model)
Harrison-McCabe test
data: model
HMC = 0.6731, p-value = 0.863
3.2. RGRESSION LINAIRE SIMPLE 21
NB : il existe galement le test de Breusch-Pagan, fonction bptest.
Indpendance des rsidus Toujours dans le paquet lmtest, on trouvera le test de Durbin-Watson pour tester lind-
pendance des rsidus (hypothse nulle : les rsidus sont indpendants) :
11 dwtest(model)
> dwtest(model)
Durbin-Watson test
data: model
DW = 2.6265, p-value = 0.903
alternative hypothesis: true autocorrelation is greater than 0
Tests de signicativit
Aprs avoir vri les hypothses du modle linaire, on peut tester la signicativit des coefcients de la rgression,
on utilise la fonction summary :
12 summary(model)
qui produit les rsultats suivants :
> summary(model)
Call:
lm(formula = father_size ~ mother_size, data = becs.h)
Residuals:
Min 1Q Median 3Q Max
-0.61379 -0.21576 -0.04625 0.25476 0.79901
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.53715 0.85782 4.123 0.000527
***
mother_size 0.59578 0.08832 6.745 1.46e-06
***
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
Residual standard error: 0.3521 on 20 degrees of freedom
Multiple R-Squared: 0.6947, Adjusted R-squared: 0.6794
F-statistic: 45.5 on 1 and 20 DF, p-value: 1.461e-06
Dans cette sortie, on trouve plusieurs informations, plus ou moins utiles :
Un rappel de la formule du modle (Call),
Des informations sur la distribution des rsidus du modle (Residuals),
Les coefcients estims, avec leurs intervalles de conance, la valeur de la statistique et la p-value du test (Coef-
cients),
Le nombre de degrs de libert, le R
2
.
Dans notre cas on a un effet trs signicatif de la taille du bec de la mre sur la taille de bec du pre.
Question : Que reprocheriez vous lanalyse effectue ? Comment lamliorer ?
Exercice 11 Hritabilit de la taille du bec.
Que pouvez-vous dire sur lhritabilit de la taille du bec, du point de vue de la mre, puis du point de vue du pre ?
Pour les gnticiens, on rappellera que h =

2b, o b est la pente de la droite de rgression. Vriez bien toutes les
hypothses des modles.
22 CHAPITRE 3. CORRLATION, RGRESSION SIMPLE ET ANALYSE DE VARIANCE UN FACTEUR
3.3 Analyse de variance (ANOVA) un facteur
Pour terminer ce chapitre, nous allons aborder lanalyse de variance un facteur. Comme pour la rgression linaire,
il ny a pas proprement parler de fonction spcique dans R, lANOVA tant un cas particulier du modle linaire.
3.3.1 1 facteur, 2 modalits
Nous allons utiliser le jeu de donnes "beak_size.csv" :
1 becs<-read.table(file="data/beak_size.csv", header=T, sep="\t", dec=",")
2 becs[,"survival"]<-as.factor(becs[,"survival"])
3 levels(becs[,"survival"])<-c("mort", "vivant")
Nous allons tester sil y a une diffrence de taille de bec entre les pinsons morts et les pinsons vivants :
4 model.anova<-lm(beak_size~survival, data=becs)
5 model.anova
Le modle se fait exactement de la mme manire que pour la rgression. Lunique diffrence est que ici la variable
explicative (survival) est discrte et non continue, et donc code par un facteur et non un vecteur. La sortie cran du
modle linaire nest pas trs explicite, il faut utiliser la fonction anova :
6 anova(model.anova)
Analysis of Variance Table
Response: beak_size
Df Sum Sq Mean Sq F value Pr(>F)
survival 1 19.47 19.47 17.715 2.878e-05
***
Residuals 749 823.25 1.10
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
La sortie est cette fois la table dANOVA. On y voit un effet signicatif de la variable survival.
Exercice 12 Vriez les hypothses de cette analyse de variance.
3.3.2 1 facteur, plusieurs modalits
On considre le jeu de donnes "chickwts" fourni avec R et qui contient des masses de poulets en fonction de leur
alimentation (cf. gure 3.2) :
1 plot(weight~feed, data=chickwts, col="lightgray")
On veut tester sil y a un effet du type de nourriture. On construit pour cela le modle suivant :
2 model.chickwts<-lm(weight~feed, data=chickwts)
Validation du modle
Test de la normalit des rsidus : On effectue un test de Shapiro sur les rsidus du modle :
3 shapiro.test(residuals(model.chickwts))
Shapiro-Wilk normality test
data: residuals(model.chickwts)
W = 0.9862, p-value = 0.6272
On ne rejette donc pas lhypothse de normalit.
3.3. ANALYSE DE VARIANCE (ANOVA) UN FACTEUR 23
casein horsebean linseed meatmeal soybean sunflower
1
0
0
1
5
0
2
0
0
2
5
0
3
0
0
3
5
0
4
0
0
Nourriture : Traduction :
casein casine
horsebean fve
linseed graine de lin
meatmeal farine animale
soybean soja
sunower tournesol
FIG. 3.2 Boxplot du poids des poulets par type de nourriture.
Test de lhomoscdasticit : Puisque lhypothse de normalit nest pas rejete, on peut effectuer un test de Bartlett
pour tester lhomognit des variances :
4 bartlett.test(weight~feed, data=chickwts)
Bartlett test for homogeneity of variances
data: weight by feed
Bartletts K-squared = 3.2597, df = 5, p-value = 0.66
Lhypothse nulle nest pas rejete, on ne rejette donc pas lhypothse dhomoscdasticit.
Interprtation
1 anova(model.chickwts)
Analysis of Variance Table
Response: weight
Df Sum Sq Mean Sq F value Pr(>F)
feed 5 231129 46226 15.365 5.936e-10
***
Residuals 65 195556 3009
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
On voit ainsi quon a un effet trs marqu du type de nourriture. Plus prcisment, cela implique quau moins 1 des
types de nourriture est signicativement diffrent des autres. Pour afner les conclusions, on voudrait savoir quels sont
les types de nourriture qui diffrent des autres. On peut pour cela effectuer tous les tests 2 2, mais cette approche pose
cependant un problme, celui dit des tests multiples. Le problme est que si on effectue 15 tests au seuil de 5%, on a
1
_
95
100
_
15
= 54% de chance davoir rejet au moins une fois lhypothse nulle tord.
24 CHAPITRE 3. CORRLATION, RGRESSION SIMPLE ET ANALYSE DE VARIANCE UN FACTEUR
Pour remdier ce problme, on peut utiliser le test de Tukey. On utilise pour cela la fonction TukeyHSD (Tukeys
Honest Signicant Difference). Cette fonction ne fonctionne pas avec des objets lm, mais avec des objets aov, que lon
obtient de la manire suivante :
5 aov.chickwts<-aov(weight~feed, data=chickwts)
6 summary(aov.chickwts)
Df Sum Sq Mean Sq F value Pr(>F)
feed 5 231129 46226 15.365 5.936e-10
***
Residuals 65 195556 3009
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
aov (analyse of variance) est trs similaire lm, mais possde des arguments supplmentaires et surtout une sortie
optimise pour lanalyse de variance. Les rsultats sont en tout point identiques ceux de la fonction lm, ils sont seulement
prsents diffremment.
Utilisation de TukeyHSD :
7 hsd.chickwts<-TukeyHSD(aov.chickwts)
8 hsd.chickwts
Il existe aussi une fonction plot associe :
9 plot(hsd.chickwts)
Les rsultats sont montrs sur la gure 3.3. Tous les intervalles de conance qui ne recoupent pas 0 rvlent des diffrences
signicatives deffets.
On peut rcuprer les effets (grce la fonction model.tables) de chaque type de nourriture et les ordonner :
10 effects.chickwts<-model.tables(aov.chickwts)
11 sort(effects.chickwts[["tables"]][["feed"]])
feed
horsebean linseed soybean meatmeal casein sunflower
-101.10986 -42.55986 -14.88129 15.59923 62.27347 67.60681
Les rsultats du test de Tukey montre quon peut classer les aliments en trois catgories :
Horsebean c
Linseed b c
Soybean b
Meatmeal a b
Casein a
Sunower a
3.3.3 LANOVA non-paramtrique : le test de Kruskal-Wallis
La fonction kruskal.test permet deffectuer le test de somme des rangs de Kruskall-Wallis. Les arguments de la
fonction sont les mmes que pour lm et aov :
12 kruskal.test(weight~feed, data=chickwts)
Kruskal-Wallis rank sum test
data: weight by feed
Kruskal-Wallis chi-squared = 37.3427, df = 5, p-value = 5.113e-07
3.4. RGRESSION NON-LINAIRE SIMPLE 25
200 100 0 100 200
s
u
n
f
l
o
w
e
r

s
o
y
b
e
a
n
s
o
y
b
e
a
n

l
i
n
s
e
e
d
m
e
a
t
m
e
a
l

h
o
r
s
e
b
e
a
n
m
e
a
t
m
e
a
l

c
a
s
e
i
n
95% familywise confidence level
Differences in mean levels of feed
> hsd.chickwts
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = weight ~ feed, data = chickwts)
$feed
diff lwr upr
horsebean-casein -163.383333 -232.346876 -94.41979 (
*
)
linseed-casein -104.833333 -170.587491 -39.07918 (
*
)
meatmeal-casein -46.674242 -113.906207 20.55772
soybean-casein -77.154762 -140.517054 -13.79247 (
*
)
sunflower-casein 5.333333 -60.420825 71.08749
linseed-horsebean 58.550000 -10.413543 127.51354
meatmeal-horsebean 116.709091 46.335105 187.08308 (
*
)
soybean-horsebean 86.228571 19.541684 152.91546 (
*
)
sunflower-horsebean 168.716667 99.753124 237.68021 (
*
)
meatmeal-linseed 58.159091 -9.072873 125.39106
soybean-linseed 27.678571 -35.683721 91.04086
sunflower-linseed 110.166667 44.412509 175.92082 (
*
)
soybean-meatmeal -30.480519 -95.375109 34.41407
sunflower-meatmeal 52.007576 -15.224388 119.23954
sunflower-soybean 82.488095 19.125803 145.85039 (
*
)
FIG. 3.3 Intervalles de conance de Tukey.
3.4 Rgression non-linaire simple
R permet galement dajuster nimporte quel modle des donnes, linaire ou non, selon le critre des moindres
carrs I. On utilise pour cela la fonction nls (non-linear least squares) au lieu de lm.
Linterface de la fonction nls est trs similaire la fonction lm, mais la formule doit prciser la fonction ajuster,
avec les paramtres adquats. Pour effectuer une rgression de type puissance, on crira par exemple y ~ a
*
x^b, y et
x tant les variables, et a et b les paramtres. On prcisera de plus la liste des paramtres ainsi que leurs valeurs initiales
par le paramtre start, par exemple nls(y ~a
*
x^b, start=list(a=1, b=1)). Plusieurs fonctions sont dj
dnies pour cet usage, voir tableau 3.1. Ces fonctions commencent toutes par SS (SelfStart), ce qui veut dire quil nest
pas ncessaire de prciser la liste des paramtres avec loption start dans nls.
La plupart des fonctions vues prcdemment fonctionnent galement avec les objets de type nls.
Un exemple : cintique dune enzyme. Nous allons utiliser un jeu de donnes fourni avec R : Puromycin. Consulter
laide pour le dtail des variables :
1 help(Puromycin}
Nous allons ajuster un modle de Michaelis-Menten an de dterminer la constante cintique de lenzyme :
2 Pur <- Puromycin[Puromycin[,"state"]=="treated",1:2]
3 plot(Pur)
4 model.nls <- nls(rate ~ SSmicmen(conc, Vm, K), data=Pur)
5 summary(model.nls)
6 hist(residuals(model.nls))
Formula: rate ~ SSmicmen(conc, Vm, K)
Parameters:
Estimate Std. Error t value Pr(>|t|)
Vm 2.127e+02 6.947e+00 30.615 3.24e-11
***
K 6.412e-02 8.281e-03 7.743 1.57e-05
***
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
26 CHAPITRE 3. CORRLATION, RGRESSION SIMPLE ET ANALYSE DE VARIANCE UN FACTEUR
Fonction : Fonction Math : Paramtres : Fonction R : Paramtres :
Fonction lo-
gistique (Ve-
rhulst)
f(x) =
K
1+e
r(x)
K = capacit limite, r =
taux de croissance et =
labscisse du point din-
exion
SSlogis Asym = K = Asymp-
tote, xmid = = posi-
tion du point dinexion
et scale =
1
r
= chelle
Fonction de
croissance de
Gompertz
f(x) = Ke
e
r(x)
Mmes paramtres que
pour la logistique
SSgompertz A = K = Valeur asymp-
totique, b2 = e
r
=
xe lordonne lori-
gine (b
2
= 1 f(0) =
0), b3 =
1
e
r
= paramtre
dchelle
Fonction de
croissance de
Weibull
f(x) = ( )e
(x)

est la valeur de
lasymptote suprieure,
lasymptote inf-
rieure, un paramtre
dchelle et contrle
le point dinexion.
SSweibull Asym = , Drop =
, pwr = et lrc =
ln()
Cintique
de Michalis-
Menten
3
f(x) =
V
m
x
K+x
V
m
= Vitesse maximale,
K = constante cintique
de lenzyme
SSmicmen Vm = V
m
, K = K
TAB. 3.1 Quelques fonctions prdnies.
Residual standard error: 10.93 on 10 degrees of freedom
Correlation of Parameter Estimates:
Vm
K 0.7651
Lhistogramme des rsidus est montr gure 3.4(a).
Il nexiste par contre pas dquivalent la fonction abline pour le cas des modles non-linaires. Pour tracer le
courbe thorique, on peut utiliser la fonction curve qui permet de tracer un courbe, sachant son quation que lon passe
en argument :
7 plot(rate~conc, data=Pur, col="blue")
8 co <- coefficients(model.nls)
9 curve(SSmicmen(x, Vm=co["Vm"], K=co["K"]), add=TRUE, col="red")
Le rsultat est montr sur la gure 3.4(b).
Exercice 13 volution dmographique
1. Rcuprez le jeu de donnes PopJanv.txt et importez les dans R. Ce jeu de donnes contient la population au
1er janvier de diffrents pays (source http ://www.ined.fr/bdd/demogr/progr3.php ?lan=F) depuis 1950.
2. On se propose dtudier plusieurs modles dmographiques. Choisissez un pays, reprsentez graphiquement lvo-
lution de sa population et ajustez les modles :
linaire,
Malthusien (exponentiel),
de Verhultz (logistique),
de Gompertz.
(NB : comptez les annes depuis 1950 pour viter un dbordement de capacit, i.e. 1950 devient 0, 1951 devient 1,
etc.) Quel modle dcrit le mieux les donnes ?
3. Quelle sera la taille de la population de ce pays au 1er janvier 2050 ? Comparez les prdictions des modles.
3
Cintique utilise en enzymologie
3.4. RGRESSION NON-LINAIRE SIMPLE 27
Histogram of residuals(model.nls)
residuals(model.nls)
F
r
e
q
u
e
n
c
y
20 10 0 10 20 30
0
1
2
3
4
(a) Histogramme des rsidus
0.0 0.2 0.4 0.6 0.8 1.0
5
0
1
0
0
1
5
0
2
0
0
conc
r
a
t
e
(b) Cintique estime
FIG. 3.4 Exemple de rgression non-linaire : cintique dune enzyme traite la Puromycine.
28 CHAPITRE 3. CORRLATION, RGRESSION SIMPLE ET ANALYSE DE VARIANCE UN FACTEUR
Chapitre 4
Le modle linaire : rgression multiple,
ANOVA plusieurs facteurs, analyse de
covariance et slection de modle
Tous les modles sont faux, mais certains sont utiles
George Box
Dans ce TP nous allons voir comment effectuer des rgressions multiples, des ANOVAs plusieurs facteurs et des
ANCOVAs avec R. Ces techniques sont des cas particuliers de modles linaires, et sont traites de manire trs similaire
par R. Nous verrons donc tout dabord comment spcier un modle linaire dans R, puis nous verrons comment faire
des rgressions, ANOVAs et ANCOVAs.
4.1 Spcier un modle dans R
Un modle est compos de paramtres (on parle aussi deffets) et de variables. Lquation dun modle relie les
paramtres aux variables. Lquation contient en gnral 2 parties, la partie droite contient les variables explicatives (ou
dpendantes), la partie gauche les variables expliquer (ou indpendantes). La plupart des logiciels de statistiques (SAS,
GLIM, etc.) reprsentent donc des modles par des quations, R nchappant pas la rgle (la syntaxe utilise cet gard
est quasiment identique entre ces logiciels). Dans R, les variables sont des variables cres par lutilisateur ou bien des
colonnes dun dataframe, et lquation est un objet formule que nous avons dj rencontr brivement (cf chapitre 2 et 3).
La table 4.1 donne un aperu de la syntaxe utilise.
A+B effet de A + effet de B
A:B interaction entre A et B
A
*
B A+B+A:B
A/B A+A:B
^n toutes les interactions dordre n
(A+B)^2 A
*
B
(A+B+C)^2 A+B+C+A:B+B:C+A:C
(A+B+C)^3 A+B+C+A:B+B:C+A:C+A:B:C
A-1 effet de A sans lintercept
(A+B)^2-B A+A:B
TAB. 4.1 Oprateurs de formules dans R.
Exercice 14 Quiz
1. Soient quatre variables A, B, C et D. crivez le plus succinctement possible les modles suivant :
m1 = les effets de chaque variable
m2 = les effets de chaque variable + toutes les interactions 2 2
m3 = les effets de chaque variable + toutes les interactions possibles
29
30 CHAPITRE 4. LE MODLE LINAIRE
m4 = tous les effets jusqu lordre 3 inclus
2. A quel modle correspond A + A^2 + A^3 + A^4?
3. A quel modle correspond A/B/C/D?
4.2 tude de variables quantitatives : La rgression linaire multiple
Elle fonctionne exactement comme la rgression linaire simple ! Il suft simplement de lui passer la liste des variables
explicatives dans la formule.
Exercice 15 Qualit de lair New-Yorkais
1. Charger le jeu de donnes "airquality" fourni avec R.
2. Estimer les trois rgressions suivantes :
Taux dozone en fonction de la temprature, du vent et de lindice solaire.
Idem avec toutes les interactions doubles.
Idem avec toutes les interactions.
Dans chaque cas, effectuer un diagnostic et corriger en consquence.
3. Comparer les trois rgressions et discuter.
4.3 tude de variables qualitatives : Lanalyse de variance plusieurs facteurs
Nous allons tudier un jeu de donnes contenant des temps dintoxication au cyanure, en fonction de la temprature,
de la concentration en cyanure, et de de la concentration en oxygne. Rcuprez le chier Cyanure.csv et importez-le
dans R :
1 cyanure<-read.table("data/Cyanure.csv", header=T, sep="\t")
Ce chier contient quatre variables :
1. "Temp" : temprature,
2. "O2" : concentration en O
2
,
3. "CN" : concentration en CN

,
4. "Intox.Tps" : temps dintoxication.
Dans un premier temps, nous allons considrer chaque variable comme un facteur :
2 cyanure[,"Temp"] <- as.factor(cyanure[,"Temp"])
3 cyanure[,"CN"] <- as.factor(cyanure[,"CN"])
4 cyanure[,"O2"] <- as.factor(cyanure[,"O2"])
La fonction replications permet de tester combien dobservations sont disponibles pour chaque facteur. Elle
prend en argument une formule (seulement la partie droite) :
5 replications(~Temp+CN+O2, cyanure)
Temp CN O2
15 9 15
On a 15 observations pour chacun des 3 niveaux de temprature et des 3 niveaux de concentration en O
2
, 9 observations
pour chacune des 5 concentrations en CN

. Les effectifs pour les interactions doubles :


6 replications(~Temp:CN + Temp:O2 + CN:O2, cyanure)
$"Temp:CN"
CN
Temp 0.16 0.8 4 20 100
5 3 3 3 3 3
15 3 3 3 3 3
25 3 3 3 3 3
4.3. TUDE DE VARIABLES QUALITATIVES : LANALYSE DE VARIANCE PLUSIEURS FACTEURS 31
$"Temp:O2"
O2
Temp 1.5 3 9
5 5 5 5
15 5 5 5
25 5 5 5
$"CN:O2"
O2
CN 1.5 3 9
0.16 3 3 3
0.8 3 3 3
4 3 3 3
20 3 3 3
100 3 3 3
Et les effectifs pour linteraction triple :
7 replications(~Temp:CN:O2, cyanure)
$"Temp:CN:O2"
, , O2 = 1.5
CN
Temp 0.16 0.8 4 20 100
5 1 1 1 1 1
15 1 1 1 1 1
25 1 1 1 1 1
, , O2 = 3
CN
Temp 0.16 0.8 4 20 100
5 1 1 1 1 1
15 1 1 1 1 1
25 1 1 1 1 1
, , O2 = 9
CN
Temp 0.16 0.8 4 20 100
5 1 1 1 1 1
15 1 1 1 1 1
25 1 1 1 1 1
On a une mesure par concentration et temprature.
NB : on aurait pu tout obtenir dun coup en tapant :
8 replications(~(Temp+CN+O2)^3, cyanure)
On peut faire une premire table dANOVA en prenant en compte seulement les effets simples :
9 m2<-lm(Intox.Tps ~ Temp + O2 + CN, cyanure)
10 anova(m2)
Analysis of Variance Table
Response: Intox.Tps
32 CHAPITRE 4. LE MODLE LINAIRE
Df Sum Sq Mean Sq F value Pr(>F)
Temp 2 57116 28558 101.9688 1.485e-15
***
O2 2 3759 1879 6.7105 0.003334
**
CN 4 55545 13886 49.5824 3.690e-14
***
Residuals 36 10082 280
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
Tous les effets sont signicatifs, mais y a-t-il des interactions ?
11 m3<-lm(Intox.Tps ~ (Temp + O2 + CN)^2, cyanure)
12 anova(m3)
Analysis of Variance Table
Response: Intox.Tps
Df Sum Sq Mean Sq F value Pr(>F)
Temp 2 57116 28558 441.5058 1.007e-14
***
O2 2 3759 1879 29.0554 4.720e-06
***
CN 4 55545 13886 214.6823 1.109e-13
***
Temp:O2 4 97 24 0.3752 0.8229641
Temp:CN 8 3686 461 7.1229 0.0004605
***
O2:CN 8 5265 658 10.1737 5.460e-05
***
Residuals 16 1035 65
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
La triple interaction ne peut tre teste car il ny a pas de rplication. Seule linteraction Temp:O2 nest pas signicative,
on peut reprsenter ces interactions grce la fonction interaction.plot. Cette fonction prend en argument un
facteur qui sera mis en abscisse (x.factor), un facteur de trace (trace.factor), dont chaque modalit dnira une
droite, et un vecteur de rponse (response), qui sera mis en ordonne :
13 interaction.plot(cyanure[,"Temp"], cyanure[,"O2"], cyanure[,"Intox.Tps"])
14 interaction.plot(cyanure[,"O2"], cyanure[,"Temp"], cyanure[,"Intox.Tps"])
15 interaction.plot(cyanure[,"CN"], cyanure[,"Temp"], cyanure[,"Intox.Tps"])
16 interaction.plot(cyanure[,"Temp"], cyanure[,"CN"], cyanure[,"Intox.Tps"])
17 interaction.plot(cyanure[,"O2"], cyanure[,"CN"], cyanure[,"Intox.Tps"])
18 interaction.plot(cyanure[,"CN"], cyanure[,"O2"], cyanure[,"Intox.Tps"])
[name=sb] Les graphes sont reprsents sur la gure 4.1.
4.3.1 Effectifs non-balancs
En toute logique, lappel la fonction anova devrait renvoyer la mme table danalyse de variance quel que soit
lordre dans lequel les facteurs explicatifs sont indiqus dans le modle. En pratique cela nest vrai que lorsque les
effectifs sont balancs .
Prenons le cas dune ANOVA deux facteurs croiss Aet B. Lorsque pour chaque combinaison des facteurs Aet B un
mme nombre dindividus n ont t mesurs, le jeu de donnes est dit balanc. Dans ce cas l anova(lm(Y ~A
*
B))
et anova(lm(Y ~B
*
A)) produisent le mme rsultat. Si au contraire le nombre de mesures ralises varie selon la
combinaison des deux facteurs, anova(lm(Y ~A
*
B)) et anova(lm(Y ~B
*
A)) produisent deux tables dANOVA
diffrentes.
La raison de cette diffrence est que R calcule les carrs des carts en comparant squentiellement des modles o
les facteurs sont ajouts un un, dans lordre dintroduction dans le modle. Dans lappel anova(lm(Y ~A
*
B)), la
comparaison entre 1 et 1+A permet de calculer la variation due A, puis la comparaison 1+A+B celle due B. Dans
lappel anova(lm(Y ~B
*
A)) la dispersion due A est calcule en comparaison les modles 1 + B et 1 + B + A.
Ces deux estimations de la dispersion due A ne sont gales que si les effectifs sont balancs.
Pour rsoudre ce problme, on doit estimer la dispersion due A en comparant le modle avec A au modle complet
dont le facteur Aa t retir. En procdant de la sorte lestimation des dispersions ne dpend plus de lordre dintroduction.
Un premire faon de procder est de calculer les dispersions une une, peu prs comme on la vu pour la slection
de modle. Pour tester leffet du facteur A on procderait donc de la faon suivante :
4.3. TUDE DE VARIABLES QUALITATIVES : LANALYSE DE VARIANCE PLUSIEURS FACTEURS 33
6
0
8
0
1
0
0
1
2
0
1
4
0
1
6
0
Temp
m
e
a
n

o
f


I
n
t
o
x
.
T
p
s
5 15 25
O2
9
3
1.5
6
0
8
0
1
0
0
1
2
0
1
4
0
1
6
0
O2
m
e
a
n

o
f


I
n
t
o
x
.
T
p
s
1.5 3 9
Temp
5
15
25
5
0
1
0
0
1
5
0
2
0
0
Temp
m
e
a
n

o
f


I
n
t
o
x
.
T
p
s
5 15 25
CN
0.16
0.8
4
20
100
5
0
1
0
0
1
5
0
2
0
0
CN
m
e
a
n

o
f


I
n
t
o
x
.
T
p
s
0.16 0.8 4 20 100
Temp
5
15
25
6
0
8
0
1
0
0
1
2
0
1
4
0
1
6
0
1
8
0
2
0
0
O2
m
e
a
n

o
f


I
n
t
o
x
.
T
p
s
1.5 3 9
CN
0.16
0.8
4
20
100
6
0
8
0
1
0
0
1
2
0
1
4
0
1
6
0
1
8
0
2
0
0
CN
m
e
a
n

o
f


I
n
t
o
x
.
T
p
s
0.16 0.8 4 20 100
O2
9
3
1.5
FIG. 4.1 Interactions 2 2 entre les variables "Temp", "O2" et "CN". Les interactions sont dautant plus fortes que les
droites ne sont pas parallles.
34 CHAPITRE 4. LE MODLE LINAIRE
1 m1 <- lm(Y ~ B)
2 m2 <- lm(Y ~ B + A)
3 anova(m1,m2)
et pour tester celui du facteur B
4 m3 <- lm(Y ~ A)
5 anova(m3,m2)
Une seconde approche pour rsoudre ce problme est dutiliser la fonction Anova du paquet car (Companion to
Applied Regression). Cette fonction calcule les sommes de carrs de type II et III (pour faire un parallle avec la termi-
nologie du logiciel SAS) qui ne dpendent pas de lordre dintroduction des facteurs dans le modle. Les calculs raliss
sont en fait peu prs quivalents ce qui est prsent ci-dessus. Cette fonction peut tre applique aux objets produits
par lm aussi bien qu ceux produit par glm.
4.3.2 ANOVA hirarchise
Nous allons l encore utiliser un jeu de donnes tir du Biometry [2] (p 278). On a mesur la longueur de laile gauche
de femelles moustiques (Aedes intrudens), leves dans 4 cages diffrentes. Pour chaque femelle, on a effectu 2 mesures
indpendantes. Rcuprez le chier correspondant ("Aedes.csv") et importez-le dans R :
1 aedes<-read.table("data/Aedes.csv", header=T)
Ce jeu de donnes contient 4 variables :
1. "Cage" cage dlevage,
2. "Femelle" identiant de la femelle,
3. "Mesure" mesure effectue,
4. "LWL" longueur de laile gauche.
Les trois premires sont des facteurs :
2 aedes[,"Cage"]<-as.factor(aedes[,"Cage"])
3 aedes[,"Femelle"]<-as.factor(aedes[,"Femelle"])
4 aedes[,"Mesure"]<-as.factor(aedes[,"Mesure"])
Ajustement du modle : le facteur Mesure nest pas pris en compte, on considrera les 2 mesures comme 2 rptitions.
Ici, leffet femelle est embot dans celui de cage : la femelle numro 1 nest pas la mme dans chaque cage ! On ne
testera donc pas leffet "femelle n1", mais les effets "femelle n1 dans cage 1", femelle n1 dans cage 2", etc. Un modle
hirarchis se dclare de la faon suivante :
5 aedes.lm<-lm(LWL~Cage/Femelle, data=aedes)
Ce qui se lit : LWL en fonction de Femelle dans Cage. Ce modle est quivalent LWL~Cage+Cage:Femelle. Lana-
lyse des rsultats est ensuite la mme que pour lANOVA croise :
6 anova(aedes.lm)
Analysis of Variance Table
Response: LWL
Df Sum Sq Mean Sq F value Pr(>F)
Cage 2 665.68 332.84 255.70 1.452e-10
***
Cage:Femelle 9 1720.68 191.19 146.88 6.981e-11
***
Residuals 12 15.62 1.30
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
4.4. VARIABLES QUANTITATIVES ET QUALITATIVES : LANALYSE DE COVARIANCE. 35
4.3.3 Effet xe/alatoire
Les tests effectus dans la section prcdente sont ceux du modle I (effet xe). La notion de xe/alatoire nintervient
pas dans lajustement du modle, seulement dans le calcul de la table dANOVA. Le test correspondant a un effet alatoire
de Femelle sont :
7 Finter <- 332.84/191.19
8 Finter
[1] 1.740886
9 pf(Finter, 2, 9, lower.tail=F)
[1] 0.2295346
La fonction aov (cf chapitre prcdent) permet dobtenir directement ce rsultat. Elle accepte un argument supplmentaire
qui spcie le ou les niveau(x) d"erreur" contre lequel on doit effectuer le test :
10 aedes.aov<-aov(LWL ~ Cage + Error(Cage:Femelle), aedes)
11 summary(aedes.aov)
Error: Cage:Femelle
Df Sum Sq Mean Sq F value Pr(>F)
Cage 2 665.68 332.84 1.7409 0.2295
Residuals 9 1720.68 191.19
Error: Within
Df Sum Sq Mean Sq F value Pr(>F)
Residuals 12 15.6200 1.3017
Exercice 16 Rendement de Luzerne.
Etudiez le jeu de donnes Alfalfa, fourni avec R (paquetage nlme). Le plan exprimental est le suivant : On a 6 blocs
contenant chacun 4 sous-blocs. On dispose de 4 varits de luzerne pour lesquelles on veut mesurer le rendement. Les
quatre espces on t assignes alatoirement aux quatre sous-blocs, pour chacun des 6 blocs. Les rendements ont t
mesurs 4 priodes de lanne.
Que pouvez vous dire sur le rendement de la luzerne ?
4.4 Variables quantitatives et qualitatives : lanalyse de covariance.
LANCOVA est galement un cas particulier de modle linaire, avec cette fois une variable qualitative et une quanti-
tative. Elle seffectue donc de manire similaire lANOVA et la rgression linaire. Voici un exemple tir du Biometry
[2] (p505). Il sagit dune tude de potentiel de membrane en fonction de diffrents types dlectrolytes diffrentes
concentrations. Rcuprez le chier MembranePotential.csv et importez-le dans R :
1 mp<-read.table("data/MembranePotential.csv", header=T, dec=",")
On peut reprsenter les corrlations pour chaque type dlectrolyte avec la fonction coplot, qui prend une formule en
argument :
2 coplot(logActivity ~ MeanMembranePotential|Cation, mp)
On peut aussi tout reprsenter sur un mme graphe avec des gurs diffrents :
3 plot(logActivity ~ MeanMembranePotential, pch=as.numeric(Cation), mp)
Les graphes sont reprsents sur la gure 4.2.
4 m.mp<-lm(logActivity ~ MeanMembranePotential
*
Cation, mp)
5 summary(m.mp)
36 CHAPITRE 4. LE MODLE LINAIRE

1
0
0
1
0
2
0
3
0
4
0
1.5 1.0 0.5 0.0 0.5
1.5 1.0 0.5 0.0 0.5

1
0
0
1
0
2
0
3
0
4
0
MeanMembranePotential
l
o
g
A
c
t
i
v
i
t
y
CaK
CaLi
CaNa
SrNa
Given : Cation
1.5 1.0 0.5 0.0 0.5

1
0
0
1
0
2
0
3
0
4
0
MeanMembranePotential
l
o
g
A
c
t
i
v
i
t
y
FIG. 4.2 ANCOVA : graphes. Les droites sur le graphe de droite sont les droites de rgression. Aucune diffrence de
pente signicative na t trouve, par contre les ordonnes lorigine sont signicativement diffrentes.
Call:
lm(formula = logActivity ~ MeanMembranePotential
*
Cation, data = mp)
Residuals:
Min 1Q Median 3Q Max
-3.0736 -1.1065 0.1687 1.0612 2.7338
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 24.7616 0.8393 29.504 2.69e-13
***
MeanMembranePotential 21.3941 0.8798 24.316 3.19e-12
***
CationCa-Li -21.1696 1.4504 -14.595 1.93e-09
***
CationCa-Na -7.9619 1.2046 -6.609 1.69e-05
***
CationSr-Na 5.9383 1.1995 4.950 0.000265
***
MeanMembranePotential:CationCa-Li -0.7282 2.4048 -0.303 0.766830
MeanMembranePotential:CationCa-Na -0.3255 1.5012 -0.217 0.831707
MeanMembranePotential:CationSr-Na -0.5266 1.2486 -0.422 0.680085
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
Residual standard error: 1.908 on 13 degrees of freedom
Multiple R-Squared: 0.9921, Adjusted R-squared: 0.9879
F-statistic: 234.1 on 7 and 13 DF, p-value: 1.210e-12
6 anova(m.mp)
Analysis of Variance Table
Response: logActivity
Df Sum Sq Mean Sq F value Pr(>F)
MeanMembranePotential 1 4197.0 4197.0 1152.7173 4.431e-14
***
Cation 3 1768.6 589.5 161.9151 1.521e-10
***
4.5. SELECTION DE MODLES 37
MeanMembranePotential:Cation 3 0.8 0.3 0.0729 0.9735
Residuals 13 47.3 3.6
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
On a un effet signicatif du potentiel membranaire et de la nature de llectrolyte, mais pas dinteraction. Autrement dit, la
pente de la droite est la mme pour chaque lectrolyte, mais les ordonnes lorigine diffrent. On peut tracer ces droites
sur le deuxime graphe (cf. gure 4.2).
7 co<-coef(m.mp)
8 co
(Intercept) MeanMembranePotential
24.7615556 21.3940534
CationCa-Li CationCa-Na
-21.1696382 -7.9618774
CationSr-Na MeanMembranePotential:CationCa-Li
5.9383122 -0.7281893
MeanMembranePotential:CationCa-Na MeanMembranePotential:CationSr-Na
-0.3254982 -0.5266126
9 abline(co[1], co["MeanMembranePotential"])
10 abline(co[1]+co["CationCa-Li"], co["MeanMembranePotential"])
11 abline(co[1]+co["CationSr-Na"], co["MeanMembranePotential"])
12 abline(co[1]+co["CationCa-Na"], co["MeanMembranePotential"])
4.5 Selection de modles
Nous avons vu au chapitre 3 que R peut calculer lAIC dun modle et faire ainsi des comparaisons. Les fonctions
add1 et drop1 permettent respectivement dajouter ou denlever un effet du modle et de tester lapport par rapport au
modle initial. Deux tests sont possibles : F et
2
, se reporter la documentation. On peut ainsi tester tous les effets et
garder le modle "minimal" qui offre le meilleur compromis entre "ajustement aux donnes" et "nombre de paramtres".
La fonction step permet de slectionner automatiquement un tel modle. Exemple avec le jeu de donnes cyanure :
1 drop1(m3, ~O2:CN, test="Chisq")
Single term deletions
Model:
Intox.Tps ~ (Temp + O2 + CN)^2
Df Sum of Sq RSS AIC Pr(Chi)
<none> 1034.9 199.1
O2:CN 8 5264.5 6299.5 264.4 2.706e-14
***
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
2 drop1(m3, ~Temp:CN, test="Chisq")
Single term deletions
Model:
Intox.Tps ~ (Temp + O2 + CN)^2
Df Sum of Sq RSS AIC Pr(Chi)
<none> 1034.9 199.1
Temp:CN 8 3685.9 4720.8 251.4 1.073e-11
***
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
38 CHAPITRE 4. LE MODLE LINAIRE
3 drop1(m3, ~Temp:O2, test="Chisq")
Single term deletions
Model:
Intox.Tps ~ (Temp + O2 + CN)^2
Df Sum of Sq RSS AIC Pr(Chi)
<none> 1034.93 199.09
Temp:O2 4 97.07 1132.00 195.13 0.4014
Il apparat quenlever linteraction Temp:O2 ne diminue pas signicativement lajustement du modle. On peut enlever
ce terme du modle avec la fonction update.
4 new.m3<-update(m3, . ~ . - Temp:O2)
5 anova(new.m3)
Analysis of Variance Table
Response: Intox.Tps
Df Sum Sq Mean Sq F value Pr(>F)
Temp 2 57116 28558 504.5595 < 2.2e-16
***
O2 2 3759 1879 33.2049 4.412e-07
***
CN 4 55545 13886 245.3422 < 2.2e-16
***
Temp:CN 8 3686 461 8.1402 7.145e-05
***
O2:CN 8 5265 658 11.6266 5.096e-06
***
Residuals 20 1132 57
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
La mme chose automatiquement avec la fonction step :
6 step(m3)
Start: AIC= 199.09
Intox.Tps ~ (Temp + O2 + CN)^2
Df Sum of Sq RSS AIC
- Temp:O2 4 97.1 1132.0 195.1
<none> 1034.9 199.1
- Temp:CN 8 3685.9 4720.8 251.4
- O2:CN 8 5264.5 6299.5 264.4
Step: AIC= 195.13
Intox.Tps ~ Temp + O2 + CN + Temp:CN + O2:CN
Df Sum of Sq RSS AIC
<none> 1132.0 195.1
- Temp:CN 8 3685.9 4817.9 244.3
- O2:CN 8 5264.5 6396.5 257.1
Call:
lm(formula = Intox.Tps ~ Temp + O2 + CN + Temp:CN + O2:CN, data = cyanure)
Coefficients:
(Intercept) Temp15 Temp25 O23 O29
201.00 -76.33 -122.67 43.00 72.00
CN0.8 CN4 CN20 CN100 Temp15:CN0.8
4.6. NON ORTHOGONALIT 39
-48.00 -66.78 -70.44 -109.11 25.67
Temp25:CN0.8 Temp15:CN4 Temp25:CN4 Temp15:CN20 Temp25:CN20
31.33 25.67 37.67 34.33 43.00
Temp15:CN100 Temp25:CN100 O23:CN0.8 O29:CN0.8 O23:CN4
45.67 66.67 -39.00 -51.00 -36.00
O29:CN4 O23:CN20 O29:CN20 O23:CN100 O29:CN100
-63.67 -40.00 -73.67 -32.00 -60.67
La fonction renvoie le modle le plus simple retenu. Il est possible de paramtrer les critres de slection (voir documen-
tation de la fonction).
Exercice 17 Fertilit des Suisses
tudier le jeu de donnes "swiss" fourni avec R. Quels facteurs expliquent le mieux la fertilit des Suisses ?
4.6 Non orthogonalit
Des problmes statistiques surviennent sil y a plus dun niveau derreur et que les donnes ne sont pas balances (=
galement distribues dans chaque niveau = mme nombre de rptitions dans chaque cas = plan orthogonal). On peut
vrier cela avec la commande replications.
4.6.1 Modle I
Les moindres carrs de type 1 conduisent des tests errons lorsque les donnes ne sont (trs) dsquilibres. On
utilise alors des moindres carrs de type 2 ou 3, selon la notation utilise par le logiciel SAS. Le paquetage car dispose
dune fonction Anova qui fonctionne comme anova, mais en permettant de calculer des carrs moyens de type 2 et 3.
4.6.2 Modle II
Si on a des effets alatoires, il faut utiliser le paquetage nlme. Le paquetage nlme est ddi lanalyse des modles
mixtes, cest dire ayant des effets xes et alatoires. Il peut tre utilis pour ajuster des modles purement alatoires,
mais ne permet pas dajuster des modles xes (on utilise pour cela lm). nlme possde principalement 2 fonctions, lme et
nlme, lune pour les modles linaires, lautre pour les modles non-linaires. Son fonctionnement est assez complexe,
voici comment reproduire lexemple ci-dessus avec lme. Le fonctionnement est identique si le modle nest pas balanc.
12 library(nlme) #Charge la bibliothque
13 aedes.lme<-lme(LWL~1, random=~1|Cage/Femelle, data=aedes)
lme prend en argument une formule, comme lm, mais qui contient seulement les effets xes (ici aucun). Les variables
alatoires sont prcises dans largument random. La formule est particulire : elle sinterprte comme ceci : un effet
alatoire par niveau, les niveaux tant dnis par "Cage" et "Femelle dans Cage". On peut afcher la table dANOVA de
ce modle :
14 anova(aedes.lme)
numDF denDF F-value p-value
(Intercept) 1 12 321.7538 <.0001
La table nest calcule que pour les effets xes, donc ici, seulement lintercept. tant donn que lme est crite pour le cas
gnral o les effectifs ne sont pas balancs, anova(aedes.lme) ne donne pas les tests pour les effets alatoires (il
nexiste pas de test exact dans ce cas). On peut cependant faire de la comparaison de modle.
Considrons tout dabord le cas dun modle I :
15 aedes.lm1<-update(aedes.lm, .~.-Cage:Femelle)
16 aedes.lm2<-update(aedes.lm1, .~.-Cage)
La fonction update construit un modle partir dun autre, elle prend en argument un objet lm (ou assimil) et une
formule dcrivant le nouveau modle. Dans cette formule, on peut utiliser le caractre . qui signie "mme chose que la
formule dorigine". Ici aedes.lm1 est identique aedes.lm sans linteraction, et aedes.lm2 contient seulement lintercept.
On peut comparer les modles avec la fonction anova :
40 CHAPITRE 4. LE MODLE LINAIRE
17 anova(aedes.lm, aedes.lm1, aedes.lm2)
Analysis of Variance Table
Model 1: LWL ~ Cage/Femelle
Model 2: LWL ~ Cage
Model 3: LWL ~ 1
Res.Df RSS Df Sum of Sq F Pr(>F)
1 12 15.62
2 21 1736.30 -9 -1720.68 146.88 6.981e-11
***
3 23 2401.97 -2 -665.68 255.70 1.452e-10
***
A comparer avec le rsultat de
18 anova(aedes.lm)
Analysis of Variance Table
Response: LWL
Df Sum Sq Mean Sq F value Pr(>F)
Cage 2 665.68 332.84 255.70 1.452e-10
***
Cage:Femelle 9 1720.68 191.19 146.88 6.981e-11
***
Residuals 12 15.62 1.30
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
Vu que seuls des effets xes sont en jeu, la fonction anova a utilis un test F pour comparer les modles. On aurait pu la
forcer faire un
2
sur modles embots en ajoutant largument test="Chisq".
On peut procder de la sorte pour tester les effets alatoires dun modle lme :
19 aedes.lme1<-update(aedes.lme, random=~1|Cage)
On compare les modles :
20 anova(aedes.lme, aedes.lme1, aedes.lm2)
Model df AIC BIC logLik Test L.Ratio p-value
aedes.lme 1 4 138.5076 143.0495 -65.25378
aedes.lme1 2 3 178.7793 182.1858 -86.38964 1 vs 2 42.27172 <.0001
aedes.lm2 3 2 179.3659 181.6369 -87.68296 2 vs 3 2.58663 0.1078
Le facteur "Cage" nest pas signicatif, alors que "Femelle" oui. Les conclusions sont donc identiques celles obtenues
par aov, mais les tests sont diffrents : en effet lme ne permettant pas de faire un test F, cest un test de
2
sur modles
embots qui est effectu.
4.7 Autres modles
4.7.1 Modle linaire gnralis
R permet galement dajuster des modles linaires gnraliss, via la fonction glm. Cette fonction est identique
lm, mais prend en plus en argument un terme spciant la famille considre, savoir la distribution des rsidus. Il est
galement possible de faire des modles dits quasi-likelihood sans homoscdasticit (se reporter la doc et au tutoriel
de R).
Nous prsentons ici le cas de la rgression dite "binomiale". Reprenons le jeu de donnes "becs", et effectuons la
rgression de la survie en fonction de la taille du bec.
1 becs<-read.table(file="data/beak_size.csv", header=TRUE, sep="\t", dec=",")
4.7. AUTRES MODLES 41
La survie est code par 0 ou 1, sa distribution est une distribution binomiale. On utilisera donc la fonction glm avec
largument family="binomial" :
2 plot(survival~beak_size, data=becs)
3 becs.glm<-glm(survival~beak_size, family="binomial", data=becs)
4 summary(becs.glm)
Call:
glm(formula = survival ~ beak_size, family = "binomial", data = becs)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.1443 -0.5406 -0.4651 -0.3867 2.7951
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -6.6597 1.1544 -5.769 7.98e-09
***
beak_size 0.4742 0.1147 4.133 3.58e-05
***
---
Signif. codes: 0
***
0.001
**
0.01
*
0.05 . 0.1 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 550.64 on 750 degrees of freedom
Residual deviance: 532.50 on 749 degrees of freedom
AIC: 536.5
Number of Fisher Scoring iterations: 5
On a un effet positif signicatif de la taille du bec sur la survie. On pourra se reporter la section B.2.3 pour plus de
dtails sur les GLM.
4.7.2 Maximum de vraisemblance
De la mme manire, R permet dajuster des modles selon le principe du maximum de vraisemblance. On utilisera
pour se faire la fonction nlm.
42 CHAPITRE 4. LE MODLE LINAIRE
Annexe A
Quelques fonctions graphiques
A.1 Modier les paramtres graphiques
La commande par permet de rcuprer et de modier de nombreux paramtres graphiques. On citera notamment :
bg La couleur de fond.
cex, cex.axis, cex.lab, cex.main, cex.sub La taille des caractres et des symboles : gnraux, pour les axes,
pour les tiquettes, pour le titre et pour le sous-titre.
col, col.axis, col.lab, col.main, col.sub Les couleurs par dfaut : gnrales, pour les axes, pour les ti-
quettes, pour le titre et pour le sous-titre.
family La famille de police de caractre utiliser.
font, font.axis, font.lab, font.main, font.sub 1 pour normal (par dfaut), 2 pour gras, 3 pour italique, 4
pour gras et italique.
las Etiquettes : 0 (dfaut) toujours parallles aux axes, 1 toujours horizontales, 2 toujours perpendiculaires aux axes, 3
toujours verticales.
lty Type de ligne, une valeur ou une chane de caractres parmi : 0=blank, 1=solid (par dfaut), 2=dashed, 3=dotted,
4=dotdash, 5=longdash, 6=twodash
lwd Largeur des lignes (1 par dfaut).
oma, omi, mar, etc Marges.
pch Type de symbole utiliser pour les points, peut tre un entier ou un caractre.
xlog, ylog chelle logarithmique (FALSE par dfaut).
etc Beaucoup dautres options disponibles, voir help(par) pour une liste complte.
Certaines de ces options peuvent tre directement passes aux fonctions graphiques (lty, pch, lwd, etc), nous en avons
dj vu des exemples. Si elles sont spcies par la commande par, elles seront effectives pour tous les graphes.
A.2 Graphes composs
On peut afcher plusieurs graphiques sur une mme fentre. Il existe principalement 2 mthodes. Nous en avons vu
une lors de lafchage des graphes de validation du modle linaire. Cette premire mthode permet de diviser une fentre
graphique en une grille de sous-fentres. Les graphes seront ensuite tracs dans chaque sous-fentre, les uns la suite des
autres. On utilise pour cela 2 arguments de la fonction par, mfrow et mfcol, qui prennent tous les 2 un vecteur de
taille 2, contenant le nombre de lignes et le nombre de colonnes. La diffrence entre ces deux commandes est quavec la
premire les graphes seront tracs ligne par ligne, alors quil seront tracs colonne par colonne avec la seconde.
La seconde mthode utilise la fonction split.screen, qui prend en argument un vecteur contenant le nombre de
lignes et de colonnes, de manire similaire la mthode prcdente. La diffrence est que lon peut choisir dans quelle
sous-fentre effectuer son graphe en utilisant la commande screen. Exemple :
1 split.screen(c(2,3))
2 screen(2)
3 hist(rnorm(1000), col="red", main="Normale")
43
44 ANNEXE A. QUELQUES FONCTIONS GRAPHIQUES
4 screen(4)
5 hist(rgamma(1000, shape=1), col="blue", main="Gamma")
6 screen(6)
7 hist(rexp(1000), col="green", main="Exponentielle")
On peut fermer les sous-fentres en tapant :
1 close.screen(all=TRUE)
Un autre avantage de split.screen est quon peut lutiliser sur une sous-fentre an de la subdiviser. Exemple :
1 split.screen(c(1,2))
2 screen(1)
3 contour(volcano, color = terrain.colors)
4 screen(2)
5 split.screen(c(2,2))
6 screen(3)
7 hist(rnorm(1000, sd=0.1), col="red")
8 screen(4)
9 hist(rnorm(1000, sd=0.4), col="blue")
10 screen(5)
11 hist(rnorm(1000, sd=1.0), col="green")
12 screen(6)
13 hist(rnorm(1000, sd=2.0), col="yellow")
14 close.screen(all=TRUE)
A.3 Fonctions de dessin
R possde des fonctions qui permettent dajouter des dessins un graphique. Nous avons dj vu la fonction lines
qui ajoute des points relis. On lui passe en argument un vecteur dabscisses et un vecteur dordonnes :
1 x<-seq(from=-5,to=5,by=0.01)
2 plot(x,x^2-2
*
x-1, type="l", col="red")
3 lines(x,x^2-3
*
x-1, col="blue", lty=2)
4 lines(x,x^3+x^2-5
*
x-1, col="blue", lty=4)
Plusieurs fonctions similaires existent :
1 x<-seq(from=-5,to=5,by=0.5)
2 points(x,x^3-4
*
x^2-x+15, col="green", pch=2)
1 x0<- -2
2 x1<- 2
3 y0<-seq(from=0,to=20,by=5)
4 y1<-y0+2
5 segments(x0,y0,x1,y1)
6 arrows(x0-2,y0+2,x1-2,y1+2,col="purple")
On dispose aussi des fonctions rect pour tracer des rectangles et polygon pour des polygones. La fonction text
permet dajouter du texte un graphique. Finalement, la fonction abline permet de tracer une droite dont on connat
lordonne lorigine et le coefcient directeur. Plus gnralement, la fonction curve permet de tracer un courbe dont
on prcise lquation. Un de ces intrts est quelle fonctionne directement avec des objets lm et permet de tracer une
droite de rgression, comme nous lavons vu au chapitre 3.
A.4 Le paquetage lattice
R possde galement une bibliothque de fonction de dessin avance, la bibliothque lattice. On la charge en
tapant :
A.5. SAUVEGARDER UN GRAPHE DANS UN FICHIER 45
1 library(lattice)
Les fonctions de graphisme de cette bibliothque ne sont pas compatibles avec les fonctions de base de R, on ne peut donc
pas les combiner. Il existe cependant un quivalent pour (presque) chaque fonction graphique. On se reportera au mmento
pour obtenir le nom des fonctions lattices quivalentes celles utilises dans ce TP, et on se reportera la documentation
de R pour leur utilisation.
A.5 Sauvegarder un graphe dans un chier
Plusieurs fonctions permettent de sauvegarder un graphe sous forme de chier image. La plus gnrique est dev.print,
qui copie le contenu dune fentre graphique dans un chier. Elle prend plusieurs arguments :
device en gros : le format du chier, choisir parmi :
jpeg Le fameux format photo.
png Mieux que jpeg, avec gestion de la transparence. Attention cependant, certains windows font des caprices pour
lire ces chiers.
bitmap Fichier .bmp de windows, non compresss, proscrire donc.
pdf Format Adobe.
postscript Avantage : chiers vectoriels, trs petits. Inconvnients : non lisible sous windows moins dinstaller
les logiciels adquats, difcilement importable dans des documents de type Ofce (MS ou Open).
pictex Format L
A
T
E
X.
xg Fichier .g, pour les amateurs...
NB : lors de la spcication du format, on ne met pas de quotes : png et non "png".
file Le chemin vers le chier, avec des guillemets.
width La largeur du chier en pixels (400 est une bonne valeur).
height La hauteur du chier en pixels (400 est une bonne valeur).
quality (pour les jpeg) la valeur de compression (en pourcentage). 75 par dfaut. Une valeur de 100 ne compresse
pas les chiers.
Exemple :
1 hist(rnorm(1000), col=rainbow(15))
2 dev.print(png, file="LoiNormale.png", width=400, height=400)
46 ANNEXE A. QUELQUES FONCTIONS GRAPHIQUES
Annexe B
Que faire quand lhypothse de normalit nest
pas vrie ?
B.1 Cas des tests simples
Exemple : t.test, var.test, cor.test, etc. Dans ce cas, il existe (presque) toujours un test non-paramtrique
ayant la mme hypothse nulle. Il est galement possible de construire votre propre test, en utilisant par exemple des
permutations, comme vu lors du premier TD.
B.2 Cas du modle linaire
(rgression simple ou multiple, ANOVA 1 ou plusieurs facteurs, ANCOVA, modles plus complexes).
On rappelle que dans ce cas, cest la normalit des rsidus qui importe. Les rsidus dun modle peuvent tre rcuprs
avec la commande resid.
B.2.1 Solution n
o
1 : tests non-paramtriques
Si vous tes dans le cas dun modle simple, vous pouvez soit utiliser un test de corrlation non paramtrique (Spear-
man ou Kendall), bien que les hypothses ne soient pas strictement identiques celles du modle linaire. Dans le cas
dune ANOVA un facteur, vous pouvez utiliser le test de Kruskal-Wallis.
B.2.2 Solution n
o
2 : normaliser les donnes
Dans certains cas, il est possible de normaliser les donnes en les transformant laide dune fonction qui conserve
leur rang (fonction monotone). Les fonctions typiquement utilises sont les fonctions log, sqrt (racine carr), exp,
1/x ou arcsin. Attention cependant, ces fonctions ne sont pas toujours dnies : log par exemple ne prendra que des
valeurs positives.
Il existe une approche plus lgante et plus puissante qui fait appel au paquet MASS, qui fournit deux types de
transformations.
Transformation log(y + ) La transformation teste ici est du type
log(y + ) x
1
+ x
2
+ (B.1)
et on cherche le meilleur qui permettrait de normaliser les donnes. On utilise pour cela la fonction logtrans, qui
prend en argument un objet lm.
1 library(MASS)
2 m<-lm(Days ~ Age
*
Sex
*
Eth
*
Lrn, data = quine)
3 shapiro.test(resid(m))
47
48 ANNEXE B. QUE FAIRE QUAND LHYPOTHSE DE NORMALIT NEST PAS VRIFIE?
> shapiro.test(resid(m))
Shapiro-Wilk normality test
data: resid(m)
W = 0.9612, p-value = 0.0003913
On utilise alors la fonction logtrans :
4 logtrans(m, alpha = seq(0.75, 6.5, len=20))
En lui prcisant les valeurs de essayer (ici, 20 valeurs de 0,75 6,5). La dtermination de la valeur se fait graphique-
ment. On peut galement la dterminer en utilisant :
5 lt<-logtrans(m, alpha = seq(0.75, 6.5, len=20))
6 alpha<-lt$x[which.max(lt$y)]
7 alpha
Ce qui nous donne la valeur 2,492. On peut ensuite faire un nouveau modle :
8 m2<-lm(log(Days+alpha) ~ Age
*
Sex
*
Eth
*
Lrn, data = quine)
9 shapiro.test(resid(m2))
> shapiro.test(resid(m2))
Shapiro-Wilk normality test
data: resid(m2)
W = 0.9863, p-value = 0.1586
Transformation Box-Cox La transformation Box-Cox est un peu plus tordue, mais le principe reste le mme. La trans-
formation teste est ici
_
_
_
y

si = 0
log(y) si = 0
x
1
+ x
2
+ (B.2)
et la fonction utiliser sintitule boxcox. Son utilisation est similaire logtrans. Nous travaillons ici sur un modle
similaire :
1 library(MASS)
2 m<-lm(Days+1 ~ Age
*
Sex
*
Eth
*
Lrn, data = quine)
3 shapiro.test(resid(m))
> shapiro.test(resid(m))
Shapiro-Wilk normality test
data: resid(m)
W = 0.9612, p-value = 0.0003913
4 bc<-boxcox(m,lambda = seq(-0.05, 0.45, len = 20))
5 lambda<-bc$x[which.max(bc$y)]
6 lambda
ce qui nous donne la valeur de 0,213. On cre alors un nouveau modle :
1 m2<-lm( ((Days+1)^lambda)/lambda ~ Age
*
Sex
*
Eth
*
Lrn, data = quine)
2 shapiro.test(resid(m2))
B.2. CAS DU MODLE LINAIRE 49
> shapiro.test(resid(m2))
Shapiro-Wilk normality test
data: resid(m2)
W = 0.9891, p-value = 0.3133
B.2.3 Solution n
o
3 : utilisation dun modle linaire gnralis (GLM)
Comme son nom lindique, il sagit dune gnralisation du modle linaire qui autorise une variable non normale,
mais galement lhtroscdasticit.
On a typiquement besoin des GLM lorsque la variable expliquer nest pas dnie sur ] , [. Cest le cas par
exemple de donnes de frquence ([0, 1]) ou de comptages (nombres entiers positifs). On utilise alors une fonction qui
permet de transformer cette variable en une variable dnie sur lintervalle ] , [. Cette fonction ne modie pas
lordre des valeurs (elle est monotone). Par exemple, pour des frquences, on peut utiliser
g : p log
_
p
1 p
_
, (B.3)
une fonction que lon nomme logit. Pour une variable dnie seulement de manire positive (tels des comptages), la
fonction log permet dobtenir une variable transforme dnie sur ] , [. On appelle fonction de lien de telles
fonctions g. Un modle linaire gnralis scrit donc
g( y
i
) = a.x
i
+ b +
i
(B.4)
dans le cas dune rgression linaire simple par exemple. Les dans ce cas suivent une distribution particulire, qui dpend
de ce quon appelle la famille du modle linaire gnralis. Un modle linaire est ainsi un cas particulier de modle
linaire gnralis avec une erreur normale (famille gaussienne) et un lien identit.
Voici quelques cas usuels :
Famille Fonction de lien Formule Nom usuel
Gaussienne Identit g(x) = x Modle linaire
Poisson Log g(x) = log(x) Rgression de Poisson (comptages)
Binomiale Logit g(x) = log
_
x
1x
_
Rgression logistique
Multinomiale Logit g(x) = log
_
x
1x
_
Exponentielle Inverse g(x) =
1
x
Gamma Inverse g(x) =
1
x
Un modle linaire gnralis seffectue avec la fonction glm, qui suit la mme syntaxe que lm, mais prend un ar-
gument supplmentaire intitul family. Celui-ci est un objet de type family qui dcrit le type de GLM, notamment la
fonction de lien. R possde diffrents objets family prdnis, correspondant aux cas les plus courants (voir la documen-
tation pour family ). Exemple :
1 m<-glm(y~x, data, family=binomial(link="logit"))
2 plot(m)
3 summary(m)
La plupart des fonctions qui marchent avec lm fonctionnent galement avec glm.
Pour information, on peut galement spcier la variance comme une fonction des valeurs prdites, ce qui permet
dans certains cas de rgler les problmes dhtroscdasticit.
50 ANNEXE B. QUE FAIRE QUAND LHYPOTHSE DE NORMALIT NEST PAS VRIFIE?
Annexe C
Programmer avec R : la drive gntique
Ce chapitre aborde quelques aspects avancs de lutilisation de R. Consigne importante : ce chapitre est linaire,
ne pas passer la suite tant quun exercice nest pas termin (et russi).
C.1 Le sujet. . .
On considre une population dorganismes haplodes, et on tudie la frquence dun gne de rsistance. Pour les locus
considrs, on a deux allles : "R" pour rsistant et "S" pour sensible. Chaque individu dans la population met le mme
nombre de gamtes dans le milieu, et ces gamtes ont la mme probabilit de donner lieu un individu qui arrivera
maturit (pas de slection). Qui plus est, on considrera que la taille de la population est constante au cours du temps. On
tudie lvolution de la frquence des allles rsistants au cours du temps.
La seule source de variabilit est le hasard li la reproduction, lchantillonnage alatoire des gamtes pour former
la gnration suivante (gure C.1). Cela revient en fait choisir alatoirement dans la population t les individus qui
donneront un descendant la gnration t + 1, sachant quun individu peut-tre choisi plusieurs fois, et un autre aucune
fois. La frquence t + 1 peut donc tre diffrente de la frquence t, par le seul effet de lchantillonnage alatoire.
Gamtes
Gnration t,
p
t
= 0, 5
Gnration t + 1,
p
t+1
= 0, 4
FIG. C.1 Effet de la fcondation alatoire sur la frquence dun gne de rsistance dans une population de taille 10.
51
52 ANNEXE C. PROGRAMMER AVEC R : LA DRIVE GNTIQUE
Exercice 18 Crer une population de taille 10, contenant 50% de rsistants. Il sagira dun vecteur de "R" (rsis-
tant) et de "S" (sensibles), nomm pop.
Crer un autre vecteur comprenant 10 descendants choisis au hasard parmi les individus de pop. Aide : regarder
la documentation de la fonction runif qui permet de gnrer des nombres alatoires selon une loi uniforme.
Calculer la frquence des allles rsistants la nouvelle gnration.
Recommencer les deux dernires tapes plusieurs fois, faire un histogramme des frquences obtenues et calculer
leur moyenne et variance.
C.2 volution de la population aprs plusieurs gnrations
Crer ses propres fonctions avec R Les fonctions, dans R, sont des objets de classe function ( !). La syntaxe est la
suivante :
nom_de_fonction < function( param1, param2, param3, etc ) corps_de_fonction
param1, param2, param3 sont autant de paramtres passer la fonction.
corps_de_fonction contient ce que fait la fonction. Pour les fonctions simples (1 ligne), il sagit gnralement
dune formule mathmatique. Ex :
1 f <- function(x) x^2
est la fonction carr, f(2) renvoie 4. Si la fonction est plus complexe (plusieurs lignes), il faut entourer le
corps de la fonction avec des accolades. Ex :
1 centre.et.reduit <- function(x) {
2 moyenne <- mean(x)
3 ecart.type <- sd(x)
4 y <- (x - moyenne) / ecart.type
5 return(y)
6 }
Cette fonction centre et rduit (retranche la moyenne et divise par lcart-type) la variable x et renvoie le rsultat.
La variable centre rduite a une moyenne de 0 et un cart-type de 1 (tester la fonction et le vrier !). Plusieurs
remarques :
Il faut spcier la valeur retourner avec la commande return.
Les variables moyenne, variance, y, ainsi que les paramtres sont des variables locales, cest dire quelles
nexistent que dans la fonction (elles napparatront pas en tapant ls() pr exemple). Lorsquon passe les
valeurs aux paramtres lors de lappel de la fonction, de mme que lorsquon renvoie le rsultat, les valeurs
sont recopies (on parle de passage par valeur). Regarder lexemple suivant :
1 f <- function(x) {
2 x <- 3
*
x^2-5
3 y <- x/4
4 return(y)
5 }
6 x <- 0.5
7 ls()
[1] "f" "x"
8 f(x)
[1] -1.0625
9 x
[1] 0.5
10 y
Error: Object "y" not found
La fonction a modi localement la valeur de la variable x, cependant la variable globale x a toujours la valeur
0.5. De mme, la variable y, cre localement, nest pas visible en dehors de la fonction.
C.3. SUIVI EN TEMPS REL 53
Exercice 19 Crer les deux fonctions suivantes :
freq qui prend en argument un vecteur population et renvoie la frquence des rsistants,
popgen qui cre une nouvelle population en tirant au hasard les descendants dune population mre spcie
en argument.
tester vos fonctions ! Donnent-elles les bons rsultats ?
Crer des boucles dans R Comme la plupart des langages de programmation, R permet de structurer le code dans des
boucles. Voici comment crer une boucle de type for :
for( variable in vecteur ) corps_de_la_boucle
variable est une variable compteur qui prendra la valeur de chaque lment de vecteur chaque itration. Au
premier passage, elle est gale vecteur[1], puis au deuxime vecteur[2], jusqu vecteur[length(vecteur)].
Le corps de la boucle est excut entirement chaque itration. Lorsque tout le vecteur est parcouru, la boucle
sarrte.
corps_de_la_boucle peut tre une seule ligne, ou bien un bloc entour daccolades. NB : comme pour les fonc-
tions, toutes les variables dnies dans la boucle, de mme que la variable compteur sont locales la boucle, et
ne seront donc pas accessibles en dehors de celle-ci.
Exemple :
1 for(i in 1:10) cat(i,"\n")
La fonction cat crit une liste dobjets dans la console. Ici, elle crit le contenu de la variable i et revient la ligne.
Autre exemple :
1 v <- -5:5
2 for(i in v) {
3 s <- sin(i
*
pi)
4 cat("Sin(", i, "
*
pi) = ", s, "\n",sep="")
5 }
Il est bien sr possible dutiliser des boucles dans des fonctions et vice versa. on peut galement emboter plusieurs
boucles :
1 for (i in 1:10) {
2 cat("Table de ",i,":\n")
3 for(j in 1:10) {
4 cat(i,"
*
",j,"=",i
*
j,"\n")
5 }
6 }
C.3 Suivi en temps rel
On sintresse ensuite au devenir de la population aprs plusieurs gnrations.
Exercice 20 Construire une fonction evolve qui prend en argument une population initiale, la fait voluer pen-
dant un nombre n de gnrations (pass en argument la fonction) et renvoie le rsultat.
Faire voluer la population pop pendant 3, 5, 10, etc gnrations. Que se passe-t-il ?
Il est galement intressant de regarder lvolution pas pas :
Exercice 21 Crer une fonction evolve2 qui fonctionne de manire similaire evolve, mais renvoie un vecteur
contenant la frquence de rsistants chaque gnration au lieu de renvoyer la population nale.
Faire un graphe de la frquence en fonction des gnrations pour 10 simulations et 20 gnrations.
C.4 volution moyenne
Exercice 22 En utilisant une boucle for, crer une fonction get.freqs qui :
fait voluer 200 fois une population population pendant nb.gen gnrations, population et nb.gen
tant des paramtres de la fonction,
54 ANNEXE C. PROGRAMMER AVEC R : LA DRIVE GNTIQUE
calcule la frquence des rsistants dans chaque cas,
renvoie le vecteur des frquences obtenues.
appliquer la fonction get.freqs la population pop, pendant 1, 2, 3, 10, 15, 30 et 100 gnrations, et tracer
lhistogramme des frquences dans chaque cas. Que se passe-t-il ?
On procde maintenant une approche plus quantitative. On tudie la moyenne et la variance des frquences de
rsistants au cours du temps.
Exercice 23 Tracer lvolution de la moyenne et de la variance des frquences de 200 populations voluant partir de
pop en fonction de nombre de gnrations. On utilisera la fonction get.freqs dnie prcdemment, et on regardera
les gnrations de 1 100, toutes les 5 gnrations. Conclusion ?
C.5 Inuence de la taille de la population
Exercice 24 Crer une fonction create.pop qui renvoie un vecteur population de taille size avec une propor-
tion freq de rsistants,size et freq tant des paramtres de la fonction.
Crer une population de taille 100 avec une proportion 0.5 de rsistants.
Faire un suivi en temps rel dune dizaine de simulations, et comparer les rsultat avec ceux obtenus prcdemment
pour une population de taille 10.
Crer des boucles conditionnelles dans R R permet galement de faire dautre types de boucles que les boucles for.
Voici comment crer une boucle de type while :
while( test ) corps_de_la_boucle
test : tant que la condition est vraie, continue la boucle.
corps_de_la_boucle : idem que pour la boucle for.
Exemple :
1 a <- 0
2 b <- 1
3 c <- a + b
4 while(c < 100) {
5 cat(c,"\n")
6 a <- b
7 b <- c
8 c <- a + b
9 }
(Suite de Fibonacci) Ici toutes les variables sont globales.
Exercice 25 Crer une fonction tps.fix qui fait voluer une population jusqu la xation dun des deux allles,
puis renvoie le temps de xation (nombre de gnrations coules jusqu la xation).
tudier la distribution du temps de xation pour une population de taille 10, une population de taille 100.
Faites le graphe du temps moyen de xation dune population en fonction de sa taille (de 10 500, attention au
nombre de points !).
Ajuster un modle permettant de prdire le temps moyen de xation en fonction de la taille de la population.
Annexe D
Reprsentation 3D et introduction RGL :
randonne dans la valle de lUbaye.
Ce chapitre supplmentaire est focalis sur la manipulation de donnes 3D. Il comporte une introduction au paquetage
rgl, qui permet deffectuer des graphiques OpenGL dans R. Les exercices de ce chapitre ne sont pas difciles, mais il
est impratif davoir effectu tous les autres chapitres auparavant, y compris le premier chapitre supplmentaire (il y a un
peu de programmation faire !).
D.1 Introduction
Les jeux de donnes tudies ici concernent le trajet dune randonne pdestre dans la valle de lUbaye (Alpes du
Sud), voir gure D.1.
Le chier SoleilBoeuf.csv contient les coordonnes du trajet, dans trois colonnes "x", "y" et "z".
Exercice 26 Mise en jambe.
Calculez les altitudes minimales et maximales du parcours, ainsi que le dnivel.
Tracez le trajet tel quil apparat sur la carte, i.e. seulement les x et les y.
D.2 Calcul du prole
On va maintenant tracer le prole du parcours, i.e. laltitude en fonction de la distance parcourue.
Exercice 27 Distance parcourue.
Les points 1 23 correspondent la portion du trajet qui est effectue laller et au retour. Dupliquez cette portion
an quelle apparaissent aussi la n du trajet.
Pour chaque point, calculez la distance parcourue depuis le dbut. On pourra stocker les rsultats dans une nouvelle
colonne nomme "d".
Tracez le prole.
Un autre calcul intressant faire est celui des pentes en chaque point.
Exercice 28 Calcul des pentes.
Pour chaque point, calculez la pente (NB : la pente est la drive du prole en un point). On pourra stocker le
rsultat dans une colonne nomme "dz".
Reprsentez la pente en fonction de la distance.
Juxtaposez le prole et sa drive sur un mme graphe (Note : consultez lannexe A).
D.3 Reprsentation 3D
Le chier SoleilBoeuf_grid_z_.csv contient une matrice avec des altitudes releves selon une grille rgulire
de 20 20 points. Les chiers SoleilBoeuf_grid_x_.csv et SoleilBoeuf_grid_y_.csv contiennent les
coordonnes en abscisse et en ordonne des points de la grille.
55
56ANNEXE D. REPRSENTATION3DET INTRODUCTIONRGL : RANDONNE DANS LAVALLE DE LUBAYE.
FIG. D.1 Randonne dans lUbaye : la crte de Soleil Boeuf (source : La valle de lUbaye... pied, Topo-Guide,
FFRP).
Exercice 29 Topographie.
Utilisez la fonction filled.contour pour reprsenter la topographie des lieux. R possde plusieurs jeux de
couleurs prdnis, dont un nomm terrain.colors pour les reprsentations topographiques. Se reporter
laide de cette fonction pour plus de dtails.
Reprsentez la topographie en lignes de niveau (cf. contour), et ajoutez le trajet sur la carte.
D.4 Utilisation de RGL
La paquetage rgl permet de reprsenter des objets en 3 dimensions grce OpenGL. On le charge en tapant
1 library(rgl)
Ce paquetage nest pas install par dfaut avec R, il faut donc linstaller en tapant
1
1 install.packages("rgl")
D.4.1 Trac du trajet
La fonction rgl.points trace des points, dont on passe les coordonnes en x, y et z. Attention cependant, les axes
ne sont pas tiquets de faon intuitive dans les fonctions rgl : laxe y dsigne les altitudes et z la profondeur. Cel a
pour consquence que le repre (x, y, z) nest pas direct, et conduit donc une reprsentation inverse selon laxe y. pour
1
Vous devez avoir les droits administrateur sur lordinateur pour effectuer cette commande.
D.4. UTILISATION DE RGL 57
obtenir la reprsentation souhaiter, il faut effectuer la correspondance suivante :
Axe : Axe dans RDG :
x z
y x
z y
La fonction rgl.lines est similaire rgl.points et trace de segments. Attention, rgl.lines est lquivalent
de segments et non de lines. Si on veut tracer des lignes, il convient donc de dupliquer les coordonnes :
x = {0, 1, 2, 3, 4} x2 = {0, 1, 1, 2, 2, 3, 3, 4}
Il existe aussi des fonctions permettant de tracer des triangles et des quadrilatres : rgl.triangles et rgl.quads
Finalement, la fonction rgl.surface permet de tracer des surfaces. Elle fonctionne comme la fonction persp.
Exercice 30 Trajet 3D.
Reprsentez le trajet en 3 dimensions.
Utilisez les donnes topographiques pour planter le dcors, en utilisant rgl.surface. Se reporter la docu-
mentation de la fonction pour un exemple dutilisation des couleurs.
La fonction rgl.bg permet de changer le fond de limage et dajouter du brouillard... expression libre.
58ANNEXE D. REPRSENTATION3DET INTRODUCTIONRGL : RANDONNE DANS LAVALLE DE LUBAYE.
Annexe E
Mmento
59
60 ANNEXE E. MMENTO
E
.
1
S
y
s
t

m
e
h
e
l
p
,
?
O
b
t
e
n
i
r
d
e
l

a
i
d
e
h
e
l
p
.
s
t
a
r
t
A
i
d
e
H
T
M
L
l
i
b
r
a
r
y
C
h
a
r
g
e
u
n
p
a
q
u
e
t
a
g
e
i
n
s
t
a
l
l
.
p
a
c
k
a
g
e
s
I
n
s
t
a
l
l
e
r
u
n
p
a
q
u
e
t
a
g
e
d
e
p
u
i
s
l
e
s
e
r
v
e
u
r
C
R
A
N
u
p
d
a
t
e
.
p
a
c
k
a
g
e
s
A
c
t
u
a
l
i
s
e
d
e
s
p
a
q
u
e
t
a
g
e
s
d
a
t
a
C
h
a
r
g
e
u
n
j
e
u
d
e
d
o
n
n

e
s
e
n
m

m
o
i
r
e
l
s
L
i
s
t
e
l
e
c
o
n
t
e
n
u
d
e
s
o
b
j
e
t
s
e
n
m

m
o
i
r
e
r
m
E
f
f
a
c
e
u
n
o
b
j
e
t
e
n
m

m
o
i
r
e
s
e
t
w
d
S
p

c
i

e
l
e
r

p
e
r
t
o
i
r
e
c
o
u
r
a
n
t
g
e
t
w
d
R

c
u
p

r
e
l
e
r

p
e
r
t
o
i
r
e
c
o
u
r
a
n
t
s
o
u
r
c
e
L
i
t
u
n
s
c
r
i
p
t
e
t
l

e
x

c
u
t
e
E
.
2
M
a
n
i
p
u
l
a
t
i
o
n
d
e
v
e
c
t
e
u
r
s
/
f
a
c
t
e
u
r
s
<
-
A
f
f
e
c
t
a
t
i
o
n
:
y
<
-
a
*
x
+
b
v
e
c
t
o
r
C
r

e
u
n
n
o
u
v
e
a
u
v
e
c
t
e
u
r
f
a
c
t
o
r
C
r

e
u
n
n
o
u
v
e
a
u
f
a
c
t
e
u
r
o
r
d
e
r
e
d
C
r

e
u
n
n
o
u
v
e
a
u
f
a
c
t
e
u
r
o
r
d
o
n
n

c
C
o
n
c
a
t

n
e
:
y
<
-
c
(
2
,
3
,
0
,
6
,
1
0
)
:
S

r
i
e
e
n
t
i

r
e
:
5
:
9

q
u
i
v
a
u
t

c
(
5
,
6
,
7
,
8
,
9
)
s
e
q
C
r

e
u
n
e
s

q
u
e
n
c
e
r
e
p
C
r

e
u
n
v
e
c
t
e
u
r
r

t
i
t
i
o
n
d

u
n
m
o
t
i
f
d
o
n
n

l
e
n
g
t
h
D
o
n
n
e
l
a
l
o
n
g
u
e
u
r
d

u
n
v
e
c
t
e
u
r
[
]
S
o
u
s
v
e
c
t
e
u
r
:
x
[
3
]
,
x
[
3
:
8
]
,
x
[
x
>
0
]
,
x
[
c
(
T
,
F
)
]
+
-
/
*
O
p

r
a
t
e
u
r
s
m
a
t
h

m
a
t
i
q
u
e
s
u
n
i
q
u
e
R
e
n
v
o
i
e
u
n
v
e
c
t
e
u
r
s
a
n
s

m
e
n
t
s
r

s
a
s
.
v
e
c
t
o
r
C
o
n
v
e
r
t
i
t
e
n
v
e
c
t
e
u
r
a
s
.
f
a
c
t
o
r
C
o
n
v
e
r
t
i
t
e
n
f
a
c
t
e
u
r
a
s
.
o
r
d
e
r
e
d
C
o
n
v
e
r
t
i
t
e
n
f
a
c
t
e
u
r
o
r
d
o
n
n

i
s
.
v
e
c
t
o
r
T
R
U
E
s
i
v
e
c
t
e
u
r
i
s
.
f
a
c
t
o
r
T
R
U
E
s
i
f
a
c
t
e
u
r
i
s
.
o
r
d
e
r
e
d
T
R
U
E
s
i
f
a
c
t
e
u
r
o
r
d
o
n
n

c
u
t
D
i
s
c
r

t
i
s
e
u
n
v
e
c
t
e
u
r
n
u

r
i
q
u
e
e
n
f
a
c
t
e
u
r
s
p
l
i
t
C
o
n
v
e
r
t
i
t
u
n
v
e
c
t
e
u
r
e
n
f
a
c
t
e
u
r
s
e
l
o
n
l
e
s
n
i
v
e
a
u
x
d
o
n
n

s
p
a
r
u
n
a
u
t
r
e
f
a
c
t
e
u
r
l
e
v
e
l
s
R

c
u
p

r
e
l
e
s
m
o
d
a
l
i
t

s
d

u
n
f
a
c
t
e
u
r
(
o
r
d
o
n
n

o
u
p
a
s
)
s
u
m
S
o
m
m
e
c
u
m
s
u
m
S
o
m
m
e
c
u
m
u
l

e
p
r
o
d
P
r
o
d
u
i
t
c
u
m
p
r
o
d
P
r
o
d
u
i
t
c
u
m
u
l

E
.
3
S
t
a
t
i
s
t
i
q
u
e
s
d
e
s
c
r
i
p
t
i
v
e
s
s
u
m
m
a
r
y
R

s
u
m

d
e
s
d
o
n
n

e
s
m
e
a
n
M
o
y
e
n
n
e
v
a
r
V
a
r
i
a
n
c
e
s
d
E
c
a
r
t
t
y
p
e
m
e
d
i
a
n
M

d
i
a
n
e
c
o
v
C
o
v
a
r
i
a
n
c
e
c
o
r
C
o
r
r
e
l
a
t
i
o
n
E
.
4
G
r
a
p
h
i
q
u
e
s
(
p
a
q
u
e
t
t
a
g
e
s
g
r
a
p
h
i
c
s
e
t
l
a
t
t
i
c
e
)
p
l
o
t
x
y
p
l
o
t
G
r
a
p
h
e
g

r
i
q
u
e
,
y
=
f
(
x
)
b
o
x
p
l
o
t
b
w
p
l
o
t
B
o

t
e
s

m
o
u
s
t
a
c
h
e
s
c
o
p
l
o
t
x
y
p
l
o
t
G
r
a
p
h
e
s
c
o
n
d
i
t
i
o
n
n
e
l
s
(
e
n
f
o
n
c
t
i
o
n
d

u
n
a
t
t
r
i
b
u
t
d
i
s
c
r
e
t
)
i
n
t
e
r
a
c
t
i
o
n
.
p
l
o
t

G
r
a
p
h
e
s
d

i
n
t
e
r
a
c
t
i
o
n
d
e
d
e
u
x
f
a
c
t
e
u
r
s
b
a
r
p
l
o
t
b
a
r
c
h
a
r
t
G
r
a
p
h
i
q
u
e
s
e
n
b
a
r
r
e
s
d
o
t
c
h
a
r
t
d
o
t
p
l
o
t
A
u
t
r
e
s
g
r
a
p
h
i
q
u
e
s
e
n
b
a
r
r
e
s
s
t
r
i
p
c
h
a
r
t
s
t
r
i
p
p
l
o
t
S
i
m
i
l
a
i
r
e

b
o
x
p
l
o
t
p
o
u
r
u
n
p
e
t
i
t
n
o
m
b
r
e
d
e
d
o
n
n

e
s
h
i
s
t
h
i
s
t
o
g
r
a
m
H
i
s
t
o
g
r
a
m
m
e
l
e
g
e
n
d

A
j
o
u
t
e
u
n
e
l

g
e
n
d
e

u
n
g
r
a
p
h
e
p
e
r
s
p
w
i
r
e
f
r
a
m
e
G
r
a
p
h
e
3
D
:
p
e
r
s
p
e
c
t
i
v
e
c
o
n
t
o
u
r
c
o
n
t
o
u
r
p
l
o
t
G
r
a
p
h
e
3
D
:
l
i
g
n
e
s
d
e
n
i
v
e
a
u
x
f
i
l
l
e
d
.
c
o
n
t
o
u
r
G
r
a
p
h
e
3
D
:
l
i
g
n
e
s
d
e
n
i
v
e
a
u
x
+
d
i
f
f

r
e
n
t
e
s
c
o
u
l
e
u
r
s
p
a
r
n
i
v
e
a
u
i
m
a
g
e
l
e
v
e
l
p
l
o
t
G
r
a
p
h
e
3
D
:
d
i
f
f

r
e
n
t
e
s
c
o
u
l
e
u
r
s
p
a
r
n
i
v
e
a
u
E.5. DESSIN : 61
E
.
5
D
e
s
s
i
n
:
l
i
n
e
s
l
l
i
n
e
s
R
e
l
i
e
d
e
s
p
o
i
n
t
s
s
u
r
u
n
g
r
a
p
h
e
p
o
i
n
t
s
l
p
o
i
n
t
s
T
r
a
c
e
d
e
s
p
o
i
n
t
s
s
u
r
u
n
g
r
a
p
h
e
s
e
g
m
e
n
t
s
l
s
e
g
m
e
n
t
s
R
e
l
i
e
d
e
s
s
e
g
m
e
n
t
s
s
u
r
u
n
g
r
a
p
h
e
a
r
r
o
w
s
l
a
r
r
o
w
s
T
r
a
c
e
d
e
s

c
h
e
s
s
u
r
u
n
g
r
a
p
h
e
t
e
x
t
l
t
e
x
t
E
c
r
i
t
d
u
t
e
x
t
e
s
u
r
u
n
g
r
a
p
h
e
a
b
l
i
n
e

A
j
o
u
t
e
u
n
e
o
u
p
l
u
s
i
e
u
r
s
l
i
g
n
e
s
d
r
o
i
t
e
s

u
n
g
r
a
p
h
e
e
n
s
p

c
i

a
n
t
l
e
u
r

q
u
a
t
i
o
n
c
u
r
v
e

T
r
a
c
e
u
n
e
c
o
u
r
b
e
s
a
c
h
a
n
t
s
o
n

q
u
a
-
t
i
o
n
p
o
l
y
g
o
n

A
j
o
u
t
e
u
n
p
o
l
y
g
o
n
e

u
n
g
r
a
p
h
e
r
e
c
t

A
j
o
u
t
e
u
n
o
u
p
l
u
s
i
e
u
r
s
r
e
c
t
a
n
g
l
e
s

u
n
g
r
a
p
h
e
b
o
x

C
r

e
u
n
e
b
o

t
e
a
u
t
o
u
r
d
u
g
r
a
p
h
i
q
u
e
E
.
6
T
e
s
t
s
s
t
a
t
i
s
t
i
q
u
e
s
c
o
r
.
t
e
s
t
T
e
s
t
d
e
c
o
r
r
e
l
a
t
i
o
n
(
P
e
a
r
s
o
n
,
S
p
e
a
r
m
a
n
e
t
K
e
n
d
a
l
l
)
c
h
i
s
q
.
t
e
s
t
T
e
s
t
d
e
c
h
i
2
f
r
i
e
d
m
a
n
.
t
e
s
t
T
e
s
t
d
e
s
r
a
n
g
s
d
e
F
r
i
e
d
m
a
n
t
.
t
e
s
t
T
e
s
t
t
d
e
S
t
u
d
e
n
t
v
a
r
.
t
e
s
t
T
e
s
t
F
d
e
c
o
m
p
a
r
a
i
s
o
n
d
e
v
a
r
i
a
n
c
e
s
k
r
u
s
k
a
l
.
t
e
s
t
T
e
s
t
d
e
l
a
s
o
m
m
e
d
e
s
r
a
n
g
s
d
e
K
r
u
s
k
a
l
-
W
a
l
l
i
s
k
s
.
t
e
s
t
T
e
s
t
d
e
K
o
l
m
o
g
o
r
o
v
-
S
m
i
r
n
o
v
w
i
l
c
o
x
.
t
e
s
t
T
e
s
t
s
d
e
W
i
l
c
o
x
o
n
(
M
a
n
n
-
W
h
i
t
n
e
y
)
E
.
7
F
o
r
m
u
l
e
s
~
S

p
a
r
e
l
e
s
v
a
r
i
a
b
l
e
s
"

e
x
p
l
i
q
u
e
r
"
d
e
s
v
a
r
i
a
b
l
e
s
"
e
x
p
l
i
c
a
t
i
v
e
s
"
A
+
B
E
f
f
e
t
d
e
A
+
e
f
f
e
t
d
e
B
A
-
B
E
n
l
e
v
e
r
u
n
e
f
f
e
t
A
:
B
I
n
t
e
r
a
c
t
i
o
n
A
*
B
=
A
+
B
+
A
:
B
A
/
B
=
A
+
A
:
B
A
B
|
A
c
o
n
d
i
t
i
o
n
n
e
l
l
e
m
e
n
t

B
(
A
+
B
+
C
)
^
2
=
A
+
B
+
C
+
A
:
B
+
A
:
C
+
B
:
C
I
(
A
^
2
)

i
n
s
u
l
a
t
e

:
l

e
x
p
r
e
s
s
i
o
n

i
n
s
u
l
a
r
i
s

a
s
o
n
s
e
n
s
m
a
t
h

m
a
t
i
q
u
e
E
r
r
o
r
(
C
)
C
e
s
t
l
e
t
e
r
m
e
d

e
r
r
e
u
r
(
a
o
v
s
e
u
l
e
m
e
n
t
,
m
o
d

l
e
I
I
)
E
.
8
M
o
d

l
e
s
l
m
M
o
d

l
e
l
i
n

a
i
r
e
g
l
m
M
o
d

l
e
l
i
n

a
i
r
e
g

r
a
l
i
s

a
o
v
A
n
a
l
y
s
e
d
e
v
a
r
i
a
n
c
e
l
m
e
M
o
d

l
e
l
i
n

a
i
r
e

e
f
f
e
t
s
m
i
x
t
e
s
n
l
m
e
M
o
d

l
e
n
o
n
-
l
i
n

a
i
r
e
n
l
s
M
o
i
n
d
r
e
c
a
r
r

s
n
o
n
-
l
i
n

a
i
r
e
s
n
l
m
M
a
x
i
m
u
m
d
e
v
r
a
i
s
e
m
b
l
a
n
c
e
s
u
m
m
a
r
y
R

s
u
m

d
u
m
o
d

l
e
c
o
e
f
f
i
c
i
e
n
t
s
R

c
u
p

r
e
l
e
s
c
o
e
f

c
i
e
n
t
s
d

u
n
m
o
d

l
e
f
i
t
t
e
d
.
v
a
l
u
e
s
R
e
c
u
p

r
e
l
e
s
p
r

d
i
c
t
i
o
n
s
d

u
n
m
o
d

l
e
r
e
s
i
d
u
a
l
s
R
e
c
u
p

r
e
l
e
s
r

s
i
d
u
s
d

u
n
m
o
d

l
e
a
n
o
v
a
C
a
l
c
u
l
e
u
n
e
t
a
b
l
e
d

A
N
O
V
A
p
r
e
d
i
c
t
P
r

d
i
t
d
e
s
v
a
l
e
u
r
s

p
a
r
t
i
r
d

u
n
m
o
d

l
e
s
t
e
p
S

l
e
c
t
i
o
n
d
e
m
o
d

l
e
s
p
a
r
A
I
C
q
q
n
o
r
m
G
r
a
p
h
e
Q
u
a
n
t
i
l
e
-
Q
u
a
n
t
i
l
e
n
o
r
m
a
l
(
d
r
o
i
t
e
d
e
H
e
n
r
y
)
h
m
c
t
e
s
t
T
e
s
t
d
e
H
a
r
r
i
s
o
n
-
M
a
c
-
C
a
b
e
d

h
o
m
o
s
c

d
a
s
t
i
c
i
t

d
e
s
r

s
i
d
u
s
b
p
t
e
s
t
T
e
s
t
d
e
B
r
e
u
s
c
h
-
P
a
g
a
n
d

h
o
m
o
s
c

d
a
s
t
i
c
i
t

d
e
s
r

s
i
d
u
s
d
w
t
e
s
t
T
e
s
t
d
e
D
u
r
b
i
n
-
W
a
t
s
o
n
d

i
n
d

p
e
n
d
a
n
c
e
d
e
s
r

s
i
d
u
s
E
.
9
M
a
t
r
i
c
e
s
m
a
t
r
i
x
C
r

e
u
n
e
n
o
u
v
e
l
l
e
m
a
t
r
i
c
e
c
b
i
n
d
L
i
e
d
e
s
v
e
c
t
e
u
r
s
e
n
c
o
l
o
n
n
e
s
r
b
i
n
d
L
i
e
d
e
s
v
e
c
t
e
u
r
s
e
n
l
i
g
n
e
s
[
i
]
E
l

m
e
n
t
i
d
a
n
s
l
a
m
a
t
r
i
c
e
(
d
a
n
s
l

o
r
d
r
e
d
e
l
e
c
t
u
r
e
)
62 ANNEXE E. MMENTO
[
i
,
j
]
E
l

m
e
n
t
i
d
e
l
a
c
o
l
o
n
n
e
j
d
e
l
a
m
a
t
r
i
c
e
[
,
j
]
V
e
c
t
e
u
r
c
o
l
o
n
n
e
j
d
e
l
a
m
a
t
r
i
c
e
[
i
,
]
V
e
c
t
e
u
r
l
i
g
n
e
i
d
e
l
a
m
a
t
r
i
c
e
d
i
m
D
i
m
e
n
s
i
o
n
s
d
e
l
a
m
a
t
r
i
c
e
e
i
g
e
n
D

c
o
m
p
o
s
i
t
i
o
n
s
p
e
c
t
r
a
l
e
d

u
n
e
m
a
t
r
i
c
e
a
s
.
m
a
t
r
i
x
C
o
n
v
e
r
t
i
t
e
n
m
a
t
r
i
c
e
i
s
.
m
a
t
r
i
x
T
R
U
E
s
i
m
a
t
r
i
c
e
r
o
w
n
a
m
e
s
N
o
m
s
d
e
l
i
g
n
e
s
c
o
l
n
a
m
e
s
N
o
m
s
d
e
c
o
l
o
n
n
e
s
E
.
1
0
J
e
u
x
d
e
d
o
n
n

e
s
d
a
t
a
.
f
r
a
m
e
C
r

e
u
n
n
o
u
v
e
a
u
j
e
u
d
e
d
o
n
n

e
s
r
e
a
d
.
t
a
b
l
e
C
r

e
u
n
j
e
u
d
e
d
o
n
n

e
s

p
a
r
t
i
r
d

u
n

c
h
i
e
r
t
e
x
t
e
w
r
i
t
e
.
t
a
b
l
e
E
c
r
i
t
u
n
j
e
u
d
e
d
o
n
n

e
s
d
a
n
s
u
n

c
h
i
e
r
e
d
i
t
E
d
i
t
e
u
n
j
e
u
d
e
d
o
n
n

e
s
a
t
t
a
c
h
L
e
j
e
u
d
e
d
o
n
n

e
s
e
s
t
a
t
t
a
c
h

a
u
c
h
e
m
i
n
c
o
u
r
a
n
t
d
e
t
a
c
h
E
n
l

v
e
l
a
b
a
s
e
d
e
d
o
n
n

e
c
o
u
r
a
n
t
e
d
u
c
h
e
m
i
n
d
e
r
e
c
h
e
r
c
h
e
[
]
S
o
u
s
-
j
e
u
d
e
d
o
n
n

e
s
[
i
,
j
]
E
l

m
e
n
t
i
d
e
l
a
c
o
l
o
n
n
e
j
d
u
j
e
u
d
e
d
o
n
n

e
s
[
,
j
]
V
e
c
t
e
u
r
c
o
l
o
n
n
e
j
d
u
j
e
u
d
e
d
o
n
n

e
s
[
i
,
]
V
e
c
t
e
u
r
l
i
g
n
e
i
d
u
j
e
u
d
e
d
o
n
n

e
s
n
a
m
e
s
N
o
m
s
d
e
c
o
l
o
n
n
e
s
r
o
w
n
a
m
e
s
N
o
m
s
d
e
l
i
g
n
e
s
E
.
1
1
O
b
j
e
t
s
$
C
h
a
m
p
l
i
s
t
C
r

e
u
n
n
o
u
v
e
l
o
b
j
e
t
l
i
s
t
e
n
a
m
e
s
R

c
u
p

r
e
l
e
s
n
o
m
s
d
e
c
h
a
m
p
s
p
r

s
e
n
t
s
d
a
n
s
u
n
o
b
j
e
t
E
.
1
2
P
r
o
g
r
a
m
m
a
t
i
o
n
f
u
n
c
t
i
o
n
C
r

e
u
n
e
n
o
u
v
e
l
l
e
f
o
n
c
t
i
o
n
i
f
(
e
x
p
r
_
1
)
e
x
p
r
_
2
e
l
s
e
e
x
p
r
_
3
I
n
s
t
r
u
c
t
i
o
n
c
o
n
d
i
t
i
o
n
n
e
l
l
e
f
o
r
(
n
a
m
e
i
n
e
x
p
r
_
1
)
e
x
p
r
_
2
B
o
u
c
l
e
f
o
r
r
e
p
e
a
t
e
x
p
r
w
h
i
l
e
(
c
o
n
d
i
t
i
o
n
)
B
o
u
c
l
e
r
e
p
e
a
t
w
h
i
l
e
(
c
o
n
d
i
t
i
o
n
)
e
x
p
r
B
o
u
c
l
e
w
h
i
l
e
=
=
,
!
=
O
p

r
a
t
e
u
r
s
l
o
g
i
q
u
e
s
d

g
a
l
i
t

<
,
>
,
<
=
,
>
=
O
p

r
a
t
e
u
r
s
l
o
g
i
q
u
e
s
d

i
n

g
a
l
i
t

&

E
t

l
o
g
i
q
u
e
|

O
u

l
o
g
i
q
u
e
E
.
1
3
Q
u
e
l
q
u
e
s
p
a
q
u
e
t
a
g
e
s
u
t
i
l
e
s
l
a
t
t
i
c
e
A
u
t
r
e
s
f
o
n
c
t
i
o
n
s
g
r
a
p
h
i
q
u
e
s
n
l
m
e
M
o
d

l
e
s
l
i
n

a
i
r
e
s
e
t
n
o
n
l
i
n

a
i
r
e
s
m
i
x
t
e
s
(
e
f
f
e
t
a
l

a
t
o
i
r
e
+

x
e
s
)
,
m
o
i
d
r
e
s
c
a
r
r

s
g

r
a
l
i
s

s
.
l
m
t
e
s
t
T
e
s
t
s
p
o
u
r
m
o
d

l
e
s
l
i
n

a
i
r
e
s
.
c
a
r
C
o
m
p
a
n
i
o
n
t
o
A
p
p
l
i
e
d
R
e
g
r
e
s
s
i
o
n
.
P
e
r
m
e
t
d
e
f
a
i
r
e
d
e
s
m
o
i
n
d
r
e
s
c
a
r
r

s
d
e
t
y
p
e
I
I
e
t
I
I
I
.
a
d
e
4
A
n
a
l
y
s
e
d
e
d
o
n
n

e
s
e
n
v
i
r
o
n
e
m
e
n
t
a
l
e
s
a
p
e
P
h
y
l
o
g

n
i
e
e
t
E
v
o
l
u
t
i
o
n
(
a
n
a
l
y
s
e
c
o
m
p
a
r
a
t
i
v
e
)
r
g
l
U
t
i
l
i
s
a
t
i
o
n
d

O
p
e
n
G
L
d
a
n
s
R
Bibliographie
[1] Jos C. Pinheiro and Douglas M. Bates. Mixed-Effects Models in S and S-Plus. Springer, 2000.
[2] Robert R. Sokal and F. James Rohlf. Biometry. W. H. Freeman and co., 3me edition, 1995.
[3] W. N. Venables and B. D. Ripley. Modern Applied Statistics with S. Springer, 4me edition, 2002.
63
Index
R (logiciel)
arrter, iii
dmarrer, iii
abline, 18, 46
add1, 37
affectation, 2
AIC, 18
analyse de covariance, 29
analyse de variance, 17
1 facteur, 22
ANOVA, 22
hirarchise, 34
modle II, 35
Anova, 34
anova (fonction), 22
Ansari-Bradley (test de), 12
ansari.test, 12
aov, 24
arguments, iv
arrter R, iii
arrows, 46
Bartlett (test de), 12
changer de rpertoire, i
chisq.test, 13
coef, 18
coefcients, 18
col.names, 5
concatnation, 2
coplot, 35
cor, 17
cor.test, 17
corrlation, 17
Kendall, 17
Pearson, 17
Spearman, 17
crer un rpertoire, i
curve, 26, 46
cut, 13
dmarrer R, iii
dataframe, 5
dev.print, 47
deviance, 18
dim, 5
distribution
normale, 9
distributions, 9
drop1, 37
Effectifs non-balancs, 32
environnement, i
F (test), 11
facteur, 6
modalits, 6
chier plat, 4
tted, 18
tted.values, 18
Fligner-Killeen (test de), 12
Fonction de lien, 51
fonctions, 1
formule, 18
glm, 40, 51
help, v
hist, 7
histogramme, 7
homoscdasticit, 12
individu, 5
interaction.plot, 32
Kendall (test de), 17
Kolmogorov-Smirnov (test de), 15
Kruskal-Wallis (test de), 24
kruskal.test, 24
ks.test, 15
length, 4
lines, 46
lister le contenu dun rpertoire, ii
lm, 18
lme, 39
ls, 2
Mann-Whitney (test de), 11
masque, 3
mean, 4
median, 4
modle linaire, 17, 29
model.tables, 24
64
INDEX 65
Mood (test de), 12
mood.test, 12
na.exclude, 18
na.fail, 18
na.omit, 18
na.pass, 18
ncol, 5
nlm, 41
nlme, 39
nls, 25
normale
densit, 9
distribution, 9
test, 12
nrow, 5
oprateur
(en fonction de), 6
[] (dataframe), 5
[] (vecteur), 3
affectation, 2
OpenGL, 58
par, 45
paramtres, iv
Pearson (test de), 17
plot, 6
pnorm, 9
polygon, 46
predict, 18
print, 18
prompt, i
prop.test, 13
R (logiciel)
obtenir de laide, v
rgression
linaire
multiple, 29
simple, 17
non linaire
simple, 25
simple, 17
rpertoire
changer de, i
crer, i
lister le contenu, ii
read.table, 4
rect, 46
rep, 2
replications, 30
resid, 18
residuals, 18, 19
rgl.bg, 59
rgl.lines, 59
rgl.points, 58
rgl.quads, 59
rgl.surface, 59
rgl.triangles, 59
rm, 2
rnorm, 9
row.names, 5
S (logiciel), i
slection de modle, 29
sauvegarde, iv
screen, 45
scripts, iv
sd, 4
segments, 46
seq, 2
shapiro.test, 12
Spearman (test de), 17
split.screen, 45
SSgompertz, 26
SSlogis, 26
SSmicmen, 26
SSweibull, 26
step, 37
sum, 4
summary, 4, 18, 21
t (test), 10
table, 13
terminal, i
termplot, 19
test

2
, 13
Ansari-Bradley, 12
Bartlett, 12
corrlation, 17
Fisher (dit test F), 11
Fligner-Killeen, 12
Kolmogorov-Smirnov, 15
Kruskal-Wallis, 24
Mann-Whitney Wilcoxon, 11
Mood, 12
Shapiro-Wilk (normalit), 12
Student (dit test t), 10
Tukey, 24
tests classiques, 9
text, 46
Tukey (test de), 24
TukeyHSD, 24
tutoriel, i
update, 38, 39
var, 4
var.test, 11
variable, 1, 5
continue, 6
crer, 2
discrte, 6
lister, 2
modier, 2
supprimer, 2
66 INDEX
type, 2
vecteur, 2
accs aux lments, 3
concatnation, 2
masque, 3
wilcox.test, 11
Wilcoxon (test de), 11