Académique Documents
Professionnel Documents
Culture Documents
L’objectif de ces TP est de réaliser, à l’aide d’un logiciel de traitement de données, les tests
statistiques abordés en TD de Traitement des Données (S3) afin de répondre à des questions relatives
à des données récoltées au cours de l’UE Biologie et Ecologie Expérimentales. Vous aurez besoin,
entre autres, de certains des résultats de ces tests pour rédiger votre rapport. N’oubliez pas
d’apporter votre polycopié de cours du S3 à chaque TP.
Durant les TP de biologie moléculaire, vous avez produit des données concernant le typage
moléculaire des Rhizobium échantillonnés dans des nodosités de différentes espèces de légumineuses
prélevées dans trois sites.
1
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
2.
3.
4.
5.
2
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
3
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Nous allons maintenant apprendre à exécuter une commande et obtenir son résultat à partir de ce
script. Pour démarrer simplement, nous allons utiliser R comme une calculatrice.
Tapez l’opération 3 + 4 dans votre script. Exécutez cette commande en positionnant le curseur de
la souris sur cette ligne puis en cliquant sur le bouton « Run » (situé en haut à droite de la fenêtre
de script) 1. Que se passe-t-il ?
Q. Que doit-on faire pour afficher le contenu de l’objet nommé objet1 dans la console ?
1
Pour exécuter la commande, on peut aussi utiliser le raccourci clavier « Ctrl+Entrée ». Pour exécuter plusieurs lignes de script consécutives,
il suffit de toutes les sélectionner puis de cliquer sur « Run ».
4
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
2
Si vous avez bien sauvegardé le script R dans votre répertoire de travail, vous pouvez aussi choisir le menu Session / Set Working Directory
/ To Source File Location.
3
La liste complète des fonctions (et de leurs arguments) utilisées au cours des séances de TP est fournie à la fin de ce polycopié.
5
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Le symbole $ permet de préciser le nom de la colonne du tableau qui nous intéresse. Ici, on
souhaite par exemple utiliser la colonne MF_hypogee du tableau sitesABC.
Q. Que s’est-il passé ? Affichez les valeurs de ce nouvel objet dans la console.
L’objet MF_totale s’appelle un vecteur. Il s’agit d’une liste d’éléments simples tous du même type,
soit numériques (dans ce cas), soit caractères. Le vecteur est l’objet de base de R.
6
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Q. Quelle est la moyenne de la masse fraîche totale mesurée sur les 264 plantes ?
Réouverture de RStudio
Lors d’une prochaine séance de TP, il sera nécessaire d’utiliser le script de commandes qui a été créé
et sauvegardé lors des séances précédentes afin de ne pas avoir à retaper toutes les lignes de
commande.
Commencez par ouvrir RStudio. Selon la configuration des ordinateurs, il est possible que le
dernier script ouvert soit affiché automatiquement dans la fenêtre de script. Si ce n’est pas le cas,
cliquez sur « File » puis « Open file » et sélectionnez dans l’arborescence le script R enregistré à la
fin de la séance précédente (scriptR.R).
Le script s’ouvre mais les objets créés lors de la séance précédente (dataframe, vecteurs) n’ont pas
été sauvegardés (espace de travail vide) : il faut donc ré-exécuter certaines lignes du script de
commandes 4, notamment les deux lignes qui permettent d’importer le jeu de données, ainsi que la
création du tableau vicia et du vecteur MF_totale qui seront utilisés dans les exercices suivants.
Pour s’entraîner
Des questions supplémentaires sont à traiter sur Moodle dans la rubrique Travaux Pratiques /
Exercices pour s’entraîner aux TP biostats / Exercices supplémentaires TP1.
4
Il est inutile de ré-exécuter l’ensemble du script, certaines des lignes n’étant pas nécessaires à ce qui va suivre ! Réfléchissez bien à ce que
fait chaque ligne de commande avant de l’exécuter.
7
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Exercice 1 : Les deux espèces de trèfle ont-elles la même masse fraîche épigée ?
Nous allons commencer par représenter la masse fraîche épigée en fonction des six espèces de plante.
Tapez puis exécutez la commande : plot(MF_epigee ~ Espece, data = sitesABC)
Le symbole ~ (tilde) signifie « en fonction de ». On l’obtient en tapant simultanément sur les
touches « Alt Gr » et « 2 » du clavier, suivi d’un espace (ou de tout autre caractère).
Le graphique s’affiche dans la fenêtre en bas à droite (onglet Plots).
Q. Comment s’appelle le graphique obtenu ?
Pour ajouter un titre au graphique, il faut ajouter l’argument main = "mon titre" dans la liste des
arguments de la commande (à la suite de data = sitesABC, en le séparant par une virgule). Vous
pouvez également ajouter les arguments xlab = "ma variable X" et ylab = "ma variable Y"
pour ajouter respectivement un titre à l’axe des abscisses et un à celui des ordonnées. Exécutez
cette commande modifiée pour afficher le nouveau graphique.
Pour mettre vos boîtes en couleur, ajoutez en plus l’argument col = "couleur de mon choix en
anglais".
RStudio permet de naviguer facilement entre des graphiques tracés successivement grâce aux
flèches droite-gauche de l’onglet Plots.
Si vous souhaitez enregistrer un graphique pour l’utiliser dans un rapport par exemple, cliquez sur
le bouton « Export » de la fenêtre graphique, puis choisissez « Save as image ». Dans la fenêtre qui
s’ouvre, précisez le format d’enregistrement 5, choisissez le répertoire dans lequel sera sauvegardé
le graphique (après avoir cliqué sur le bouton « Directory ») et nommez ce fichier dans « File
name » (ex : fig1).
Q. Comment pouvez-vous interpréter ce graphique ? Plus particulièrement, que pensez-vous des
valeurs de masse fraîche épigée pour les deux espèces de Trifolium ?
Nous cherchons maintenant à comparer statistiquement les masses fraîches épigées des deux espèces
de trèfle.
Q. Proposez la démarche à suivre pour identifier le test statistique approprié.
5
Le format PNG est préférable lorsque les graphiques ont des lignes. Le format JPEG est plus adapté aux photos dans lesquelles il y a des
plages de couleurs.
8
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Pour réaliser cette analyse, le plus simple est de constituer un jeu de données ne comprenant que les
mesures réalisées sur Trifolium pratense et Trifolium repens.
Pour cela, vous devez commencer par extraire un sous-ensemble du jeu de données total (cf. page
7) en exécutant la commande suivante :
trif=subset(sitesABC, Espece=="Trifolium_pratense" | Espece=="Trifolium_repens")
La barre verticale s’obtient en tapant simultanément sur les touches « Alt Gr » et « 6 ». Il s’agit de
l’opérateur logique « ou ».
La première étape est de s’intéresser à la distribution de la variable MF_epigee pour chacune des deux
espèces de trèfle.
Q. Quelle est la représentation graphique la plus adaptée pour évaluer l’allure de ces distributions ?
A l’aide des commandes ci-dessous, tracez ce graphique pour la variable MF_epigee chez Trifolium
pratense :
MF_epi_Tprat = subset(trif$MF_epigee, trif$Espece == "Trifolium_pratense")
hist(MF_epi_Tprat)
Faites de même pour Trifolium repens (nommez MF_epi_Trep le vecteur contenant les masses
fraîches épigées de cette espèce).
Q. Que vous apprennent ces graphiques concernant les caractéristiques de la distribution de la masse
fraîche épigée pour chacune des deux espèces de trèfle ?
Testez la normalité de la variable MF_epigee pour chacune des deux espèces de trèfle séparément à
l’aide d’un test de Shapiro. Vous devez utiliser la syntaxe suivante :
shapiro.test(MF_epi_Tprat)
shapiro.test(MF_epi_Trep)
Q. Quelles sont les hypothèses H0 et H1 du test de Shapiro ? Que concluez-vous après l’exécution de
ces commandes ? Quel test allez-vous utiliser dans la suite de l’analyse ?
6
Une autre écriture de ce test pourrait être : wilcox.test(MF_epi_Tprat, MF_epi_Trep)
9
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Un test non-paramétrique a été utilisé ici. Bien que ce test soit tout à fait correct dans notre cas, il est
parfois utile d’appliquer une transformation logarithmique à la variable étudiée afin de se rapprocher
d’une distribution normale et de pouvoir ainsi utiliser des tests paramétriques qui sont plus puissants,
c’est-à-dire plus capables de rejeter l’hypothèse nulle alors qu’elle est incorrecte.
Dans R, la fonction log permet d’obtenir le logarithme népérien d’une valeur. On peut afficher le
logarithme de la masse fraîche épigée : log(trif$MF_epigee)
Testez de nouveau la normalité de la variable MF_epigee pour chacune des deux espèces de trèfle,
mais cette fois sur la variable transformée par le logarithme. Pour gagner du temps, ré-utilisez les
lignes de commande tapées précédemment en les modifiant où cela est nécessaire !
Q. Pouvez-vous maintenant utiliser un test paramétrique ? Quelle sera la prochaine étape ?
Pour tester l’égalité des variances, nous allons utiliser le test de Fisher de comparaison de
variances : var.test(log(MF_epigee) ~ Espece, data = trif)
Q. Quelles sont les hypothèses H0 et H1 du test de Fisher ? Que concluez-vous ?
Pour terminer cette analyse, vous devez choisir le test de comparaison de moyennes le plus adapté à
ces données.
Pour cela, utilisez la commande t.test qui a une syntaxe identique à la fonction var.test utilisée
à la question précédente.
Q. D’après la sortie R et vos TD du S3, lequel des tests de Student a été réalisé ici ?
Q. Imaginez le cas où les variances des deux échantillons peuvent être considérées comme égales.
Comment pouvez-vous modifier cette commande pour réaliser le test approprié ? Servez-vous de
l’aide de la fonction t.test pour répondre à cette question.
10
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Q. Analysez la sortie R du test de Student le plus approprié et concluez. Ce résultat est-il cohérent
avec celui du test non-paramétrique réalisé précédemment ?
Pour s’entraîner
Un exercice supplémentaire est à traiter sur Moodle dans la rubrique Travaux Pratiques / Exercices
pour s’entraîner aux TP biostats / Exercice supplémentaire TP2. Il vise à comparer le nombre de
nodosités développées par les plantes de l’espèce Lathyrus pratensis entre les sites B et C.
Nous allons nous intéresser à la relation entre la masse fraîche de racines et le nombre de nodosités
portées par les racines. Pour commencer, nous allons représenter graphiquement cette relation.
Q. Si vous deviez l’imaginer, quel type de graphique dessineriez-vous pour représenter la relation
entre ces deux variables ?
Nous allons maintenant tester la significativité de cette relation. Pour cela, nous souhaiterions réaliser
un test de corrélation de Pearson.
Q. Quelles sont les conditions de validité de ce test ?
11
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Comme dans l’exercice 1, il faut donc nous intéresser à la distribution de ces deux variables.
Tracez les histogrammes pour les variables MF_hypogee et Nb_nodosites (fonction hist).
Testez la normalité des deux variables à l’aide du test de Shapiro (fonction shapiro.test).
Q. Quelle est votre conclusion ?
On vous propose donc de réaliser un test de corrélation des rangs (non-paramétrique) : le test de
corrélation de Spearman. A noter que, là encore, une transformation logarithmique des variables aurait
pu être réalisée pour tenter de résoudre le problème de normalité et appliquer ainsi un test de
corrélation paramétrique (Pearson).
Utilisez la commande suivante :
cor.test(sitesABC$MF_hypogee, sitesABC$Nb_nodosites, method = "spearman")
Il est à noter que l’ordre de saisie des variables dans la commande n’a pas d’importance ici car les
deux variables ont un rôle symétrique.
Pour s’entraîner
Un exercice supplémentaire est à traiter sur Moodle dans la rubrique Travaux Pratiques / Exercices
pour s’entraîner aux TP biostats / Exercice supplémentaire TP3 (1). Il vise à tester la relation entre les
masses fraîches de racines et de parties aériennes pour les plantes prélevées dans le site C.
Exercice 3 : Le taux de colonisation des racines par les bactéries est-il identique d’une
espèce de plante à l’autre ?
Pour répondre à cette question, il convient tout d’abord de définir plus précisément ce que signifie
« autant colonisées ».
Q. En vous aidant du résultat de l’exercice 2, quelle variable allez-vous étudier ?
Créez le vecteur contenant cette nouvelle variable et nommez-le Nb_nodosites_g en vous inspirant
de ce qui a été fait lors de la première séance (page 6).
12
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Nous allons commencer par représenter le taux de colonisation en fonction des six espèces de plante.
Utilisez la commande : plot(Nb_nodosites_g ~ Espece, data = sitesABC)
Q. Pensez-vous que le taux de colonisation varie significativement d'une espèce à l'autre ? Quel test
statistique permettrait de confirmer votre intuition ? Quelles sont les hypothèses H0 et H1 ?
Pour répondre à cette question, nous allons ajuster un modèle linéaire à nos données. Ce modèle devra
prédire le taux de colonisation pour chacune des six espèces.
Pour créer ce modèle, utilisez la commande suivante :
mod_nodo = lm(Nb_nodosites_g ~ Espece, data = sitesABC)
Q. Dans ce modèle, quelle est la variable dépendante et quelle est la variable explicative ?
Pour s'assurer que les conditions permettant l’ajustement d’un modèle linéaire sont bien remplies, nous
allons analyser les résidus du modèle en utilisant des outils graphiques ainsi que des tests statistiques.
Affichez les résidus du modèle ajusté en tapant mod_nodo$residuals.
Q. Dans le cas de ce modèle, qu'est-ce qu'un résidu ?
13
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
qqnorm(mod_nodo$residuals)
qqline(mod_nodo$residuals)
Q. Si le modèle est correctement ajusté, quelle doit être la relation entre ces deux quantités ? Cette
relation vous paraît-elle satisfaisante ?
Bien que ce résultat suggère d’ores et déjà que les conditions de validité du modèle linéaire ne sont pas
toutes remplies, nous allons tout de même explorer l'hypothèse de constance de la variance des résidus
(homoscédasticité).
Tracez le graphique des résidus en fonction des valeurs prédites par le modèle :
plot(mod_nodo$residuals ~ mod_nodo$fitted.values)
abline(a=0, b=0)
Q. Si le modèle est correctement ajusté, quelle relation attendez-vous entre les valeurs prédites par le
modèle et les résidus ? Cet attendu vous paraît-il satisfait ?
Nous allons maintenant tester l’homoscédasticité des résidus en utilisant le test de Breusch-Pagan. Ce
test n’est pas disponible parmi les fonctions de base de R mais est inclus dans la bibliothèque 7 lmtest.
Réalisez ce test à l’aide des commandes suivantes et concluez.
library(lmtest)
bptest(mod_nodo)
Comme cela a été vu précédemment, il est souvent utile d’appliquer une transformation logarithmique
à la variable dépendante afin de résoudre le(s) problème(s) identifié(s) ci-dessus.
Affichez dans la console R le taux de colonisation et le taux de colonisation transformé en
logarithme. Comparez les valeurs.
7
Une bibliothèque (ou package) est un ensemble de fonctions R, généralement dévolues à des méthodes particulières ou à un domaine
d'application spécifique. Une bibliothèque doit être installée puis chargée (fonction library()) avant de pouvoir utiliser ses fonctions.
14
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Ajustez un nouveau modèle (nommé mod_nodo_log) dans lequel la variable dépendante devient le
taux de colonisation transformé en logarithme et la variable explicative reste Espece. Effectuez
ensuite toutes les analyses précédentes (inspection graphique des résidus, tests de normalité et
d'homoscédasticité des résidus) sur le nouveau modèle. Pour vous simplifier le travail, pensez à
copier les lignes de commande que vous avez déjà tapées dans votre script et à les modifier partout
où cela est nécessaire !
Q. Concluez : pourquoi doit-on considérer que la transformation logarithmique ne permet pas de
résoudre le(s) problème(s) identifié(s) dans notre premier modèle ?
Puisque la transformation logarithmique n’a pas permis de vérifier les conditions de validité du
modèle linéaire, il n’est pas recommandé d’utiliser ce type de modèle pour tester la significativé des
différences de taux de colonisation entre les espèces de plante. Nous allons donc utiliser une
alternative non-paramétrique, à savoir le test de Kruskal-Wallis. Ce test peut toujours être utilisé car il
est basé sur les rangs des observations et est moins contraignant dans ses conditions d’application que
le modèle linéaire.
Réalisez ce test à l’aide de la commande suivante :
kruskal.test(Nb_nodosites_g ~ Espece, data = sitesABC)
Un test non-paramétrique a été utilisé ici. Bien que ce test soit tout à fait correct dans notre cas, il est
important de savoir interpréter le résultat d’une analyse de variance lorsque les conditions
d’application du modèle linéaire sont vérifiées. Cette analyse est en effet plus puissante que le test
non-paramétrique de Kruskal-Wallis pour détecter un effet significatif lorsqu’il existe réellement. Il est
donc préférable de l’utiliser lorsque cela est possible.
Exécutez la commande : anova(mod_nodo_log)
Q. Pourquoi choisit-on ici de réaliser l’analyse sur mod_nodo_log et pas sur mod_nodo ?
15
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Q. Que représente chaque colonne de la table d'ANOVA ? Comment pouvez-vous conclure à partir de
ce résultat ?
Pour s’entraîner
Un exercice supplémentaire est à traiter sur Moodle dans la rubrique Travaux Pratiques / Exercices
pour s’entraîner aux TP biostats / Exercice supplémentaire TP3 (2). Il vise à comparer la masse fraîche
totale des plantes prélevées dans les trois sites.
Exercice 4 : Est-ce que la masse fraîche épigée est influencée par le nombre de
nodosités chez Trifolium pratense ?
Pour répondre à cette question, nous allons commencer par tracer un graphique approprié pour
visualiser la relation entre les deux variables. Utilisez les commandes vues dans l’exercice 2 pour
réaliser ce graphique qui doit comprendre les noms des axes, un titre et les points en bleu.
Attention, vous devez au préalable avoir créé un tableau ne contenant que les données pour
Trifolium pratense (cf. page 7).
Q. Que pensez-vous de cette relation ?
On pourrait tester cette relation par corrélation (cf. exercice 2), mais ici, nous allons effectuer une
régression linéaire simple. Cette méthode présente en effet l’avantage de mieux évaluer la force de la
relation potentielle entre deux variables par le calcul de la pente ainsi que de fournir des prédictions.
Q. D’après la question posée, quelle est la variable dépendante et quelle est la variable explicative ?
L'ajustement du modèle, l’analyse des résidus, les tests des conditions de validité et les tests des
effets peuvent être réalisés de la même façon que pour l'ANOVA que vous avez effectuée dans
l’exercice 3.
Vous pouvez choisir de travailler sur la variable dépendante brute ou transformée par la fonction
logarithme, selon les résultats obtenus durant la vérification des conditions de validité.
16
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Pour s’entraîner
Des questions supplémentaires sont à traiter sur Moodle dans la rubrique Travaux Pratiques /
Exercices pour s’entraîner aux TP biostats / Exercices supplémentaires TP4.
Pour répondre à cette question, vous avez besoin des données relatives au typage moléculaire des
Rhizobium échantillonnés dans les nodosités des légumineuses (deux par plante). Cette information ne
figure dans le tableau sitesABC que pour le site C car vous avez obtenu ces données pour les sites A et
B lors du TD2.
Il faut donc récupérer le jeu de données complet (data_complet.csv) sur Moodle, puis l’importer dans
R en suivant la même procédure que celle vue à la première séance (Importation du tableau de
données, page 5).
Nommez ce tableau sitesABC_comp
Visualisez ce nouveau tableau et examinez sa structure :
summary(sitesABC_comp)
Q. Quel test statistique faut-il mettre en œuvre pour répondre à la question ? Posez ses hypothèses
nulle et alternative.
17
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Q. Pourquoi ne peut-on pas considérer simultanément les deux nodosités d’une même plante dans un
seul test statistique ? Quelles hypothèses biologiques faudrait-il faire ?
Selon la nodosité qui vous a été affectée (a ou b), construisez la table de contingence par espèce
pour les symbiovars identifiés sur les 264 nodosités prélevées :
tab = table(sitesABC_comp$Espece, sitesABC_comp$Symb_nodo_a)
ou
tab = table(sitesABC_comp$Espece, sitesABC_comp$Symb_nodo_b)
Q. Quelles sont les conditions de validité du test statistique identifié ? Sont-elles vérifiées ici ? Aidez-
vous de la commande chisq.test(tab)$expected pour répondre à cette question.
18
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
En se basant sur cet arbre phylogénétique, il a été possible de regrouper les symbiovars en quatre clades (voir
TD2 et les colonnes ‘Clade_nodo_a’ et ‘Clade_nodo_b’ du tableau sitesABC_comp).
- Clade I : SA1, SA2, SG et SI
- Clade II : SB et SH
- Clade III : SC1, SC2, SC3, SD, SF, SK, SL et SM
- Clade IV : SE et SJ
NB : Une analyse plus complète de comparaison des séquences nodC sur 550 pb conduit aux mêmes clades.
Q. En quoi ces informations vont vous permettre de réaliser le test statistique choisi ?
Recommencez les étapes précédentes (table de contingence, conditions d’application du test) mais
en travaillant à un niveau de résolution phylogénétique moins précis que le symbiovar (celui du
clade phylogénétique).
Pour terminer, utilisez la commande chisq.test pour réaliser le test statistique choisi.
Q. Comparez les résultats obtenus pour les deux lots de nodosités prélevées sur chaque plante. En quoi
cela-vous conforte-t-il dans votre conclusion ?
Exercice 6 au choix
A partir des données obtenues dans l’UE, choisissez une question biologique et répondez-y en utilisant
les analyses statistiques et commandes R mises en pratique pendant les TP.
19
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques
Pour plus d’informations, voir l’aide des fonctions dans R : ? nom de la fonction
20