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
Line 12: Line 12:
Lecture:
Lecture:
<source lang='rsplus'>
<source lang='rsplus'>
-
arabido=ead.table("data_TP3.txt", sep="\t", header=TRUE)
+
arabido=read.table("data_TP3.txt", sep="\t", header=TRUE)
</source>
</source>
Accéder directement aux variables simplement en donnant leurs noms:
Accéder directement aux variables simplement en donnant leurs noms:
<source lang='rsplus'>
<source lang='rsplus'>
-
attach(genomes)
+
attach(arabido)
-
names(genomes)
+
names(arabido)
-
Genome_size
+
-
ORF_number
+
</source>
</source>
<span style='color: #990000'>
<span style='color: #990000'>
-
Quelle est l'unité de mesure pour <tt>Genome_size</tt> ?
+
Quel est la taille du fichier ? Utilisez la fonction dim().
 +
Combien y-a-t-il de variables ?
 +
Repérez les variables quantitatives (numériques) et les variables qualitatives ("facteurs")?
</span>
</span>
 +
 +
 +
== Graphiques ==
 +
 +
- Réalisez un graphique permettant de visualiser la corrélation entre la surface des feuilles et le nombre de racines latérales.
 +
- Réalisez un graphique permettant de visualiser la corrélation entre la surface des feuilles et la longitude; de même avec la latitude.
 +
- 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.
 +
Utilisez les commandes plot() [exemple plot(x,y)] et boxplot [exemple boxplot(y~x)] pour réaliser ces graphiques.
 +
 +
<span style='color: #990000'>
 +
Que remarquez vous?
 +
</span>
 +
 +
 +
== Calculs de corrélation ==
 +
 +
- calculez 2 à 2 le coefficient de corrélation entre la surface des feuilles, le nombre de racines latérales, la latitude, la longitude.
 +
<span style='color: #990000'>
 +
Que remarquez vous?
 +
</span>
 +
 +
 +
es corrélations entre les variables numériques. Utilisez la commande plot() [exemple plot(x,y)].
 +
Réalisez des graphiques permettant de visualiser les corrélations entre les variables numériques. Utilisez la commande plot() [exemple plot(x,y)].
 +
 +
Faire un graphique:
Faire un graphique:
Line 78: Line 104:
<span style='color: #990000;'>Ajoutez ces parties à votre compte rendu.</span>
<span style='color: #990000;'>Ajoutez ces parties à votre compte rendu.</span>
-
 
-
= Calculs de probabilité =
 
-
 
-
== Calculs basés sur des données ==
 
-
 
-
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:
 
-
<source lang='rsplus'>
 
-
sequoia=read.table("sequoia.txt", sep="\t", header=TRUE)
 
-
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>
 
-
 
-
<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>, ...)
 
-
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 :'''
 
-
* Une '''loi normale''' est définie par '''2 paramètres''' : la '''moyenne''' et l''''écart-type'''.
 
-
* 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>]]
 
-
 
-
Probabilité de X = 0, notée <math>P(X = 0)</math>
 
-
<source lang='rsplus'>
 
-
dnorm(0,0,1)
 
-
</source>
 
-
 
-
<math>P(X \le 0)</math> :
 
-
<source lang='rsplus'>
 
-
pnorm(0,0,1)
 
-
</source>
 
-
 
-
<math>P(X > 0)</math> :
 
-
<source lang='rsplus'>
 
-
1-pnorm(0,0,1) # ou pnorm(0,0,1, lower.tail=F)
 
-
</source>
 
-
 
-
Histogramme pour 100 valeurs échantillonnées aléatoirement suivant une <math>N(0,1)</math> :
 
-
<source lang='rsplus'>
 
-
hist(rnorm(100,0,1))
 
-
</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 style='color: #990000;'>
 
-
Quelle est la probabilité qu'un séquoia mesure plus de 110m ?
 
-
</span>
 
-
 
-
<!--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> ===
 
-
 
-
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'>
 
-
En moyenne, combien de graines devraient germer ?
 
-
</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 =
 
-
 
-
== 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 =

Revision as of 14:12, 26 January 2017

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. Dans le cadre du présent TP, vous allez analyser le tableau de données généré à partir de la base de donnée, avec le logiciel d'analyses statistiques R.

Créer un répertoire de travail sur le bureau (par exemple TP2) et téléchargez le fichier de données données TP3 (click droit de la souris -- enregistrer la cible sous...). . Ouvrez le logiciel R, changez le répertoire courant vers le répertoire contenant le fichier de données.

Lecture et exploration du tableau de données

Lecture:

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

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

attach(arabido)
names(arabido)

Quel est la taille du fichier ? Utilisez la fonction dim(). Combien y-a-t-il de variables ? Repérez les variables quantitatives (numériques) et les variables qualitatives ("facteurs")?


Graphiques

- Réalisez un graphique permettant de visualiser la corrélation entre la surface des feuilles et le nombre de racines latérales. - Réalisez un graphique permettant de visualiser la corrélation entre la surface des feuilles et la longitude; de même avec la latitude. - 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. Utilisez les commandes plot() [exemple plot(x,y)] et boxplot [exemple boxplot(y~x)] pour réaliser ces graphiques.

Que remarquez vous?


Calculs de corrélation

- calculez 2 à 2 le coefficient de corrélation entre la surface des feuilles, le nombre de racines latérales, la latitude, la longitude. Que remarquez vous?


es corrélations entre les variables numériques. Utilisez la commande plot() [exemple plot(x,y)]. Réalisez des graphiques permettant de visualiser les corrélations entre les variables numériques. Utilisez la commande plot() [exemple plot(x,y)].


Faire un graphique:

plot(Genome_size,ORF_number,pch=16)

Quantifier la relation entre ces 2 variables:

  • covariance
cov(Genome_size,ORF_number)
  • coefficient de corrélation r de Pearson
cor(Genome_size,ORF_number)

Régression

Calculer une fonction linéaire qui relie les 2 variables, avec la commande lm() :

lm(ORF_number ~ Genome_size) # remarque: c'est une régression de "y" sur "x", d'où lm(y~x)

Gardons en mémoire le résultat de la régression:

reglin=lm(ORF_number ~ Genome_size)

On peut vérifier la significativité des coefficients de la droite avec:

summary(reglin)

Quelle est l'équation de la droite de régression ?

Calculez le coefficient de détermination R2 (% de variance expliquée par le modèle linéaire ==> bien si > 70%):

cor(Genome_size,ORF_number)^2 #(stocké aussi dans summary(reglin))

Représenter le nuage de points avec la droite de régression:

plot(Genome_size,ORF_number,pch=16)			
abline(reglin,col="red",lwd=2)

Ajoutez ces parties à votre compte rendu.


Liens

Chargement des données avec l'adresse des fichiers

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)