library(tidyverse)
library(kableExtra)
library(ggvenn)
= function(o) o %>% kable(format="html", escape=F) %>% kable_styling(bootstrap_options = c("striped"))
kabex = function(x) 1/length(x) * sum( (x - mean(x))**2 )
var.n = function(m1, m2, n1, n2, v1, v2) (m1-m2)/sqrt( (n1*v1 + n2*v2) * (1/n1 + 1/n2) ) * sqrt(n1+n2-2)
t.stat =2
rounding=F
correction=function() ifelse(correction, '<font style="color: #F00000;">', "<!--")
correction.start=function() ifelse(correction, '</font>', "-->") correction.end
La présence du marqueur (gène FLS2) induit une cascade de réactions résultant en réponses immunitaires de la plante Arabidopsis thaliana. Ici, vous voulez comparer le transcriptome entre plantes avec marqueur et plantes sans marqueur. Pour cela, vous marquez le transcriptome des plantes avec marqueur avec le fluorochrome vert (cy3) et le transcriptome des plantes sans marqueur avec le fluorochrome rouge (cy5). Vous disposez de 10 réplicats.
Vous voulez tester lāexpression diffĆ©rentielle dāun gĆØne de rĆ©ponse immunitaire. Pour cela, vous disposez des valeurs de sonde suivantes :
=1:10
replicat=c(10, 30, 42, 12, 30, 47, 25, 27, 26, 41)
cy3=c(25, 47, 60, 47, 77, 56, 81, 70, 56, 68)
cy5tibble(RƩplicat=replicat, `Cy3 (G)`=cy3, `Cy5 (R)`=cy5) %>% t %>% kabex
RƩplicat | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Cy3 (G) | 10 | 30 | 42 | 12 | 30 | 47 | 25 | 27 | 26 | 41 |
Cy5 (R) | 25 | 47 | 60 | 47 | 77 | 56 | 81 | 70 | 56 | 68 |
Vous devez donc comparer (statistiquement) la moyenne de lāexpression du gĆØne des plantes avec et sans marqueur afin de dĆ©terminer si les moyennes sont diffĆ©rentes et donc de dĆ©terminer si le marqueur a un effet (significatif).
On suppose que la population peut se résumer à (ou modéliser avec) une moyenne et un écart-type.
Exemple avec une population de moyenne \(µ = 30\) et dāĆ©cart-type \(\sigma = 10\) tous les 2 connus.
=seq(0,60,by=.01)
xiplot(xi, dnorm(xi, mean=30, sd=10), type='l', xlab='x', ylab='p(x)', main='Loi normale N(30,10)')
Quand on prend des individus au hasard dans la population, on a plus de chance de tomber sur quelquāun proche de la moyenne.
En pratique, il est rarement possible de mesurer tous les individus dāune population. LāidĆ©e est dāestimer la moyenne et lāĆ©cart-type de la population Ć partir dāun Ć©chantillon, cāest-Ć -dire un certain nombre dāindividus (ā taille de lāĆ©chantillon) pris au hasard. Il sera essentiel de pouvoir statistiquement quantifier la confiance que lāon peut accorder Ć ces estimation.
Moyenne de lāĆ©chantillon : \[\overline{X} = \frac{1}{n}\sum_{i=1}^{n} x_i\] avec \(n\) la taille de lāĆ©chantillon.
Ecart-type de lāĆ©chantillon notĆ© \(S\) et variance \(S^2\) : \[S^2 = \frac{1}{n} \sum_{i=1}^{n} (x_i - \overline{X} )^2\]
3 Ʃchantillons de taille 10 pour la loi N(moyenne=30, Ʃcart-type=10)
par(mfrow=c(3,1))
= 10
sample.size = round(rnorm(sample.size,30,10))
smp stripchart(smp, method="stack", xlim=c(5,55), frame.plot=F, axes=F)
axis(1, col=NA, col.ticks=1)
abline(v=mean(smp), lty="dashed")
text(mean(smp), 0, paste0("Moyenne de l'Ʃchantillon : ", round(mean(smp),rounding)))
= round(rnorm(sample.size,30,10))
smp stripchart(smp, method="stack", xlim=c(5,55), frame.plot=F, axes=F)
axis(1, col=NA, col.ticks=1)
abline(v=mean(smp), lty="dashed")
text(mean(smp), 0, paste0("Moyenne de l'Ʃchantillon : ", round(mean(smp),rounding)))
= round(rnorm(sample.size,30,10))
smp stripchart(smp, method="stack", xlim=c(5,55), frame.plot=F, axes=F)
axis(1, col=NA, col.ticks=1)
abline(v=mean(smp), lty="dashed")
text(mean(smp), 0, paste0("Moyenne de l'Ʃchantillon : ", round(mean(smp),rounding)))
2 Ʃchantillons de taille 100 pour la loi N(moyenne=30, Ʃcart-type=10)
par(mfrow=c(2,1))
= 100
sample.size = round(rnorm(sample.size,30,10))
smp stripchart(smp, method="stack", xlim=c(5,55), frame.plot=F, axes=F)
axis(1, col=NA, col.ticks=1)
abline(v=mean(smp), lty="dashed")
text(mean(smp), 0, paste0("Moyenne de l'Ʃchantillon : ", round(mean(smp),rounding)))
= round(rnorm(sample.size,30,10))
smp stripchart(smp, method="stack", xlim=c(5,55), frame.plot=F, axes=F)
axis(1, col=NA, col.ticks=1)
abline(v=mean(smp), lty="dashed")
text(mean(smp), 0, paste0("Moyenne de l'Ʃchantillon : ", round(mean(smp),rounding)))
2 Ʃchantillons de taille 1000 pour la loi N(moyenne=30, Ʃcart-type=10)
stripchart(round(rnorm(1000,30,10)), method="stack", xlim=c(5,55), ylim=c(0,15), frame.plot = F)