Vous êtes sur la page 1sur 20

UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques

Utilisation du logiciel R pour le traitement statistique des données


biologiques récoltées au cours de l’UE Biologie et Ecologie Expérimentales

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.

Démarrage : connexion aux ordinateurs et récupération des données


 Connectez-vous sur l’ordinateur : démarrez l’ordinateur sous Windows, puis renseignez votre
identifiant UPS (ex : brd2926a) ainsi que votre mot de passe.
 Une fois connecté, commencez par créer un dossier nommé ‘TP biostats’ dans votre espace de
travail personnel sur le disque Z:\ (par exemple dans ‘Ordinateur \ Z: \ votre login \ Documents’).
 Les fichiers utilisés dans cette UE sont disponibles sur Moodle (section Travaux Pratiques /
Documents TP biostats). Le répertoire compressé (.zip) nommé ‘BioEx-2021-Documents-
TPbiostats.zip’ contient les fichiers ‘BioEx-2021-data.ods’ et ‘data.csv’ ainsi que la version PDF
de ce polycopié.
 Enregistrez puis décompressez ce fichier .zip dans le répertoire ‘TP biostats’ que vous venez de
créer, sans modifier le nom ni le format des fichiers contenus et sans chercher à les ouvrir (pour
l’instant).

Prise en main des données


 Ouvrir le fichier ‘BioEx-2021-data.ods’ que vous venez d’enregistrer, en utilisant le logiciel
Classeur de Libre Office (équivalent de Excel mais libre et gratuit).
Le tableau contient ___ lignes et ___ colonnes

(ligne contenant les noms des colonnes non comprise)

Q. Que représentent les lignes du tableau ?

Les colonnes fournissent les informations suivantes :


- Colonne 1 : Espèce de plante-hôte (légumineuse)
- Colonne 2 : Site de prélèvement
- Colonne 3 : Code de la plante
- Colonne 4 : Masse fraîche de racines (en grammes)
- Colonne 5 : Masse fraîche de parties aériennes (en grammes)
- Colonne 6 : Nombre total de nodosités présentes sur les racines de la plante
- Colonne 7 : Typage moléculaire de la 1ère nodosité prélevée sur la plante (« symbiovar » bactérien)
- Colonne 8 : Typage moléculaire de la 2ème nodosité prélevée sur la plante (« symbiovar » bactérien)

1
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques

- Colonne 9 : Forme de la 1ère nodosité prélevée sur la plante


- Colonne 10 : Forme de la 2ème nodosité prélevée sur la plante

Q. Complétez le tableau suivant et cochez les cases correspondantes :


Nombre de modalités si qualitative
Nom de la variable Choisi a priori / observé a posteriori Type
Unités si quantitative
□ choisi a priori par l’expérimentateur □ qualitative
□ observé a posteriori □ quantitative
□ choisi a priori par l’expérimentateur □ qualitative
□ observé a posteriori □ quantitative
□ choisi a priori par l’expérimentateur □ qualitative
□ observé a posteriori □ quantitative
□ choisi a priori par l’expérimentateur □ qualitative
□ observé a posteriori □ quantitative
□ choisi a priori par l’expérimentateur □ qualitative
□ observé a posteriori □ quantitative
□ choisi a priori par l’expérimentateur □ qualitative
□ observé a posteriori □ quantitative
□ choisi a priori par l’expérimentateur □ qualitative
□ observé a posteriori □ quantitative
□ choisi a priori par l’expérimentateur □ qualitative
□ observé a posteriori □ quantitative
□ choisi a priori par l’expérimentateur □ qualitative
□ observé a posteriori □ quantitative
□ choisi a priori par l’expérimentateur □ qualitative
□ observé a posteriori □ quantitative

Q. En vous basant sur vos connaissances relatives au système "Légumineuses – Rhizobium" et à la


problématique de spécificité d'hôtes, quelles questions biologiques pourriez-vous formuler à
partir de ces données ?
1.

2.

3.

4.

5.

Q. Pour chacune des questions :


a. Quelle(s) est(sont) la (les) variable(s) en jeu ?
b. Quel graphique serait le plus pertinent pour illustrer la question ?
c. Laquelle (lesquelles) des analyses statistiques vues au S3 (rappel ci-dessous) pourriez-
vous mettre en œuvre pour répondre à la question ?
Tests de comparaison de moyennes de 2 échantillons Régression linéaire simple, corrélation
Tests de comparaison de moyennes de > 2 échantillons Chi2 de conformité
Test de comparaison des variances de 2 échantillons Chi2 d’indépendance

2
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques

Le logiciel R et l’interface RStudio


R est un langage de programmation utilisé pour le traitement de données et
l’analyse statistique. C’est un logiciel gratuit du type « open source » dont certaines
fonctionnalités sont disponibles dans des bibliothèques (library en anglais). R
fonctionne en mode lignes de commande, mais des interfaces permettent une
utilisation plus conviviale. C’est le cas de l’interface RStudio.
R et RStudio sont installés sur les ordinateurs des salles informatiques, mais vous
pouvez les installer sur votre ordinateur personnel (voir encadré ci-dessous et guide
d’installation disponible sur Moodle).

Installation de R et de RStudio sur votre ordinateur personnel


Il faut commencer par installer le logiciel R puis l’interface graphique RStudio.
1) Rendez vous à l’adresse suivante : http://www.r-project.org/
2) Cliquez sur « CRAN » (à gauche de l’écran, dans la rubrique « Download »). Vous êtes alors dirigé sur
une page listant les différents sites « miroir ».
3) Choisissez un site « miroir » (n’importe lequel). Une nouvelle page s’ouvre.
4) Sélectionnez le système d’exploitation de votre ordinateur dans la rubrique « Download and install R »
(3 possibilités : Linux, MacOS X, Windows). Une nouvelle page s’ouvre.
Si vous avez choisi Windows comme système d’exploitation :
5) Cliquez sur « base ». Une nouvelle page s’ouvre.
6) Téléchargez le fichier d’installation du logiciel R (fichier .exe) en cliquant sur « Download R 4.0.4 for
Windows » (ou une version ultérieure si vous installez R dans quelques mois). NB : il faut se souvenir
du répertoire dans lequel a été téléchargé le fichier .exe !
7) Installez le logiciel « classiquement » en suivant les instructions données par votre système
d’exploitation. R est maintenant installé sur votre ordinateur.
8) Allez maintenant sur le site de RStudio : https://rstudio.com/products/rstudio/
9) Choisissez la version « RStudio desktop », puis cliquez sur « Dowload RStudio desktop ».
10) Choisissez la version « open source » et gratuite (free) de RStudio, puis celle recommandée selon le
système d’exploitation de votre machine.
11) Téléchargez le fichier d’installation de RStudio (fichier .exe).
12) Installez RStudio « classiquement » en suivant les instructions données par votre système
d’exploitation. RStudio est maintenant installé sur votre ordinateur.
13) Ouvrez l’interface RStudio (icône sur le bureau ou dans la liste des programmes installés).
14) Bravo, vous êtes (normalement) prêt à utiliser R via l’interface RStudio !!!

Description de l’interface RStudio


 Ouvrez RStudio.
Cette interface est composée de trois ou quatre fenêtres selon la configuration de RStudio sur votre
ordinateur :
- Fenêtre d’édition (en haut à gauche mais il est possible que cette fenêtre ne soit pas active lors
de la première ouverture de RStudio) : elle contient les scripts de commandes R. Nous
reviendrons sur cette notion de script de commandes plus loin.
- Fenêtre de commande (en bas à gauche ou à gauche selon la présence ou non de la fenêtre
d’édition) : elle contient une console dans laquelle les commandes R sont saisies pour être
exécutées.
- Fenêtre Environment / History (en haut à droite) : elle contient les objets en mémoire ainsi que
l’historique des commandes exécutées.
- Fenêtre Files / Plots / Packages / Help (en bas à droite) : l’onglet Files (explorateur) permet
de se déplacer dans l’arborescence des répertoires, l’onglet Plots contient les graphiques
tracés, l’onglet Packages montre les bibliothèques installées et actuellement chargées et
l’onglet Help contient la documentation d’aide sur les fonctions et bibliothèques.

3
UE Biologie et Ecologie Expérimentales – 2020/2021 – TP Biostatistiques

Création et exécution d’un script de commandes


Pour simplifier le dialogue avec R, nous allons écrire les commandes dans un script. Ces commandes
seront ensuite lues et exécutées par R qui affichera les résultats numériques dans la console (fenêtre en
bas à gauche) et, s’il y a lieu, les graphiques dans la fenêtre en bas à droite. Ce système est très
pratique car il permet de sauvegarder facilement le travail réalisé et de refaire une analyse sans avoir à
retaper l’ensemble des commandes. Il est également possible d’annoter ce script (symbole # devant le
commentaire pour préciser à R que ce n’est pas une commande à exécuter).
 Pour créer un nouveau script, cliquez sur le bouton en haut à gauche (sous File, page blanche avec
le symbole + en vert). Puis choisissez « R script ».
Une fenêtre nommée « Untitled1 » s’ouvre en haut à gauche : il s’agit d’un script de commandes R.
C’est dans cette fenêtre que toutes les commandes permettant d’importer les données et de les analyser
seront écrites, puis envoyées vers la console R où elles seront exécutées.
 Enregistrez dès maintenant dans votre répertoire de travail le script de commandes en cliquant sur
la disquette. Nommez ce script « scriptR ». Par défaut, les scripts R sont enregistrés au format
« .R ».

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 ?

Les objets dans R


Le résultat de l’opération précédente peut être stocké dans un objet. Le symbole = (équivalent au
symbole <-) permet d’assigner un contenu dans un objet dont le nom est défini par l’utilisateur. Ce
nom doit débuter par une lettre, mais la suite peut comporter des lettres (majuscules ou minuscules),
des chiffres, des points et des tirets.
 Tapez la commande objet1 = 3 + 4 (avec ou sans espace) à la ligne suivante de votre script et
exécutez-la. 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

Q. Tapez maintenant l’opération arithmétique de votre choix permettant d’obtenir la valeur 10


comme résultat à partir d’objet1. Il y a plein de solutions possibles, plus ou moins complexes !
Stockez ce résultat dans un objet nommé objet2.

Importation d’un tableau de données dans R (dataframe)


Après cette prise en main des objets, nous allons importer un tableau de données dans R (objet de type
dataframe). Le tableau doit répondre à un certain nombre de critères : il ne doit y avoir ni accent, ni
symbole, ni espace, les noms des colonnes doivent être simples et les éventuelles valeurs manquantes
doivent être remplacées par des NA (pour Non Available, c’est-à-dire des données non renseignées).
Le format préférentiel pour l’importation d’un tableau de données dans R est « .csv » (ou « .txt »).
Le tableau ‘data.csv’ que vous avez téléchargé sur Moodle au début de la séance répond à tous ces
critères.
 Précisez à R le chemin d’accès vers le répertoire où est enregistré le tableau. Pour cela, utilisez le
menu Session / Set Working Directory / Choose Directory… et sélectionnez le répertoire dans
l’arborescence Windows 2.
 Recopiez dans votre script R la ligne de commande commençant par setwd qui est apparue dans la
console. Cela vous sera très utile pour les TP suivants.
 Tapez la commande ci-dessous puis exécutez-la. Que se passe-t-il ?
sitesABC = read.csv("data.csv", header = TRUE, sep = ";", dec = ",")

Le principe des fonctions dans R


Sans le savoir, vous venez d’utiliser deux fonctions du logiciel R ! R est en effet basé sur des fonctions
prédéfinies correspondant chacune à une tâche ou une analyse bien précise. Chaque fonction porte un
nom et est suivie de parenthèses entre lesquelles des arguments sont indiqués. Pour réaliser vos
analyses, il suffira donc de connaître le nom de quelques fonctions basiques 3. Il existe une page d’aide
(en anglais) pour chaque fonction. On peut y accéder en tapant « ? » suivie du nom de la fonction dans
le script puis en exécutant la commande (bouton « Run »). La page d’aide s’ouvre dans la fenêtre en
bas à droite (onglet Help).
Q. Quels sont les noms des deux fonctions qui ont été utilisées précédemment ? Affichez leur aide.

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

Q. En vous aidant de l’aide, « décryptez » la syntaxe R de la ligne de commande commençant par


sitesABC = tapée précédemment, notamment le rôle de chaque argument. Quel est le nom du tableau
importé dans R ?

Visualisation du tableau de données


Il est possible de visualiser le tableau de données afin de contrôler que son importation s’est bien
déroulée. Il s’affiche dans la fenêtre en haut à gauche.
 Cliquez sur le nom du tableau importé dans la fenêtre Environment (en haut à droite) ou tapez
View(sitesABC) dans le script puis exécutez cette commande.

Description du tableau de données


Nous allons maintenant décrire quantitativement le tableau de données.
 Tapez la commande summary(sitesABC) dans la fenêtre de script puis exécutez la. Que se passe-t-
il ? Pour chacune des variables, expliquez à quoi correspond chacun des termes affichés.

Création de nouvelles variables (vecteurs)


A partir des variables mesurées initialement, il peut être intéressant de créer de nouvelles variables. On
peut par exemple s’intéresser à la masse fraîche totale (en grammes) qui représente la somme des
masses fraîches de racines (hypogée) et de parties aériennes (épigée).
 Tapez puis exécutez la commande :
MF_totale = sitesABC$MF_hypogee + sitesABC$MF_epigee

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 ?

Création d’un sous-ensemble de données (subset)


Si l’on souhaite s’intéresser uniquement à une espèce de plante-hôte (ex : Vicia sativa), il peut être
pratique de ne considérer qu’un sous-tableau de notre jeu de données.
 Tapez la commande : vicia = subset(sitesABC, Espece == "Vicia_sativa")
Visualisez ce nouveau tableau.
Q. Combien de lignes et de colonnes possède ce nouveau tableau ?

Enregistrement du script de commandes


Puisque vous allez travailler sur ces données au cours des prochaines séances, il est recommandé de
garder une trace des commandes réalisées.
 Pour cela, il vous suffit de sauvegarder le script en cliquant sur l’icône représentant une disquette
dans la fenêtre de script.
 Vous pouvez ensuite fermer RStudio. Répondez « Don’t save » à la question « Save workspace
image to ~/.RData ».

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 ?

 Réalisez le test retenu 6 : wilcox.test(MF_epigee ~ Espece, data = trif)

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

Q. Posez les hypothèses H0 et H1 du test effectué et concluez.

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.

Exercice 2 : Le nombre de nodosités et la masse fraîche racinaire sont-ils liés ?

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 ?

 Exécutez la commande : plot(Nb_nodosites ~ MF_hypogee, data = sitesABC)


 Modifiez la commande précédente afin de donner un titre à votre graphique ainsi qu’aux axes et
afin de mettre les points en rouge.
Q. Que pensez-vous de la relation entre masse fraîche racinaire et nombre de nodosités ? Pour
répondre à cette question, il est bon d’avoir en tête des hypothèses biologiques a priori, c’est-à-dire
avant d’avoir tracé le graphique.

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.

Q. Quelles sont les hypothèses H0 et H1 du test ? Que pouvez-vous conclure ?

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 ?

 Affichez les paramètres du modèle ajusté en tapant mod_nodo.


Q. Que signifie intercept ? Que représente chacun des autres paramètres du modèle ?

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 ?

Q. Rappelez les conditions de validité du modèle linéaire.

 Commencez par tracer l’histogramme des résidus du modèle.


 Tracez également le graphique Normal Q-Q qui représente les quantiles observés pour les résidus
en fonction de ceux d'une loi Normale théorique (commandes page 14). Ce graphique permet de
diagnostiquer d’éventuels écarts à la normalité des résidus d’un modèle.

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 ?

 Réalisez un test de normalité sur les résidus du modèle.


Q. Que pouvez-vous en conclure ?

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)

Q. Comment pouvez-vous conclure à partir de ce résultat ? Comment rapporter ce résultat dans un


compte-rendu scientifique ?

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

Q. Quelles conclusions tirez-vous de cette analyse ?

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.

Exercice 5 : Un même symbiovar a-t-il tendance à s’associer systématiquement avec la


même espèce de plante ?

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. Quelles variables allez-vous étudier dans cet exercice ?

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. Que représentent les valeurs contenues dans cette table ?

Q. A la lecture de cette table, que pensez-vous de la relation entre légumineuses et Rhizobium ?

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.

Les informations suivantes sont issues de vos TP et TD de typage moléculaire :


Des séquences du gène nodC ont été obtenues pour plusieurs échantillons
de nodosités des années précédentes, représentant les symbiovars SA à SM
(les profils RFLP de ces symbiovars servent de référence). Au TD2, vous
avez comparé une portion de 40 pb de ces séquences (portion 441-480)
pour analyser leurs similarités. Voici l’arbre phylogénétique construit en
TD avec ces portions de séquences. L'analyse de séquences est plus
discriminante que l'analyse PCR/RFLP, ainsi certains symbiovars
PCR/RFLP renferment différents types de séquences (SA les types SA1 et
SA2 et SC les types SC1, SC2 et SC3). Les lettres correspondent aux
symbiovars PCR/RFLP, alors que les numéros indiquent les symbiovars
PCR/RFLP splités par l'analyse de séquences.

Dendrogramme illustrant les similarités entre symbiovars


Le dendrogramme est basé sur le nombre de différences dans une portion de 40 bases des séquences de nodC
(portion entre les positions 441 et 480).

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. Que pouvez-vous en conclure au sujet de la spécificité d’hôtes entre légumineuses et Rhizobium ?

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

Principales fonctions R vues pendant les TPs

Pour plus d’informations, voir l’aide des fonctions dans R : ? nom de la fonction

Importation des données table(…)


setwd(dir = ‘…’) … : un (ou plusieurs) vecteur(s) qualitatif(s) pour
dir : le chemin d’accès vers le répertoire de travail le(s)quel(s) on veut obtenir la table de contingence
read.csv(file = ‘…’, header = …, sep = ‘…’,
dec = ‘…’) Tests statistiques
file : le nom du fichier shapiro.test(x = …)

header : TRUE si la 1ère


ligne du tableau correspond x : la variable (un vecteur) dont on veut tester la

aux noms des colonnes du tableau, FALSE sinon normalité de la distribution


wilcox.test(formula = …, alternative = ‘…’)
sep : le séparateur de colonnes (par exemple, si c’est le
formula : variable y en fonction de x (y ~ x)
point-virgule, sep = ‘;’)
alternative : hypothèse alternative qui doit être
dec : le séparateur de décimales (une virgule en
testée (‘two.sided’, ‘less’, ‘greater’)
français ou un point pour un anglo-saxon)
var.test(formula = …, alternative = ‘…’)
Visualisation des données formula : variable y en fonction de x (y ~ x)
View(x = …) alternative : hypothèse alternative qui doit être
x : le tableau de données (dataframe) à visualiser testée (‘two.sided’, ‘less’, ‘greater’)
summary(object = …) t.test(formula = …, alternative = ‘…’,
object : l’objet (vecteur, tableau, modèle) dont on var.equal = …)
veut avoir une vue globale formula : variable y en fonction de x (y ~ x)
mean(x = …, na.rm = …) alternative : hypothèse alternative qui doit être
x : vecteur dont on veut calculer la moyenne testée (‘two.sided’, ‘less’, ‘greater’)
na.rm : TRUE si les NA ne doivent pas être pris en var.equal : pour préciser si homoscédasticité (TRUE)
compte dans le calcul de la moyenne, FALSE sinon ou non (FALSE)
plot(formula = …, col = ‘…’, xlab = ‘…’, ylab cor.test(x = …, y = …, method = ‘…’)
= ‘…’, main = ‘…’ )
x : la première variable
formula : variable y (axe des ordonnées) en fonction
y : la seconde variable
de x (axe des abscisses), du type y ~ x
method : ‘spearman’ pour un test de Spearman,
col : la couleur en anglais et entre guillemets
‘pearson’ pour un test de Pearson
xlab et ylab : les légendes entre guillemets des axes
lm(formula = …, data = …)
X et Y, respectivement
formula : variable y en fonction de x (y ~ x)
main : le titre du graphique
data : le tableau qui contient les variables x et y
hist(x = …, xlab = ‘…’, main = ‘…’ )
bptest(formula = …)
x : les données dont on veut représenter la distribution
abline(a = …, b = …)
formula : variable y en fonction de x (y ~ x) ou le
a, b : valeurs de l’ordonnée et de la pente de la droite nom d’un modèle
anova(object = …)
Manipulation des données object : le modèle dont on veut obtenir la table
subset(x = …, subset = …) d’analyse de variance
x : l’objet dont on veut extraire un sous-ensemble chisq.test(x = …)
subset : le(s) critère(s) selon le(s)quel(s) on découpe x : la table de contingence
l’objet x pour obtenir le sous-ensemble
log(x = …)
Divers
library(package = …)
x : le vecteur sur lequel on souhaite appliquer le
package : la bibliothèque que l’on souhaite charger
logarithme népérien
dans l’espace de travail R

20