Analyse de données biologiques

IV - Notions de statistique (version 3.0)

Prof. Patrick E. Meyer

Données continues ?

  • Que fait-on lorsque les données sont continues comme des données d’expression génétique?

  • On coupe le signal d’un gène: On-Off?

  • On/Uncertain/Off ?

  • On/MidOn/MidOff/Off?

  • Mais comment choisir les seuils pour On et Off?

Les quantiles empiriques

  • median(X) or quantile(X,prob = 0.5)

  • quantile(X, prob=c(1/3,2/3)) #terciles

  • quantile(X, prob=c(1/4,3/4)) #quartiles

  • quantile(X, prob=c(1/5,4/5)) #quintiles

Seuil global ou local?

  • Faut-il appliquer un seuil global ou un seuil local pour chaque gène?

  • Seuil global meilleur pour élimination des gènes avec trop faibles variabilités

  • Seuil local meilleur pour détection d’activation/inhibition de certains gènes stables (mais variants)

Boucles implicites

Appliquer une fonction (ex: median) à chaque élément d’une collection (vecteur, liste, matrice, data.frame)

  • lapply(l,median) #dans une liste
  • sapply(v,median) #dans un vecteur si possible
  • apply(m,2,median) #sur colonnes de matrice
  • replicate(10, {i <-i+1}) #répétition de code

Coder une fonction

Exemple:

  > fu <- function(a,b,c)
    { a*(b+c) }
  > var1 <- fu(5,1,2)
  > var2 <- fu(4,3,5)
  > var3 <- fu(3,4,5)
  • la position des paramètres compte
  • les variables n’existent pas en dehors de la fonction
  • attention à la dernière instruction (pas de return).
> fu <- function(a,b,c) { 
+ res <- a*(b+c) }
> fu <- function(a,b,c) { 
+ res <- a*(b+c) 
+ res }

Paramètres par nom et par défaut

  > fu <- function(a=1,b=5,c=6)
    { a*(b+c) }
  > var1 <- fu(5,1,2)
  > var2 <- fu(b=8)
  > var2 <- fu(b=8, a=1)
  • Le nom a priorité sur la position

  • La valeur par défaut est définie avec un “=”

  • outil idéal en combinaison avec boucles implicites

Distribution normale

Quid si on sait que les données sont distribuées suivant une distribution normale?

Exemple

  • Taille moyenne pour un homme: 180 cm.

    • Grande taille: 225 cm (autrement dit \(\mu_{taille}\)X1.25)
  • Salaire moyen : 2.000 euros,

    • \(\mu_{salaire}\)X1.25 = 2.500 euros, haut salaire?

    • Haut salaire: 6.000 euros (autrement dit \(\mu_{salaire}\)X3)

    • alors que \(\mu_{taille}X3=5.4m\) !! D’ou vient cette différence entre tailles et salaires?

  • Une gaussienne (ou normale) est définie par deux paramètres: \(N(\mu,\sigma)\). En R: mean(X) et sd(X)

Z-score (normale centrée réduite)

\(\mu=E[X]=\frac{1}{m}\sum_i x_i\)

\(\sigma=E[\sqrt{(X-\mu)^2}]=\frac{1}{m}\sum_i \sqrt{(x_i-\mu)^2}\)

\[Z=\frac{X-\mu}{\sigma} \]

  • le Z score (nombre d’écart-type qui nous sépare de la moyenne) est idéal pour faire des comparaisons
  • Z = (225-180)/20 = 2.25 = (6.500-2.000)/2.000

fonctions dpqr

  • d fonctions de densité (p en x)
  • p distributions de probabilité (\(p<=x\), given x)
  • q fonctions de quantile (\(p<=x\), given p)
  • r génération de nombre aléatoire

Exemple dpqr-norm

pnorm(1,0,1)
[1] 0.8413447
dnorm(1,0,1)
[1] 0.2419707
qnorm(0.84,0,1)
[1] 0.9944579
rnorm(10,0,1)
[1] -0.93617156  0.01891245 -0.20191419 -0.78500978  1.64763588  
[6] 0.89159723 0.71287317  1.14575725 1.32337961 0.23034264
  • différence entre quantile(X,0.5) et qnorm(0.5,0,1)?

Autres distributions

beta, binom, cauchy, chisq, exp, (Fisher) f, gamma, geom, hyper, logis, lnorm, (negative binom) nbinom, norm, pois, (Student) t, unif, weibull.

punif(1,0,1)
[1] 1
dunif(1,0,1)
[1] 1
qunif(0.84,0,1)
[1] 0.84
runif(10,0,1)
[1] 0.23660069 0.99766349 0.08864591 0.12248317 0.06105347
[6] 0.50042595 0.54741294 0.29912621 0.75223368 0.50981399
  • Quid pour une binomiale?

Binomiale (pile ou face)

3 paramètres: nombre de succès, nombre de lancés et probabilité de succés.

  • 100 tirages aléatoires pile-face, d’un seul lancé avec proba 0.5 de succès: rbinom(100,1,0.5)
  • probabilité d’avoir 6 succès lors de 7 lancés avec proba 0.3 de succès: dbinom(7,6,0.3)

random generator et set.seed

set.seed(10)
runif(10,0,1)
[1] 0.50747820 0.30676851 0.42690767 0.69310208 0.08513597
[6] 0.22543662 0.27453052 0.27230507 0.61582931 0.42967153
  • nombres pseudo-aléatoires
  • La fonction set.seed permet de répliquer une expérience aléatoire à l’identique

Exemple d’utilisation: sécurité d’un traitement

threshold<-qnorm(0.75,0,1) #0.675 seuil pour proba(++)<=0.25
pval<-pbinom(7,17,prob=0.25,lower.tail=F)
#
#proba d'obtenir minimum 8X pile sur 17 lancés 
#lorsque la proba d'avoir pile par hasard est 0.25
#0.04 (significatif)