Mod Elisation Et M Ethodes Num Eriques Pour Les Sciences Du Vivant. TP1 - Initiation

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 11

Modélisation et méthodes numériques pour les sciences du vivant.

TP1 - initiation
Liens utiles pour démarrer :
Site de R : http://www.r-project.org/
R pour les débutants, E. Paradis :
http://cran.r-project.org/doc/contrib/Paradis-rdebuts_fr.pdf
Short-liste instructions :
http://cran.r-project.org/doc/contrib/Short-refcard.pdf
Un éditeur pratique pour les scripts est https://www.rstudio.com/.

Les notes de bas de page fournissent des indications. Si vous êtes déjà familier de R, inutile de faire
l’ensemble du TP : lisez simplement l’énoncé et choisissez les points que vous connaissez moins.

1 Pour commencer
Installer R puis Rstudio. Lancer R : apparait une fenêtre d’exécution avec un prompt, qui permet d’entrer
des commandes. La figure 1 présente les principales caractéristiques de l’interface Rstudio.

Figure 1 – Premiers pas avec Rstudio

1.1 Espace de travail


Au cours d’une session R, tous les objets créés sont gardés en mémoire. Les commandes objects() et ls()
affichent la liste de ces objets. Ils peuvent être effacés grâce à la commande rm(). Tous ces objets peuvent
aussi être sauvés dans un fichier .Rdata pour une utilisation future (Fichier > Sauver l’environnement de
travail) : cette fonction est surtout utile lorsqu’on a de gros volumes de variables ou de données (peu utile
dans ce cours).

1.2 Créer et exécuter des scripts R


1. Fichier > Nouveau script.
2. Prenons dès à présent une bonne pratique : écrivez en haut du fichier :
# date : ..., auteur : ....
# TP R d’initiation, cours de ModV.

1
rm(list=ls())
Les # indiquent des commentaires qui ne sont pas exécutés. L’instruction rm(list=ls()) efface
tous les objets restés éventuellement en mémoire lors d’une session précédente ce qui évite des bugs
possibles.
3. Pour ce premier exemple, inscrivez simplement print ("hello world")
4. Sauvez le fichier dans le répertoire de travail. Généralement on choisit l’extension .r. Si besoin,
pour se placer dans le répertoire dans lequel vous voulez travailler, Divers> Changer de Répertoire
de travail, ou setwd("C:/Documents/...") (=SET Working Directory).
5. L’exécuter : sélectionnez la partie de code à exécuter et cliquez Ctrl + R (ou cmd + entrée sur
mac) ; ou en ligne de commande source(’NomFichier’).

1.3 A l’aide
Pour accéder à l’aide :
— Si le nom de la commande est connu : ?seq ou help(seq), args(seq)
— Sinon : ??sequence, help.search("sequence") ou help.start() =⇒ ouvre aide en ligne : par
exemple, utiliser ‘Search Engine and Keywords’.
Par défaut, la fonction help ne cherche que dans les packages chargés en mémoire. Conseil : il est souvent
utile de lire les exemples et le paragraphe Arguments.

1.4 Installer et charger des packages


1. (à faire une seule fois sur une machine donnée) Installer le package : install.packages(nom_package)
ou bien Packages > Installer le(s) package(s) sous R ou bien dans le menu Packages de Rstudio
(fenêtre de droite), cliquer sur Install Packages. Par exemple : installez le package deSolve.
2. Le charger pour l’utiliser dans une session : library(nom_package) Packages > Charger le package
et sélectionner dans la liste le package qui doit être chargé en mémoire. Tapez ?deSolve pour vérifier
que le package est bien accessible en cette session.

2 Variables
Le type d’une variable est accessible par la commande typeof(). Taper par exemple typeof("toto") ou
typeof(2).

2.1 Vecteurs
Objet atomique, c’est-à-dire d’un type unique. L’attribut de longueur (obtenu avec length(x)) donne son
nombre de composantes. Un peu d’exercice :
1. Créer une variable x qui soit un vecteur de longueur 1 1 et l’afficher 2
2. Créer un vecteur de 4 réels 3 et l’afficher.
3. Peut-on exécuter l’instruction x+1 ?
4. Que renvoie x[-1] ? Comment enlever à x sa dernière composante ?
5. Créer un vecteur composé des nombres entiers 4 de 1 à 20 et l’afficher
6. Que renvoie x*x ?
7. Comment calculer le produit scalaire de x par lui-même ? 5
1. x<-2
2. x ou print(x)
3. x<-c(5.1, 2.4, -3.7, 23.2)
4. x<-1:20
5. Fonction %*%

2
8. Prenons x=1:6. Vérifier que x[c(T, F, F, T, F, T)] renvoie seulement les composantes de x qui
correspondent à des T (True) dans le vecteur donné. Que renvoie x[c(T, F)] ? Et x[c(T, T, F)] 6 ?
9. Créer un vecteur composé de valeurs allant de 6 à 1 avec un pas de -0.5 7 et afficher son plus petit
élément ainsi que son numéro de composante 8 .
10. Créer le vecteur 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 9 et afficher les composantes numéros
6 à 8 10 , puis afficher les composantes dont la valeur est inférieure strictement à 2 ou supérieure
strictement à 2 11 .
11. Taper paste("Figure", 1:5, sep="-") et observer le résultat. (Rappel : R considère les opérations
sur les vecteurs composante par composante)
12. Quelques fonctions statistiques élémentaires sur des vecteurs : testez, que donnent-elles ?
n <- c(15,8,14,12,14,10,18,15,9,5,12,13,12,16)
sort(n) ; sort(unique(n)) ; mean(n) ; var(n) ; sd(n)
range(n) ; quantile(n) ; summary(n) ; hist(n)

2.2 facultatif Initialisation et valeurs manquantes : NA


A propos de l’initialisation des vecteurs, sur un petit exemple : on veut calculer la moyenne d’une série de
notes. Comparez les résultats des deux méthodes ci-dessous et commentez.

# Méthode 1 : Vecteur des notes initialisées à 0 :


notes<-rep(0,6)
# remplissage des notes mais on en oublie 2 :
notes[c(1, 2, 4, 5)] = c(10.5, 15, 11, 17.5)
mean(notes)

# Méthode 2 : Vecteur des notes initialisées à NA (valeurs manquantes) :


notes<-rep(NA,6)
# remplissage des notes mais on en oublie 2 :
notes[c(1, 2, 4, 5)] = c(10.5, 15, 11, 17.5)
mean(notes)
mean(notes[!is.na(notes)])

Pour repérer quelles sont les notes manquantes, tapez :

manquant <-is.na(notes)
which(manquant)

On souhaite finalement mettre 20 aux élèves manquants. Créer un vecteur new_notes dans lequel les NA
sont remplacés 12 par 20.

2.3 Matrices
Une matrice est aussi un objet atomique, c’est-à-dire dont toutes les valeurs sont de même type (qui peut
être obtenu par la fonction mode(M)). La fonction length(M) renvoie le nombre total d’éléments de la
matrice. Ses dimensions peuvent être obtenues par dim(M).
6. Note : l’index logique est recyclé autant de fois que nécessaire.
7. Fonction seq
8. fonction which.min
9. Fonction rep
10. x[6:8]
11. On peut sélectionner des composantes en mettant un test dans x[test], attention à mettre des parenthèses pour les
priorités
12. Utiliser fonctions replace et which

3
 
1 2 3 4 13
1. Créér une matrice M =
5 6 7 8
2. Que renvoie M^2 ? M*M ? c(2,3)*M ?
3. Comment calculer P =t M M ? 14
4. Que renvoie apply (P, MARGIN=1, function(x) sum(x)+2) ?
5. Calculer la somme de chacune des colonnes de la matrice P. 15

23x + 31y = 1
6. Résoudre le système 16 :
34x + 46y = 2

2.4 Listes
Une liste est un objet hétérogène : c’est un ensemble ordonné de composantes qui n’ont pas tous le même
type ou la même longueur et qui peuvent avoir un nom. Toutes les fonctions R qui retournent plusieurs
valeurs le font sous la forme d’une liste. Construisez la liste suivante, à partir de la matrice P créée
précédemment :
Maliste<-list(P, 0.5, c("Pluie", "Soleil"))
et affichez-là (observez la façon de dénommer les différents éléments : vous pouvez y accéder par Maliste[[3]]).
Puis rentrez des noms pour chacune des composantes :
names(Maliste)<-c("MatriceP", "Proba", "Météo")
et affichez la composante Météo (en y accédant par son nom 17 ).

2.5 Data-frames (ou table)


Ce sont des listes particulières, dont tous les composants sont de même longueur (mais peuvent être de
types différents). Elles peuvent être construites à partir de vecteurs :
MaDataFrame <-
data.frame(Soleil=c("Samedi","Dimanche", NA), Pluie =c(200, 350, 100) ),
ou bien en lisant un fichier de données, par exemple celui décrit en section 6.1 :

1. Télécharger de Edunao le fichier genome.txt dans votre répertoire de travail.


2. Importez 18 ces données dans un objet qui peut par exemple être nommé G. N’en afficher que le
haut, grâce à head(G).
3. Vérifier que les en-têtes des lignes sont bien présents. Tapez summary(G).
4. Afficher les boxplots de la variable ValeurC, qui représente la taille du génome, selon le domaine
de l’organisme en remplaçant les ”...” par la variable appropriée : boxplot(G$ValeurC ~ ...)
5. Que remarque-t-on ? Ré-afficher ce graphe en imposant une borne supérieure L à l’axe des y 19 :
prendre pour L respectivement 108 puis 104 . Conclusion ?
6. Sélectionnez les lignes de G telles que V aleurC < 104 et les afficher. 20

13. M<-matrix(1:8, choisir les bonnes options )


14. Fonction %*%
15. Fonction apply
16. Fonction solve
17. liste$nom
18. G<-read.table(nomFichier, header=...). Vous pouvez aussi utiliser l’onglet ’import Data set’ dans la fenêtre ’Envi-
ronment’, en prenant garde à choisir le bon séparateur de données.
19. ylim=c(0,L) en argument du plot
20. Ne pas oublier la virgule après le test, pour indiquer qu’on veut garder toutes les colonnes pour les lignes sélectionnées
par le test : G[test, ]

4
3 Petits programmes et fonctions
1. Ecrire la fonction 21 triangleEtoile(n) qui génère des étoiles en forme de triangle sur n lignes et
calcule l’‘aire’ (nombre d’étoiles !) du triangle, soit ceci : 22
> triangleEtoile (4)
*
* *
* * *
* * * *
Aire = 10

2. Arguments d’une fonction : Définir la fonction suivante :


maDifference <- function(x,y=10){
zz=x-y
return(zz)
}
Testez les instructions suivantes pour comprendre comment R traite les arguments 23 puis testez
l’existence de la variable zz hors de la fonction 24 :
maDifference(2) ; maDifference(2,4)
maDifference(y=1) ; maDifference(y=1, x=4)

4 Graphes
1. Admirez les graphes R ! : demo(graphics). Notez que le code correspondant s’affiche en même
temps dans la fenêtre de commande (utile pour prendre exemple).
2. Tracer un graphe de la fonction x3 . 25 26
3. Représenter y en fonction de x avec :
x<-c(-1, -0.25, 0 , 0.25 , 1, 0.25, 0, -0.25, -1)
y<-c(0 , -0.25, -1, -0.25, 0, 0.25, 1, 0.25, 0)
4. Chercher comment obtenir les options suivantes : tracer des symboles en triangle reliés par des
lignes 27 , de couleur rouge, et changer les labels des axes. Ajouter un titre. Ajouter un point 28 en
(0,0) de symbole * et de taille 5. Ajouter une légende 29 .
5. Représenter 4 graphes sur une seule sortie : l’objet par. Consultez l’aide sur cet objet pour en
connaitre les attributs :
par(mfrow=c(2,2))
for(i in 1:4){
# Graphe n°i (par exemple changer le type de symbole,
#et le titre avec paste("Titre", i, sep=""))
}
21. triangleEtoile <- function( nombre )
22. Vous pouvez utiliser cat ("\n",rep("*",i)) avec une boucle for (i in 1: n) sur i
23. Ceci afin de vous familiariser avec le traitement des valeurs par défaut, ce qui permet aussi d’identifier rapidement dans
les fichiers d’aide sur une fonction, quels sont les arguments ayant des valeurs par défaut.
24. Toute variable définie dans une fonction est locale
25. plot(xˆ3 ∼ x)
26. Si nécessaire, pour créer une nouvelle fenêtre graphique : commande windows() (sous windows), quartz sous Mac, x11
Linux.
27. Voir type, pch
28. Fonction points
29. legend. Remarque : legend("topleft", ...) permet de placer la légende en haut à gauche (et de même aux autres
coins)

5
Enfin, utilisez la commande text(locator(1), "Stars") pour placer le mot ”‘Stars”’ quelque
part sur le dernier graphe (plot en cours) 30 . L’onglet Export de Rstudio permet d’enregistrer le
plot (ou bien par la commande png, par exemple ; ne pas oublier en ce cas dev.off() pour clore
l’export).
Exemple de résultat :

De nombreuses fonctions permettent de simuler des tirages de variables aléatoires selon différentes lois de
probabilité : rnorm et runif, mais aussi beta, binom, cauchy, chisq, exp, f, gamma, geom, hyper, lnorm,
logis, nbinom, pois, t, weibull et wilcox... Les fonctions de densité associées sont avec un d au début,
par exemple dnorm, dbeta, ... A vous :
— Tracer le tirage de 100 points selon une loi uniforme sur [−2, 1]
— Tracer la densité d’une loi normale centrée réduite sur [−5, 5]

5 Résolution d’équations différentielles ordinaires avec le package deSolve


Nous allons voir ici comment résoudre un système d’ODEs à l’aide du package deSolve. Le TP ’ODE et
bioréacteur’ vous permettra de comprendre (ou vous rappellera) les méthodes qui se cachent derrière
l’emploi de cette fonction R.
Prenons un simple modèle compartimental d’épidémiologie, le modèle SIR avec démographie, dans une
population arbitraire de taille N = 200 :

dS
= −µ · S + ν · (S + I + R) − βc · I · S
dt
dI
= −µ · I + βc · I · S − γ · I
dt
dR
= −µ · R + γ · I
dt
où :
 la variable S(t) représente le nombre d’individus sains ou susceptibles, de valeur initiale S0 = 199
 la variable I(t) représente le nombre d’individus infectés, de valeur initiale I0 = 1
 la variable R(t) représente le nombre d’individus guéris et immunisés, de valeur initiale R0 = 0
30. Note : cette commande locator peut aussi être très utile pour placer une légende sur un graphe

6
X le paramètre µ = 0.178 représente le taux de natalité
X le paramètre ν = 0.178 représente le taux de mortalité
X le paramètre γ = 0.1 représente le taux de guérison
X le paramètre βc = 0.003 représente le taux de contamination par individu infecté
On veut obtenir une simulation de ce système sur 5 ans avec un pas de temps d’1 mois.
1. Charger le package deSolve.
2. La syntaxe de la fonction ode est la suivante :
sol <- ode(init, timeline, deriv, par, method="lsoda")
Pour l’utiliser, compléter les définitions des différents arguments appelés ici :
 Valeurs initiales du vecteur de variables, dont les noms sont réutilisés dans la solution : init
<- c("S"=..., ).
X Vecteur des paramètres : par <- c("betac"=0.003, ...)
 Vecteur des temps auxquels on souhaite obtenir les valeurs numériques simulées : years = 5 ;
timeline <- seq(...)
 La fonction qui, à un temps t donné, renvoie les valeurs numériques des dérivées de chaque
variable, dans le même ordre que celui choisi dans le vecteur d’initialisation init :
deriv <- function(t,var,par)
{
with(as.list(c(var, par)), {
# le "with" permet d’éviter la lourdeur d’écriture qu’on aurait sans lui : - par
deriS <- - mu * S + nu * (S+I+R) - betac*I * S
deriI <- ...
...
list(c(deriS, deriI, deriR))
})
}

Résoudre l’ODE, visualiser le tableau de résultats 31 et afficher les courbes des variables S, I, R
au cours du temps 32 avec une légende.
3. Tester votre simulation en la comparant à une solution analytique obtenue pour un cas particulier
de valeurs de paramètres. Une bonne habitude à garder ! Par exemple, on peut prendre ici : βc =
0, γ = 0, µ = 0.48, ν = 0.378.
4. Avec les valeurs de paramètres de la question précédente, comparer les simulations obtenues en
mettant en argument de ode soit method="euler" soit method="rk4". Laquelle est ”la bonne” ?
On reverra ça dans le TP ’ODE et Bioréacteur”.

6 Exercices avancés (Facultatifs, au choix)


6.1 Tailles de génomes
[Tiré de Vendrely & Vendrely, 1948.] La variabilité étant le substrat de l’évolution, il est rare de rencontrer des constantes
dans le domaine du vivant. Les premiers biologistes qui mesurèrent la masse d’ADN dans les noyaux des cellules
des eucaryotes trouvèrent donc très remarquable que cette valeur soit constante d’une part entre les cellules des
differents tissus d’un même organisme, d’autre part entre les cellules des différents individus d’une même espèce. On
a pris depuis l’habitude de désigner par valeur C, pour valeur constante, la masse de ce que l’on appelle aujourd’hui
le génome. L’ADN étant un hétéropolymère linéaire sans ramifications, il y a proportionalité entre sa masse et sa
longueur, aussi la valeur C est également utilisée pour désigner la taille du génome. A noter qu’il s’agit de la masse
du génome haploı̈de, c’est-à-dire celle des cellules de lignées germinales (spermatozoı̈des ou ovules). Elle est souvent
mesurée en pico-grammes (pg=10−15 kg), ou encore en nombre de paires de bases nucléotidiques. On pourrait lui
supposer un lien a priori avec la complexité morphologique des organismes. Nous allons voir ce qu’il en est.
31. sol ou head(sol) avec ma notation
32. On peut utiliser with(as.data.frame(sol),plot(time, S, ..., ylim=...)

7
Figure 2 – Paragraphe introductif de l’article de Vendrely & Vendrely de 1948 qui est à l’origine du terme
de valeur C pour désigner la taille d’un génome.

1. Télécharger de Edunao le fichier genome.txt dans votre répertoire de travail.


2. Importez ces données dans un objet qui peut par exemple être nommé G. N’en afficher que le début, grâce à
head(G).
3. Ce fichier contient pour 53 espèces le domaine taxonomique auquel elles appartiennent, la nomenclature de
l’espèce, le nom usuel (s’il est connu) et la valeur C, exprimée en Kb (milliers de paires de bases) Quelles
sont les différentes classes représentées 33 ?
4. Extraire automatiquement de ces données la valeur C pour l’homme 34 .
5. On a la relation suivante : une paire de base ≈ 0.33 nm. Sachant que votre corps contient environ 1014
cellules (supposées ici toutes diploı̈des !), quelle serait la longueur, exprimée en mètre, si l’on mettait bout à
bout toutes les molécules d’ADN de toutes les cellules de votre corps ?
Exprimer ce résultat en unités astronomiques, ua, correspondant à la distance moyenne entre la terre et le
soleil (1 ua ≈ 1.5 · 1011 m).
6. Trier les données selon la colonne ValeurC, uniquement pour les organismes eucaryotes 35 . Que peut-on dire
du lien apparent entre taille des génomes et complexité des organismes 36 ?
7. Représentez graphiquement le log10 de la valeur C en fonction de la classe taxonomique (ou domaine) 37 .
Quels sont les effectifs par classe 38 ? Quelles sont les groupes qui présentent la plus grande variabilité ?

6.2 Illustration du Théorème Central Limit (TCL)


Simuler N tirages de N bX variables aléatoires X1, ..., suivant une loi à votre choix (non gaussienne), par exemple
uniforme sur [0,1]. Puis tracer les histogrammes de la somme des Xi en augmentant le nombre de variables incluses
dans la somme, pour observer visuellement la convergence vers une densité de loi normale.
Pour cela, compléter le code ci-dessous (remplacer les ...) :

NbX = ... # Nombre de variables


33. levels sur la variable Domaine.
34. test sur nom usuel == ”Humain”
35. G[order(...) & G$Domaine=="",]
36. Ce paradoxe a été résolu avec la découverte de l’ADN non-codant. Les génomes eucaryotes sont (généralement) composés
en grande proportion d’ADN qui ne code pas pour des protéines ou pour d’autres éléments fonctionnels. Il est donc possible
qu’un génome de taille très importante ne contienne qu’une très faible proportion de matériel informatif
37. boxplot
38. print(res-boxplot), attribut n

8
N= ... # Nombre de tirages pour chaque variable
# remplir une matrice contenant tous les tirages, une colonne pour chaque variable Xi :
X = matrix(runif(N*NbX, 0, 1), ncol=...)

# Tracer les histogrammes des Xi eux-m^ emes :


par(mfrow=c(2,round(NbX/2)))
for (i in 1:NbX){
hist(..., main=paste("X", i, sep=""), freq=FALSE)
}
# Tracer les histogrammes des sommes des Xi pour un nombre croissant de variables considérées
par(mfrow=c(2,round(NbX/2)-1))
for (i in 2:NbX){
vec = apply(X[ ,1:i], MARGIN=..., sum) # somme, ligne par ligne, des i premières colonnes de X
hist(..., main=paste(paste("X", 1:i, sep=""), collapse="+"), freq=FALSE)
On pourra faire varier les valeurs de N et N bX pour en observer l’effet.
}

6.3 Modèles à base de systèmes de fonctions itérées pour des formes végétales
Les fractales, ici générées par des systèmes de fonctions itérées (IFS), sont connues pour générer des formes évoquant
des végétaux. Nous allons voir ici que cette représentation atteint ses limites dès lors qu’il s’agit de représenter la
dynamique de la croissance d’une plante.
1. Créer un IFS permettant de générer une forme de fougère, ainsi que décrit par le modèle ci-dessous (Utiliser
le fichier IFS params.r sur edunao pour la matrice de paramètres).
x(n + 1) = a · x(n) + b · y(n) + e
y(n + 1) = c · x(n) + d · y(n) + f
où a, b, c, d, e, f ∈ R prennent leur valeurs aléatoirement parmi les 4 vecteurs suivants :
# vecteur 1 vecteur 2 vecteur 3 vecteur 4
a=c( 0.0 , 0.2 , -0.15 , 0.85)
b=c( 0.0, -0.26 , 0.28 , 0.04)
c=c( 0.0 , 0.23 , 0.26 , -0.04)
d=c( 0.16, 0.22 , 0.24 , 0.85)
e=c( 0.0 , 0.0 , 0.0 , 0.0)
f=c( 0.0 , 1.6 , 0.44 , 1.6)
2. Afficher la fougère.
3. Visualiser la construction de la fougère en choisissant les vecteurs dans l’ordre suivant :
(a) 100 itérations avec le vecteur 4
(b) 1 itération avec le vecteur 1
(c) 1 itération avec le vecteur 2
(d) 100 itérations avec le vecteur 4
Qu’observez-vous ? Quel est le rôle de chacun des vecteurs de paramètres ? Ce type de modèle est-il compatible
avec la représentation de la croissance d’une fougère ?
4. En fait, on peut calculer des probabilités permettant de minimiser le nombre d’itérations : ces probabilités
valent 0.01, 0.07, 0.07, 0.85 pour chacun des vecteurs de paramètres repectivement. Construire l’IFS corres-
pondant.
5. Construire l’IFS défini par le même système que précédemment et prenant cette fois ses valeurs dans :
# set 1 set 2 set 3 set 4
a=c(0.0100, -0.0100, 0.4200, 0.4200)
b=c(0.0000, 0.0000, -0.4200, 0.4200)
c=c(0.0000, 0.0000, 0.4200, -0.4200)
d=c(0.45000, -0.4500, 0.4200, 0.4200)
e=c(0.0000, 0.0000, 0.0000, 0.0000)
f=c(0.0000, 0.4000, 0.4000, 0.4000)
Afficher le résultat. Utiliser l’option col=rainbow(length(x)) pour visualiser par des couleurs l’ordre dans
lequel les points sont tracés.
Ainsi, si l’objectif est de représenter la croissance de la structure d’une plante, il vaudra mieux se tourner
vers d’autres formalismes comme les automates, les grammaires formelles ou les L-systèmes.

9
6.4 Analyse de données
On s’intéresse aux poids de poulpes femelles aux stades adultes (si si !). Nous disposons pour cela d’un échantillon
de données de 240 poulpes femelles pêchées au large des côtés mauritaniennes. Nous souhaitons connaitre, pour la
population mère, une estimation du poids moyen et un intervalle de confiance pour cette moyenne au seuil de 95%.

1. Télécharger de Edunao le fichier poulpeF.csv dans votre répertoire de travail.


2. Importez ces données 39 dans un objet qui peut par exemple être nommé Donnees et affichez-le.
3. Afficher les composantes 6 à 8 du vecteur Poids 40 , puis afficher les composantes dont la valeur est comprise
entre 100 et 200 41 .
4. Utiliser la fonction summary pour obtenir un premier descriptif des données et les visualiser graphiquement 42 .
Remarque : pour ne pas avoir à répéter toujours le nom du data-frame Donnees, il est possible d’utiliser
attach(Donnees) : jusqu’à l’instruction detach(Donnees), le data-frame est par défaut Donnees.
5. Tracer l’histogramme des données. 43 .
6. Tester l’adéquation de l’échantillon avec un modèle gaussien. 44
7. Le calcul de l’intervalle de confiance se fait avec la fonction t.test :
attach(Donnees)
result<-# Mettre ici le test
result ; result$conf.int
detach(Donnees)

6.5 Pour aller plus loin : Packages ggplot2, Rmarkdown, tcl/tk, Shiny
Dans ggplot2, un graphe comporte 3 composantes :
— data, les données elles-mêmes
— Aesthetics : tout ce qui concerne les couleurs, les tailles, les formes, les labels mais aussi quelles données
doivent être considérées en x et en y par exemple
— Geometry : les options concernant les types de graphique (plot, histogramme, heatmap, boxplot, etc)
Ces différents éléments vont être combinés dans un objet à partir duquel on va pouvoir faire les représentations
dans une fenêtre graphique ou dans un fichier. Et lorsque l’on voudra changer la couleur ou la forme ou le type de
graphique il suffira de modifier ce paramètre dans l’objet sans avoir besoin de toucher aux autres puis de faire à
nouveau la représentation graphique.
En reprenant les données du fichier genome.txt, utiliser les fonctions ggplot et geom_boxplot pour tracer log(ValeurC)
pour chaque espèce.

Créer une mini-interface graphique en utilisant le package tcltk2 ou shiny permettant de poser la question à l’uti-
lisateur de tracer ou pas le graphe.

Utiliser le package rmarkdown pour générer un mini-rapport.

39. tablo<-read.table(bons arguments )


40. x[6:8]
41. On peut sélectionner des composantes en mettant un test dans x[test], attention à mettre des parenthèses pour les
priorités
42. Fonction boxplot
43. Fonction hist
44. Plusieurs possibilités, par exemple shapiro.test pour le test de Shapiro-Wilk ou voir le package nortest

10
Figure 3 – Tableau des types de points (pch) pour les graphes

11

Vous aimerez peut-être aussi