APPLICATION DES STATISTIQUES AUX DONNÉES GÉNOMIQUES
Par Ninoka • 30 Janvier 2018 • 941 Mots (4 Pages) • 574 Vues
...
Le signe de (1-p)m dépend donc du signe de 1-p .
Or, p représente une p-valeur donc toujours inférieure ou égale à 1 .
On a donc : Ɐp , 1-p ≥ 0
Et donc : (1-p)m ≥ 0
En remontant la démonstration,on a :
(1-p)m ≥ 0 → -(1-p)m ≤ 0
→ 1-(1-p)m ≤ 1
On retrouve bien 1-(1-p)m ≤ 1 ↔ p*S ≤ p*B
2) On suppose min(1,p)=mp , et on étudie la fonction : f(p)= p*B - p*S
On a : f(p)= p*B - p*S = min(1,mp) – (1-(1-p)m) = mp – 1 + (1-p)m
On sait alors que : f(p) ≥ 0 ↔ mp – 1 + (1-p)m ≥ 0 ↔ mp – (1-(1-p)m) ≥ 0
↔ mp ≥ 1-(1-p)m
↔ p*B ≥ p*S
Or, on sait que mp est positif et supérieur ou égale à 1 puisque min(1,mp)=mp. Donc, mp-1 ≥ 0
Le signe de f(p) dépend de (1-p)m.
On sait que p ≤ 1 puisqu'il s'agit d'une p-valeur. Donc, 1-p ≥ 0 et m étant le nombre de tests réalisés, il est également positif et supérieur ou égale à 1.
On a alors : (1-p)m ≥ 0 .
La somme de deux termes positifs reste positif, donc mp-1+(1-p)m ≥ 0 ↔ f(p) ≥ 0 .
Puisque f(p) est positif, et que f(p) ≥ 0 ↔ p*B ≥ p*S on peut donc en conclure que :
p*B ≥ p*S
3) Conclusion :
Dans le cadre d'une procédure d'hypothèse de tests multiples, le nombre d'hypothèses rejetées est plus élevé dans le cadre d'une procédure de Sidak que dans le cadre d'une procédure de Bonferroni. En effet, rappelons que l'on rejette H0 lorsque la p-valeur ajustée est inférieur au seuil préalablement définis. Or, la p-valeur ajustée pour la correction de Sidak est inférieure à celle calculée pour la correction de Bonferonni. Lorsque l'on rejette H0 pour la procédure de Bonferroni, on rejette l'hypothèse également pour la procédure de Sidak, alors que l'inverse n'est pas forcément vrai. La p-valeur ajustée de la procédure de Sidak est donc plus amené à rejeter l'hypothèse H0.
Script Rstudio
###############################################################
## Application des statistiques aux données Génomiques ##
## Et tests multiples ##
###############################################################
# Exercice 1 : Loi des p-valeurs calculées sous H0:
X=integer(length=900)
for (i in 1:length(X))
{
x=matrix(rnorm(300,0,1),nrow=300)
y=matrix(rnorm(300,0,1),nrow=300)
a=t.test(x,y,alternative="greater")
names(a)# "statistic",parameter", "p.value", "conf.int", "estimate", "null.value",
# "alternative", "method", "data.name".
X[i]=a$p.value
}
# Représentations graphiques:
par(mfrow=c(1,2))
hist(X, main="histogramme des p-valeurs",prob=T)
hist(runif(888,0,1), main="histogramme d'une loi uniforme",prob=T)
# Exercice 2 : Correction des p-valeurs pour des tests multiples:
#1.
library(multtest)
m0=400
simDM=function(m0){
m1=1000-m0
n=10
tmp0.x=matrix(rnorm(m0*n,0,1),nrow=m0)
tmp0.y=matrix(rnorm(m0*n,0,1),nrow=m0)
H0=cbind(tmp0.x,tmp0.y)
tmp1.x=matrix(rnorm(m1*n,0,1),nrow=m1)
tmp1.y=matrix(rnorm(m1*n,3,1),nrow=m1)
H1=cbind(tmp1.x,tmp1.y)
data=rbind(H0,H1)
cl=c(rep(0,n),rep(1,n))
stat=mt.teststat(data,classlabel=cl,test="t.equalvar")
pval=2*(pt(-abs(stat),2*n-2))
rej=mt.rawp2adjp(pval,proc="BH")
ind=order(rej$index)
padjp=rej$adjp[ind,2]
tx.fp=sum(padjp[1:m0] return(tx.fp)
}
#2.
# Simuler 500 fois le programme avec m0=400 :
X=integer(length=500)
for (i in 1:length(X)){
X[i]=simDM(m0 = 400)
}
mean(X) # résultat: 0.02020845
#3.# Simuler 500 fois le programme avec m0=600 :
X=integer(length=500)
for (i in 1:length(X)){
X[i]=simDM(m0 = 600)
}
mean(X) # résultat: 0.03093565
# Simuler 500 fois le programme avec m0=800 :
X=integer(length=500)
for (i in 1:length(X)){
X[i]=simDM(m0 = 800)
}
mean(X) # résultat: 0.04060208
#
...