silico.biotoul.fr
 

L2-L3 Bioinfo - TP Analyses statistiques des données (phénotypes,génotypes)

From silico.biotoul.fr

(Difference between revisions)
Jump to: navigation, search
(Created page with '= Régression linéaire, probabilités et intervalles de confiance = Ce TP comporte trois parties: * Régression linéaire * Calculs simples de probabilité * Estimation d'un in…')
 
(71 intermediate revisions not shown)
Line 1: Line 1:
-
= Régression linéaire, probabilités et intervalles de confiance =
+
= Analyses statistiques des données (phénotypes, génotypes) =
-
Ce TP comporte trois parties:
+
Lors du TP précédent, vous avez manipulé une base de données comportant différentes sources d'informations concernant les lignées d'Arabettes analysées en traitement d'images, suite à l'infection par une bactérie pathogène.
-
* Régression linéaire
+
Dans le cadre du présent TP, vous allez analyser le tableau de données généré à partir de la base de données, avec le logiciel d'analyses statistiques R ou RStudio.
-
* Calculs simples de probabilité
+
-
* Estimation d'un intervalle de confiance d'un paramètre (moyenne, proportion)
+
<span style='color: #990000'>
<span style='color: #990000'>
-
Créer un répertoire de travail sur le bureau (par exemple TDB-TP2) et commencez par télécharger le fichier source que vous allez utiliser et compléter pour générer le compte rendu de TP : [[Media:M1.TDB.TP_reglin_proba_ic_R.Rmd|M1.TDB.TP_reglin_proba_ic_R.Rmd]] (click droit de la souris -- enregistrer la cible sous...).
+
Créer un répertoire de travail sur le bureau (par exemple TP3) et téléchargez le fichier de données [[Media:data_for_TP3.txt|données TP3]] (click droit de la souris -- enregistrer la cible sous...).
-
</span>
+
</span> Sous RStudio, changez le répertoire courant vers le répertoire contenant le fichier de données. Pour cela, <span style='color: #990000;'>cliquez sur le menu <tt>Session</tt> puis <tt>Set Working Directory > Choose Directory</tt>.  
-
Ouvrez le logiciel RStudio et chargez ce fichier puis lancez sa compilation pour voir le compte rendu. Pour cela cliquez sur le bouton Knit HTML ou bien utilisez la combinaison de touches Ctrl + shift + K.  
+
-
= Régression linéaire =
+
<span style='color: #990000'> '''!! Si vous travaillez avec Rstudio Cloud, il suffit de vous connecter avec vos identifiants sur https://rstudio.cloud, et de créer un "New Project" !!''' </span>
-
On cherche à détecter une corrélation entre deux variables quantitatives mesurées sur les mêmes individus.
+
-
Notre exemple: pour différentes espèces de bactéries, nous connaissons (i) la taille du génome grâce au séquençage, (ii) le nombre de séquences codantes prédites par un algorithme bioinformatique.
+
-
Téléchargez et sauvegardez le fichier [[Media:bacterial_genomes.txt|bacterial_genomes.txt]] dans le répertoire crée pour ce TP (click droit de la souris -- enregistrer la cible sous...).
+
-
<span style='color: #990000'>
 
-
Quelle(s) question(s) peut-on se poser ?
 
-
</span>
 
== Lecture et exploration du tableau de données ==
== Lecture et exploration du tableau de données ==
Line 24: Line 15:
Lecture:
Lecture:
<source lang='rsplus'>
<source lang='rsplus'>
-
genomes=read.table("bacterial_genomes.txt", sep="\t", header=TRUE)
+
#arabido=read.table("data_for_TP3.txt", sep="\t", header=TRUE)
</source>
</source>
-
Accéder directement aux variables simplement en donnant leurs noms:
+
ou directement à partir de l'URL du fichier (pratique si vous êtes sous Rstudio Cloud):
<source lang='rsplus'>
<source lang='rsplus'>
-
attach(genomes)
+
arabido=read.table("http://silico.biotoul.fr/site/images/6/63/Data_for_TP3.txt", stringsAsFactors=T, sep="\t", header=TRUE) # nécessite une connexion internet
-
names(genomes)
+
-
Genome_size
+
-
ORF_number
+
</source>
</source>
-
<span style='color: #990000'>
+
Accéder directement aux variables simplement en donnant leurs noms:
-
Quelle est l'unité de mesure pour <tt>Genome_size</tt> ?
+
-
</span>
+
-
 
+
-
Faire un graphique:
+
<source lang='rsplus'>
<source lang='rsplus'>
-
plot(Genome_size,ORF_number,pch=16)
+
attach(arabido)
 +
names(arabido)
</source>
</source>
-
Quantifier la relation entre ces 2 variables:
 
-
* covariance
 
-
<source lang='rsplus'>
 
-
cov(Genome_size,ORF_number)
 
-
</source>
 
-
* coefficient de corrélation ''r'' de Pearson
 
-
<source lang='rsplus'>
 
-
cor(Genome_size,ORF_number)
 
-
</source>
 
-
== Régression ==
+
Il faut savoir que:
 +
* pour les marqueurs de type "Gene_At" et "RetroTransp" c'est la présence/absence du locus qui est codée 1/0.
 +
* pour les marqueurs de type SNP c'est le nucléotide présent qui est mentionné ("A ou G", "C ou A", etc...).
-
<span style='color: #990000;'>
+
<span style='color: #990000'>
-
Calculer une fonction linéaire qui relie les 2 variables, avec la commande <tt>lm()</tt>
+
Quelles sont les dimensions du tableau ? Combien y-a-t-il de variables ? Pour cela utilisez la fonction dim().
-
</span>:
+
Repérez les variables quantitatives (numériques) et les variables qualitatives (facteur, variable binaire). Pour cela vous pouvez utilisez par exemple la fonction summary(), ou str().
-
<source lang='rsplus'>
+
-
lm(ORF_number ~ Genome_size) # remarque: c'est une régression de "y" sur "x", d'où lm(y~x)
+
-
</source>
+
-
 
+
-
Gardons en mémoire le résultat de la régression:
+
-
<source lang='rsplus'>
+
-
reglin=lm(ORF_number ~ Genome_size)
+
-
</source>
+
-
 
+
-
On peut vérifier la significativité des coefficients de la droite avec:
+
-
<source lang='rsplus'>
+
-
summary(reglin)
+
-
</source>
+
-
 
+
-
<span style='color: #990000;'>
+
-
Quelle est l'équation de la droite de régression ?
+
</span>
</span>
-
Calculez le coefficient de détermination R2 (% de variance expliquée par le modèle linéaire ==> bien si > 70%):
+
== Graphiques ==
-
<source lang='rsplus'>
+
-
cor(Genome_size,ORF_number)^2 #(stocké aussi dans summary(reglin))
+
-
</source>
+
-
Représenter le nuage de points avec la droite de régression:
 
-
<source lang='rsplus'>
 
-
plot(Genome_size,ORF_number,pch=16)
 
-
abline(reglin,col="red",lwd=2)
 
-
</source>
 
-
<span style='color: #990000;'>Ajoutez ces parties à votre compte rendu.</span>
+
* Réalisez un graphique permettant de visualiser la corrélation entre la surface des feuilles et le nombre de racines latérales, en utilisant la fonction plot() [exemple: plot(x,y)].
 +
* Réalisez un graphique permettant de visualiser la corrélation entre la surface des feuilles et la latitude, de même avec la longitude, en utilisant la fonction plot().
 +
* Réalisez un graphique permettant de visualiser l'effet de la présence/absence naturelle de la bactérie dans le pays d'origine des plantes, sur la surface foliaire, en utilisant la fonction boxplot() [exemple: boxplot(y~x)]. 
 +
<span style='color: #990000'>
 +
Qu'en déduisez-vous?
 +
</span>
-
= Calculs de probabilité =
 
-
== Calculs basés sur des données ==
+
== Calculs de corrélations ==
-
L'exemple porte sur la taille des arbres dans une forêt de séquoias.
 
-
Téléchargez et sauvegardez le fichier [[Media:sequoia.txt|sequoia.txt]] (click droit de la souris -- enregistrer la cible sous...).
 
-
Lecture du tableau de données:
+
* Calculez 2 à 2 le coefficient de corrélation entre la surface des feuilles avec le nombre de racines latérales, puis avec la latitude et la longitude, en utilisant la fonction cor() [exemple: cor(x,y)].
-
<source lang='rsplus'>
+
<span style='color: #990000'>
-
sequoia=read.table("sequoia.txt", sep="\t", header=TRUE)
+
Cela vous semble-t-il en cohérence avec les graphiques précédents?
-
attach(sequoia);names(sequoia)
+
-
</source>
+
-
 
+
-
Représentation graphique des données:  
+
-
<source lang='rsplus'>
+
-
hist(taille_arbre)
+
-
</source>
+
-
 
+
-
<span style='color: #990000;'>
+
-
Quelle est la probabilité qu'un arbre mesure 80m ?
+
</span>
</span>
-
<source lang='rsplus'>
 
-
length(taille_arbre[taille_arbre==80])/length(taille_arbre)
 
-
</source>
 
-
ou mieux :
 
-
<source lang='rsplus'>
 
-
length( which(taille_arbre==80) ) / length(taille_arbre)
 
-
</source>
 
-
 
-
 
-
<span style='color: #990000;'>
 
-
Quelle est la probabilité qu'un arbre mesure plus de 100 ?
 
-
</span>
 
-
 
-
<source lang='rsplus'>
 
-
length( which(taille_arbre>100) ) / length(taille_arbre)
 
-
</source>
 
-
 
-
== Calculs basés sur des lois (ou distributions) de probabilité  ==
 
-
Différentes lois sont programmées (binomiale, Poisson, normale, chi2 ou <math>\chi^2</math>, ...)
+
== Tests statistiques de corrélation/association entre les valeurs phénotypiques des individus et leurs génotypes aux marqueurs moléculaires ==
-
Il y a plusieurs fonctions pour chaque loi. Par exemple, pour la loi normale:
+
-
* <tt>dnorm()</tt> : fonction densité ('''d'''ensity)
+
-
* <tt>pnorm()</tt> : fonction de répartition ('''p'''robability)
+
-
* <tt>qnorm()</tt> : fonction quantile ('''q'''uantile)
+
-
* <tt>rnorm()</tt> : générateur aléatoire ('''r'''andom)
+
-
=== Calculs basés sur une loi normale centrée réduite <math>N(0,1)</math> ===
 
-
'''Rappels :'''
+
* Réalisez un test de comparaison des valeurs moyennes de la surface des feuilles pour les groupes génotypiques à chaque marqueur biallélique (test de Student). Pour cela, utilisez la commande t.test().
-
* Une '''loi normale''' est définie par '''2 paramètres''' : la '''moyenne''' et l''''écart-type'''.  
+
Utilisez le code suivant pour programmer une série de tests de Student sur différentes colonnes du tableau, et interprétez chaque test grâce à la p-valeur donnée.
-
* La '''loi normale centrée réduite''' est la loi normale dont la moyenne est '''0''' et l'écart-type '''1'''. Elle est notée généralement <math>N(0,1)</math> (0 pour la moyenne et 1 pour l'écart-type de la variable X).
+
-
[[Image:loi_normale.jpeg|thumb|400px|link=|Fonction de densité de la loi normale centrée réduite <math>N(0,1)</math>]]
+
Premier test : surface foliaire vs. présence/absence de Gene_At1g01120 (qui est la colonne 8)
-
Probabilité de X = 0, notée <math>P(X = 0)</math>
 
<source lang='rsplus'>
<source lang='rsplus'>
-
dnorm(0,0,1)
+
t.test(Leaf_area ~ Gene_At1g01120)
</source>
</source>
-
<math>P(X \le 0)</math> :
+
Pour automatiser un peu sur les colonnes restantes, on fait des itérations sur les noms des colonnes 9 à 15 :
-
<source lang='rsplus'>
+
-
pnorm(0,0,1)
+
-
</source>
+
-
<math>P(X > 0)</math> :
 
<source lang='rsplus'>
<source lang='rsplus'>
-
1-pnorm(0,0,1) # ou pnorm(0,0,1, lower.tail=F)
+
for (i in names(arabido)[9:15]) {
 +
  cat(paste("Leaf_area vs.", i))
 +
  print(t.test(Leaf_area~arabido[,i]))
 +
}
</source>
</source>
-
Histogramme pour 100 valeurs échantillonnées aléatoirement suivant une <math>N(0,1)</math> :
+
<span style='color: #990000'>
-
<source lang='rsplus'>
+
Essayez de comprendre ce code.
-
hist(rnorm(100,0,1))
+
Que concluez-vous de ces analyses statistiques?
-
</source>
+
-
 
+
-
 
+
-
 
+
-
'''Application à la forêt de séquoias'''
+
-
 
+
-
<span style='color: #990000;'>
+
-
Utilisez la moyenne et l'écart-type des tailles des séquoias chargées précédemment pour calculer la probabilité qu'un arbre mesure 80m selon la loi normale paramétrée ainsi.
+
</span>
</span>
-
<span style='color: #990000;'>
+
rappels/éléments pour bien interpréter le test statistique:
-
Quelle est la probabilité qu'un séquoia mesure plus de 110m ?
+
* l'hypothèse nulle (H0) du test de Student est l'égalité des moyennes des 2 groupes testés (ou plus précisément H0 = "la différence des moyennes est égale à 0"). On ne rejette pas cette hypothèse H0 si la p-valeur est > 0.05. On rejette cette hypothèse H0 en faveur de l'hypothèse alternative H1 ("il y a une différence significative entre les moyennes") si la p-valeur est < 0.05 (c'est le seuil d'erreur de 5%). La p-valeur peut s'interpréter pour ce test comme la probabilité d'observer, sous l'hypothèse H0 (où cette différence varie autour de 0 par effet d'échantillonnage), une différence de moyenne plus forte que celle observée sur les données.
-
</span>
+
* la p-valeur peut aussi se définir plus généralement comme la probabilité de se tromper en rejetant l'hypothèse H0 alors que celle-ci est vraie. Au plus cette probabilité est faible (en particulier < 0.05), au moins on fait d'erreur en rejetant l'hypothèse nulle.
-
<!--span style='color: #990000;'>
 
-
Quelle est la probabilité qu'un arbre pris au hasard dans cette forêt et qui mesure 70m soit un séquioa  ?
 
-
</span-->
 
-
=== Calculs basés sur une loi Binomiale <math>B(n,p)</math> ===
+
* Réalisez enfin des graphiques permettant de visualiser les corrélations phénotype / génotype pour les marqueurs significativement associés aux valeurs phénotypiques de surface des feuilles (utilisez la fonction boxplot(y~x)].
-
 
+
-
Exemple: pour un lot de n=100 graines d'Arabidopsis ayant chacune une probabilité de germination p=0.8 donc selon <math>B(100,0.8)</math>
+
-
 
+
-
La probabilité que k=80 graines germent (k=nombre de succès)
+
-
<source lang='rsplus'>
+
-
dbinom(80,100,prob=0.8)
+
-
</source>
+
-
+
-
La probabilité que au maximum 80 graines germent
+
-
<source lang='rsplus'>
+
-
pbinom(80,100,prob=0.8)
+
-
</source>
+
-
 
+
-
La probabilité que plus de 80 graines germent
+
-
<source lang='rsplus'>
+
-
pbinom(80,100,prob=0.8, lower.tail=F)
+
-
</source>
+
<span style='color: #990000'>
<span style='color: #990000'>
-
En moyenne, combien de graines devraient germer ?
+
Que concluez-vous de ces analyses statistiques? Donnez une explication aux résultats observés.
</span>
</span>
-
La distribution Binomiale <math>B(100,0.8)</math>:
 
-
<source lang='rsplus'>
 
-
k=seq(0,100,1)    # k=nombre de graines qui germent
 
-
plot(dbinom(k,100,prob=0.8),xlab="k",ylab="Prob(X=k)")
 
-
</source>
 
-
<span style='color: #990000;'>
 
-
Ajoutez ces parties à votre compte rendu.
 
-
</span>
 
-
= Estimer un intervalle de confiance (IC) d'un paramètre populationnel (µ, p,...) à partir d'un échantillon =
+
La présence/absence du locus At5g46330 semble conditionner la réponse à l'infection par la bactérie chez les plantes. Le prochain TP (TP4) consistera en l'étude de ce locus à l'aide de bases de données et d'analyses de séquences ...
-
 
+
-
== Intervalle de confiance de la moyenne théorique µ de la population, à partir de la moyenne m calculée sur un échantillon ==
+
-
 
+
-
Calculer l'intervalle de confiance (IC) du poids moyen théorique d'une récolte de tomates cerises, à partir d'un échantillon.
+
-
<span style='color: #990000;'>
+
-
Téléchargez et sauvegardez le fichier le fichier [[Media:tomates_cerises.txt|tomates_cerises.txt]] (click droit de la souris -- enregistrer la cible sous...).
+
-
</span>
+
-
 
+
-
Lecture du tableau de données:
+
-
<source lang='rsplus'>
+
-
tomates=read.table("tomates_cerises.txt", sep="\t", header=TRUE)
+
-
attach(tomates);names(tomates)
+
-
poids_tomate
+
-
</source>
+
-
 
+
-
Script pour calculer l'IC:
+
-
<source lang='rsplus'>
+
-
m = mean(poids_tomate)  # moyenne calculée sur l'échantillon
+
-
s = sd(poids_tomate)    # écart-type calculé sur l'échantillon
+
-
n = length(poids_tomate)# taille de l'échantillon
+
-
</source>
+
-
 
+
-
Si n<100, on utilise la distribution de Student pour calculer la marge d'erreur. Ici, nous allons calculer l'intervalle ayant 95% de chance de contenir la vraie moyenne de la population (et pas celle de l'échantillon).
+
-
<source lang='rsplus'>
+
-
error <- qt(0.975,df=n-1)*s/sqrt(n) # qt(0.975) = quantile 97,5% de la distribution de Student ; s/sqrt(n) = erreur standard de la moyenne
+
-
left  <- m-error
+
-
right <- m+error
+
-
</source>
+
-
L'intervalle ayant 95% de chance de contenir la vraie moyenne µ de la population est:
+
-
<source lang='rsplus'>
+
-
left;right
+
-
</source>
+
-
 
+
-
Si n>100 on utilise la distribution normale pour calculer l'erreur.
+
-
<source lang='rsplus'>
+
-
error <- qnorm(0.975)*s/sqrt(n) # qnorm(0.975) = quantile 97,5% de la distribution normale
+
-
left  <- m-error
+
-
right <- m+error
+
-
</source>
+
-
L'intervalle ayant 95% de chance de contenir la vraie moyenne µ de la population est alors:
+
-
<source lang='rsplus'>
+
-
left;right
+
-
</source>
+
-
 
+
-
'''REMARQUE IMPORTANTE :''' si l'on veut un IC à 99% ==> remplacer 0.975 par 0.995.
+
-
 
+
-
== IC de la proportion théorique p d'un caractère dans la population, à partir de la fréquence f calculée sur un échantillon ==
+
-
 
+
-
Calcul de l'IC de la proportion théorique de pommes rouges dans une récolte comportant des pommes rouges et vertes, à partir d'un échantillon de n=125 pommes contenant f=0.4 de pommes rouges (40%).
+
-
On utilise une approximation normale de la distribution d'une proportion :
+
-
<source lang='rsplus'>
+
-
f <- 0.4 # fréquence de pommes rouges dans l'échantillon
+
-
n <- 125 # taille de l'échantillon
+
-
error <- qnorm(0.975)*sqrt(f*(1-f)/n)
+
-
left  <- f-error
+
-
right <- f+error
+
-
</source>
+
-
L'intervalle ayant 95% de chance de contenir la vraie proportion p de la population est:
+
-
<source lang='rsplus'>
+
-
left;right
+
-
</source>
+
-
 
+
-
<span style='color: #990000;'>
+
-
Faites varier la taille de l'échantillon ainsi que la confiance.
+
-
</span>
+
-
 
+
-
 
+
-
<span style='color: #990000;'>Ajoutez tout cela au compte rendu de TP avant de l'envoyer à votre enseignant par mail ([mailto:bonhomme@lrsv.ups-tlse.fr bonhomme@lrsv.ups-tlse.fr] ou [mailto:barriot@biotoul.fr barriot@biotoul.fr]). Le compte rendu est à envoyer '''avant de commencer le TP3'''. Envoyez les 2 fichiers (.Rmd et .html). Envoyez-vous aussi le mail en copie pour pouvoir vérifier que tout est bien passé. Mettez un titre tel que "Compte rendu TP2 TDB de -et votre Nom et Prénom-".</span>
+
= Liens =
= Liens =
-
 
* Site de R : http://www.r-project.org et sites miroirs (dont ceux en France) pour télécharger le logiciel et les librairies : https://cran.r-project.org/mirrors.html
* Site de R : http://www.r-project.org et sites miroirs (dont ceux en France) pour télécharger le logiciel et les librairies : https://cran.r-project.org/mirrors.html
* RStudio : https://www.rstudio.com
* RStudio : https://www.rstudio.com
-
* Utilisation de R depuis un navigateur : http://www.r-fiddle.org
 
-
Chargement des données avec l'adresse des fichiers
 
-
<source lang='rsplus'>
 
-
genomes=read.table("http://silico.biotoul.fr/site/images/d/de/Bacterial_genomes.txt", sep="\t", header=TRUE)
 
-
sequoia=read.table("http://silico.biotoul.fr/site/images/e/e1/Sequoia.txt", sep="\t", header=TRUE)
 
-
tomates=read.table("http://silico.biotoul.fr/site/images/3/3d/Tomates_cerises.txt", sep="\t", header=TRUE)
 
-
</source>
 

Current revision as of 10:21, 15 February 2021

Contents

Analyses statistiques des données (phénotypes, génotypes)

Lors du TP précédent, vous avez manipulé une base de données comportant différentes sources d'informations concernant les lignées d'Arabettes analysées en traitement d'images, suite à l'infection par une bactérie pathogène. Dans le cadre du présent TP, vous allez analyser le tableau de données généré à partir de la base de données, avec le logiciel d'analyses statistiques R ou RStudio.

Créer un répertoire de travail sur le bureau (par exemple TP3) et téléchargez le fichier de données données TP3 (click droit de la souris -- enregistrer la cible sous...). Sous RStudio, changez le répertoire courant vers le répertoire contenant le fichier de données. Pour cela, cliquez sur le menu Session puis Set Working Directory > Choose Directory.

!! Si vous travaillez avec Rstudio Cloud, il suffit de vous connecter avec vos identifiants sur https://rstudio.cloud, et de créer un "New Project" !!


Lecture et exploration du tableau de données

Lecture:

#arabido=read.table("data_for_TP3.txt", sep="\t", header=TRUE)

ou directement à partir de l'URL du fichier (pratique si vous êtes sous Rstudio Cloud):

arabido=read.table("http://silico.biotoul.fr/site/images/6/63/Data_for_TP3.txt", stringsAsFactors=T, sep="\t", header=TRUE) # nécessite une connexion internet

Accéder directement aux variables simplement en donnant leurs noms:

attach(arabido)
names(arabido)


Il faut savoir que:

  • pour les marqueurs de type "Gene_At" et "RetroTransp" c'est la présence/absence du locus qui est codée 1/0.
  • pour les marqueurs de type SNP c'est le nucléotide présent qui est mentionné ("A ou G", "C ou A", etc...).

Quelles sont les dimensions du tableau ? Combien y-a-t-il de variables ? Pour cela utilisez la fonction dim(). Repérez les variables quantitatives (numériques) et les variables qualitatives (facteur, variable binaire). Pour cela vous pouvez utilisez par exemple la fonction summary(), ou str().

Graphiques

  • Réalisez un graphique permettant de visualiser la corrélation entre la surface des feuilles et le nombre de racines latérales, en utilisant la fonction plot() [exemple: plot(x,y)].
  • Réalisez un graphique permettant de visualiser la corrélation entre la surface des feuilles et la latitude, de même avec la longitude, en utilisant la fonction plot().
  • Réalisez un graphique permettant de visualiser l'effet de la présence/absence naturelle de la bactérie dans le pays d'origine des plantes, sur la surface foliaire, en utilisant la fonction boxplot() [exemple: boxplot(y~x)].

Qu'en déduisez-vous?


Calculs de corrélations

  • Calculez 2 à 2 le coefficient de corrélation entre la surface des feuilles avec le nombre de racines latérales, puis avec la latitude et la longitude, en utilisant la fonction cor() [exemple: cor(x,y)].

Cela vous semble-t-il en cohérence avec les graphiques précédents?


Tests statistiques de corrélation/association entre les valeurs phénotypiques des individus et leurs génotypes aux marqueurs moléculaires

  • Réalisez un test de comparaison des valeurs moyennes de la surface des feuilles pour les groupes génotypiques à chaque marqueur biallélique (test de Student). Pour cela, utilisez la commande t.test().

Utilisez le code suivant pour programmer une série de tests de Student sur différentes colonnes du tableau, et interprétez chaque test grâce à la p-valeur donnée.

Premier test : surface foliaire vs. présence/absence de Gene_At1g01120 (qui est la colonne 8)

t.test(Leaf_area ~ Gene_At1g01120)

Pour automatiser un peu sur les colonnes restantes, on fait des itérations sur les noms des colonnes 9 à 15 :

for (i in names(arabido)[9:15]) {
  cat(paste("Leaf_area vs.", i))
  print(t.test(Leaf_area~arabido[,i]))
}

Essayez de comprendre ce code. Que concluez-vous de ces analyses statistiques?

rappels/éléments pour bien interpréter le test statistique:

  • l'hypothèse nulle (H0) du test de Student est l'égalité des moyennes des 2 groupes testés (ou plus précisément H0 = "la différence des moyennes est égale à 0"). On ne rejette pas cette hypothèse H0 si la p-valeur est > 0.05. On rejette cette hypothèse H0 en faveur de l'hypothèse alternative H1 ("il y a une différence significative entre les moyennes") si la p-valeur est < 0.05 (c'est le seuil d'erreur de 5%). La p-valeur peut s'interpréter pour ce test comme la probabilité d'observer, sous l'hypothèse H0 (où cette différence varie autour de 0 par effet d'échantillonnage), une différence de moyenne plus forte que celle observée sur les données.
  • la p-valeur peut aussi se définir plus généralement comme la probabilité de se tromper en rejetant l'hypothèse H0 alors que celle-ci est vraie. Au plus cette probabilité est faible (en particulier < 0.05), au moins on fait d'erreur en rejetant l'hypothèse nulle.


  • Réalisez enfin des graphiques permettant de visualiser les corrélations phénotype / génotype pour les marqueurs significativement associés aux valeurs phénotypiques de surface des feuilles (utilisez la fonction boxplot(y~x)].

Que concluez-vous de ces analyses statistiques? Donnez une explication aux résultats observés.



La présence/absence du locus At5g46330 semble conditionner la réponse à l'infection par la bactérie chez les plantes. Le prochain TP (TP4) consistera en l'étude de ce locus à l'aide de bases de données et d'analyses de séquences ...

Liens