Université Paris VII
Master I Biologie-Informatique
Rapport de Méthode d’Optimisation et Apprentissage en Biologie
Janvier 2008
DONNÉES MANQUANTES DANS LES PUCES À ADN
présenté par Amine GHOZLANE et Mathieu ALMEIDA
Introduction
1. Données de puces à ADN
Dans le cadre du cours de Méthode d’Optimisation et Apprentissage en Biologie, nous avons
réalisé un projet portant sur l’influence des données manquantes dans l’analyse des puces à
ADN. Les données sur lesquelles nous avons travaillé proviennent d’un article paru dans
Molecular Biology Cell en 2000 intitulé : « New components of a system for phosphate
accumulation and polyphosphate metabolism in Saccharomyces cerevisiae revealed by genomic
expression analysis » par Ogawa N.. Cet article décrit l’expression de 6013 gènes d’une souche
de Saccharomyces cerevisiae NBW7 disposée dans 8 conditions différentes (Annexe 1). 1/7 de
ses gènes, dont le profil d’expression est complet, ont constitué le support de notre étude.
Afin d’expliciter notre projet, nous présenterons tout d’abord l’implication des données
manquantes dans le système d’analyse des puces puis la démarche que nous avons entrepris pour
déterminer si cela pouvait entraîner une erreur d’analyse du transcriptome étudié.
2. Données manquantes d’expression
Lors d’une analyse des résultats d’une puce à ADN, il apparaît souvent que les profils
d’expression de certains gènes comportent des données manquantes. Celles-ci sont
principalement dues à des erreurs de manipulations caractérisées par des poussières ou des
rayures de la puce et par des erreurs de lecture de l’image par le scanner. Lors du prétraitement
des données de ses puces réalisé par des outils tel que GEPAS, les profils d’expression des gènes
sont filtrés pour éliminer les profils comportant plus de 70% de valeurs manquantes ou traités
pour remplacer les valeurs manquantes. Une des principales méthodes de remplacement opérée
par ces logiciels est celle des K-plus proches voisins (KNN). Cette approche développée par
Troyanskaya et al. (2001) estime la valeur d’une donnée manquante à partir des données
d’expression d’autres gènes de la puce.
Les données manquantes sont donc traitées lors des analyses et, de part leurs remplacements,
vont participer à l’information issue de la puce.
3. Problématique
Au cours de cette étude, nous avons cherché à identifier et à quantifier l’influence des données
manquantes sur la classification des gènes lorsque les données étaient remplacées ou non par la
méthode des KNN. Cette étude a été réalisée en langage R.
1
Matériel et Méthodes
Les résultats ici présenté ont été obtenu par la réalisation de programmes sous R 2.6.1 grâce aux
librairies MASS et impute.
1. Génération de données manquantes
Afin de retirer aléatoirement des données d’expression des gènes selon un pourcentage précis de
valeurs manquantes, nous avons utilisé la fonction runif de R. Cette fonction nous permet de
réaliser un tirage de valeurs aléatoires suivant la loi uniforme. Les valeurs de ce tirage
déterminent les données d’expression des gènes à retirer du jeu de données suivant qu’elles
soient inférieures ou égales au pourcentage de données manquantes à réaliser. 100 simulations
indépendantes sont opérées pour chacun des taux de données manquantes. Nous avons fait varier
le taux de données manquantes entre 1 et 50% avec un pas de 1%. Deux taux de données
manquantes seront principalement étudié : 1% et 10% qui correspondent aux observés de
données manquantes dans les puces.
2. Remplacement des données manquantes par la méthode K-Nearest Neighbor
(KNN)
Cette méthode de remplacement des données manquantes détermine un groupe de K gènes dits
voisins du gène d’intérêt. L’analyse s’effectue en deux étapes :
(1)
Premièrement, une évaluation de la distance euclidienne (1) entre le gène d’intérêt et tous les
autres gènes de la puce pour les 8 expériences est réalisée. Ceci permet de définir les K gènes
dont le niveau d’expression est régulièrement le plus proche du gène d’intérêt. Puis dans un
second temps, cette méthode va moyenner le niveau d’expression des gènes du groupe K pour
l’expérience d’intérêt et attribuer cette valeur au gène manquant.
Lorsque la proportion de donnée manquante est trop importante, l’algorithme, que nous avons
utilisé, effectue une moyenne du niveau d’expression de tous les gènes de l’expérience.
Le nombre de voisins K à considérer est ici important car il permet d’observer successivement
soit l’état des plus proches voisins s’il est trop faible, soit de moyenner le niveau d’expression
global des gènes de l’expérience s’il est trop important. L’intervalle optimal doit donc être
calculé pour chaque jeu de donnée afin d’obtenir la meilleure estimation. Pour notre jeu de
données, le Koptimal (kopt=14) a été déterminé lors d’une précédente étude (de Brevern et al.
2004).
La fonction de R que nous avons employé pour réaliser cette méthode est celle
de l’«impute.knn » de la librairie impute. Cette fonction implémentée sous R (Hastier T. et al.
2006) correspond à une amélioration de la rapidité de l’algorithme d’évaluation des plus proches
voisins pour un gène employé par le knn et le seq.knn implémentés sous R selon un coût de
Φ=nlog(n).
2
3. Estimation de la distance entre les données complètes et remplacées
a. Root Mean Square Error (RMSE)
Nous avons calculé la racine de la moyenne au carré (RMSE) :
Où Rmv est la valeur réelle d’une donnée manquante que l’on compare à Imv qui est la valeur
estimée par KNN. M correspond au nombre de données manquantes considéré. Cette mesure
nous permet d’estimer la distance entre l’évaluation réalisée par KNN et les données réelles.
b. Normalized Root Mean Square Error (NRMSE)
Nous avons calculé la racine de la moyenne au carré normalisée (NRMSE) (2) (Wang X. et al.
2006) pour les estimations réalisées par le knn.
(2)
Où Yguess correspond à la valeur estimée de l’expression d’un gène X et Yanswer au vrai niveau
d’expression du gène. Cette mesure rend compte de l’efficacité et du bruit généré par le
remplacement opéré par le KNN en prenant en compte de la variance et la moyenne des données
de l’expérience. Plus NRMSE est élevé plus la qualité de l’estimation est faible.
4. Estimation de la stabilité des groupes de gènes par CPP
L’analyse du CPP (Conserved Pairs Proportion, De Brevern et al. 2004) consiste à déterminer si
les gènes associés dans des groupes par classification demeurent associés après la génération et le
remplacement des données manquantes. Pour cela, nous avons réalisé une classification
hiérarchique des gènes dans le jeu de données complet et après génération de données
manquantes, grâce à la fonction hclust et la méthode d’estimation complete implémenté dans R.
Cette méthode d’estimation considère la distance maximale entre chaque élément de chaque
groupe. C’est est la méthode la plus sensible à l’introduction de données manquantes (de Brevern
et al. 2004) et donc de la qualité du remplacement des données.
Nous avons ensuite coupé ce dendrogramme grâce la fonction cutree avec k=36 groupes (de
Brevern et al. 2004). Enfin nous avons estimé le nombre d’individu qui demeurent dans le même
groupe grâce à la fonction table et calculé le CPP (3) :
(3)
3
Résultats
1. Classification hiérarchique des gènes à partir de données de puces complètes et
incomplètes
Un dendrogramme des données de puce (Ogawa et al. 1/7) a été réalisé sans et avec 1% de
données manquantes (figure 1).
En présence de 1% de données manquantes, il apparaît que la structure du dendrogramme est
modifiée de manière importante lorsque ces données sont remplacées par zéro. Les branches
gauches des nœuds supérieurs comprennent plus de gènes du fait d’une réallocation importante
des gènes entre les différents groupes du dendrogramme.
Lorsque ces données manquantes sont remplacées par la méthode du KNN, la structure des
branches supérieures semble être rétablie bien qu’il y est une modification de structure inférieure
du dendrogramme.
2. Estimation du NRMSE et du RMSE lors du remplacement des données
manquantes par la méthode du KNN
Un profil de l’estimation des données manquantes par la méthode du KNN et par le
remplacement zéro a été réalisé par calcul du NRMSE et du RMSE depuis un taux de 1% à 50%
de données manquantes (figure 2). Le RMSE des données remplacées par KNN est inférieur d’un
facteur de 10% de celui des données remplacées par zéro et reste inférieur à 20% d’erreur jusqu’à
35% de données manquantes.
La détermination du NRMSE nous indique que le KNN réduit le bruitage des données de 15%
par rapport à un remplacement des données manquantes par zéro. En s'établissant à 0.8-0.9, le
bruit généré par le KNN reste cependant assez important.
3. Estimation de la répartition des niveaux d’expression lors du remplacement des
données manquantes par la méthode du KNN
Nous avons effectué une analyse des occurrences des niveaux d’expression sur les données
complètes et après remplacement de 1% et 10% des données manquantes par la méthode du
KNN (figure 3). Comme le montre les histogrammes, il y a une sous estimation des valeurs >0.5
et <- 0.5 extrêmes et une surestimation des valeurs proches de 0 pour 1 et 10% de données
manquantes. Nous avons ensuite étudié l’évolution de la variance en fonction du taux de données
manquantes (figure 4). La méthode de remplacement des données par KNN diminue la variance
des données de près de 20%.
4. Estimation de la conservation des gènes au sein de leur groupe lors du
remplacement des données manquantes par la méthode du KNN
Nous avons étudié la conservation des gènes dans leurs groupes de classification suivant leurs
niveaux d’expression estimé dans les données complètes et après remplacement des données
depuis un taux de 1 à 50% (figure 5).Près de 50% des gènes changent de groupe dès la génération
de 1% de données manquantes. Ceci est en accord avec les données de classification pour le
KNN où l’on peut observer une modification importante des groupes situés en bas de la
hiérarchie. Lorsque l’on augmente la proportion de données manquantes, ce taux diminue encore
de 10% lors de la génération de 50% de données manquantes.
4
Données de puce complètes
Données de puce incomplètes remplacées par zéro
Données de puce incomplètes remplacées par KNN
Figure 1 :
Effet de l’introduction de données manquantes et du remplacement des données
manquantes par KNN sur la classification hiérarchique des gènes.
Les dendrogrammes ont été construits par la méthode complete sur les données provenant
de la puce Ogawa et al. sans données manquantes et avec 1% de données manquantes
générées aléatoirement et remplacées par la valeur 0 ou par KNN.
Il y a une réallocation importantes des groupes des gènes qui modifie la structure du
dendrogramme lorsque les données manquantes sont remplacées par zéro par rapport au
dendrogramme complet. Ces modifications sont observables sur les branches les plus
hautes ainsi que sur les branches sous-jacentes.
Le remplacement des données par la méthode KNN semble efficace en rétablissant les
groupements des branches les plus hautes. Cependant on constate une modification
importante de la structure des branches basses de l’arbre.
5
Remplacement des valeurs
manquantes par 0
Remplacement des valeurs
manquantes par le KNN
35
Remplacement des valeurs
manquantes par 0
Remplacement des valeurs
manquantes par le KNN
0.91
35
Figure 2 :
Influence sur la distance entre les données de puces incomplètes remplacées par
zéro et par la méthode des KNN par rapport données complètes.
Les mesures ont été effectuées sur 100 simulations indépendantes de génération et
remplacement de données manquantes par taux de données manquantes.
L’évaluation du RMSE nous indique que la méthode de remplacement des données par
KNN est plus efficace que celle opérée par le remplacement des données par 0. Jusqu’à
un taux de 35% de données manquantes, le RMSE des données remplacées par KNN
reste en dessous de 0.2 ce qui indique qu’il y a un bon remplacement.
Le NRMSE nous indique que le remplacement des données par KNN a réduit le bruitage
des données par rapport à celui induit par les valeurs nulles en s’établissant à un NRMSE
de 0.8-0.9. Ce taux de bruitage des données est cependant élevé.
6
1% de données manquantes remplacées par KNN
10% de données manquantes remplacées par KNN
Figure 3 : Influence sur la répartition des données de l’estimation par KNN.
Nous avons estimé la répartition des données complètes de la puce et des données de
puces avec 1% et 10% de données manquantes remplacées par la méthode des KNN.
La nouvelle distribution des données opérée lors du remplacement des données par
KNN sous estime les valeurs >0.5 et <-0.5 et surestime les valeurs proches de 0. Cette
tendance est plus marquée lorsque 10% des données sont manquantes. Le KNN réduit 7
donc la variation des données remplacées.
Remplacement des valeurs
manquantes par le KNN
Remplacement des valeurs
manquantes par 0
Figure 4 :
Influence
sur
la
variance
du
remplacement des données par zéro et
par la méthode du KNN.
Les mesures ont été effectuées sur 100
simulations indépendantes de génération
et remplacement de données manquantes
par taux de données manquantes.
Le remplacement des données manquantes
par KNN
et par zéro entraîne une
diminution de variance des données, ce
qui est cohérent avec les résultats en
figure 3.
Remplacement des valeurs
manquantes par le KNN
Remplacement des valeurs
manquantes par 0
40,5% (RMSE)
37,7% (RMSE)
Figure 5 :
Influence sur le regroupement des gènes du remplacement des données
manquantes par zéro et par KNN par rapport au regroupement des gènes sur les
données complètes.
Nous avons estimé le CPP (Conserved Pairs Proportion) moyen sur 100 simulations
indépendantes de génération et remplacement de données par pourcentage de données
manquantes.
La proportion de gènes restant dans leur groupe diminue fortement avec l’augmentation
du pourcentage de données manquantes pour les deux types d’estimation. Cependant en
accord avec l’estimation du RMSE présenté en figure 2, le remplacement des données
manquantes par KNN conserve mieux la répartition des gènes dans les groupes. A 50%
de données manquantes, l’estimation par KNN s’avère 2,8% plus efficace que celle du 8
remplacement des données par zéro.
DISCUSSION – CONCLUSION
Le travail que nous avons réalisé a consisté premièrement à déterminer l’implication des données
manquantes dans les erreurs d’analyse par mauvaise association des gènes. L’analyse du
dendrogramme a révélé que l’absence de seulement 1% des données entraînait une modification
importante du regroupement des gènes mais elle a aussi mis en évidence la capacité de la
méthode de remplacement par KNN de minorer cette tendance.
Pour déterminer si cette capacité de correction de l’erreur de regroupement des gènes était le
résultat d’un bon rétablissement des données manquantes, nous avons étudié la qualité du
remplacement effectué par le KNN depuis un taux de 1% à 50% de données manquantes. Il est
apparu lors de cette analyse que le KNN réalisait effectivement une bonne estimation des
données manquantes (jusqu’à 35% de données manquantes pour nos résultats de puce) mais que
son utilisation entraînait une augmentation du bruitage des données. Nous avons ensuite
recherché si la répartition des données d’expression des gènes était altérée lors de la génération
de 1% et de 10 % de données manquantes. Le remplacement de ses données par la méthode du
KNN a engendré la diminution du nombre de valeurs « extrêmes » et augmenté la proportion de
valeur proche de 0 ce qui engendre une réduction de 20% de la variance des données.
Pour aller plus loin dans l’évaluation du remplacement des données effectuées par KNN, nous
avons déterminé la proportion de gènes conservant leur groupe en fonction du taux de données
manquantes. Nous avons pu observé que l’estimation par KNN entraînait un déplacement de
50% des gènes depuis leurs groupes initiaux qui n’évolue que très peu ensuite avec
l’augmentation du pourcentage de données manquantes.
Bien que le taux de CPP à l’issue de la simulation soit sensiblement proche de celui du
remplacement zéro, il s’avère que l’emploi du remplacement de données par KNN présente de
multiples avantages. Celui-ci a permis de réduire le bruit et la variance des données d’expression
des gènes du fait de la bonne estimation des données manquantes qui est réalisée. Le
remplacement des données par KNN maintient bien ainsi les groupements situés en haut de la
classification qui sont souvent les groupements les plus informatifs sur la manière dont
s’expriment les gènes.
Cette méthode permet donc de réduire les erreurs d’analyses que peuvent engendrer des données
manquantes en conservant dans une certaine mesure la composition des groupes de gènes et en
limitant efficacement les différences d’association entre des groupements comprenant de
nombreux gènes.
De nombreuses techniques d’estimations des données manquantes ont déjà été développées et
leurs performances analysées. Il apparaît, comme pour le KNN, qu’aucune de ses techniques ne
présente un avantage indiscutable mais qu’il soit nécessaire de considérer pour chaque jeu de
donnée de l’efficacité de la méthode de remplacement employée.
Plusieurs approches peuvent être envisagées pour la poursuite de ce travail, la première
consisterait à développer un programme d’analyse systématique de l’algorithme de
remplacement des données le plus approprié au jeu de données considérées qui reposerait sur
l’évaluation d’un indice de performance rassemblant notamment les mesures de variances, de
bruit, de qualité de l’estimation et de la conservation du groupement des gènes. La seconde
consisterait à disposer de jeu de données complet de taille plus importante ce qui permettrait une
évaluation plus exacte des méthodes de remplacement.
9
Références bibliographiques
Publications :
De BREVERN A.G., HAZOUT S. MALPERTUY A., Août 2004, « Influence of microarrays
experiments missing values on the stability of gene groups by hierarchical clustering » BMC
Bioinformatics.
JOHANSSON P., HÄKKINEN J., Juin 2006. « Improving missing value imputation of
microarray data by using spot quality weights » BMC Bioinformatics.
OGAWA N., DeRISI J., BROWN O.P., Décembre 2000. « New components of a system for
phosphate accumulation and polyphosphate metabolism in Saccharomyces cerevisiae revealed by
genomic expression analysis » Molecular Biology of the Cell volume 11, 4309-4321.
TROYANSKAYA O., CANTOR M., SHERLOCK G., BROWN P., HASTIE T., TIBSHIRANI
R., BOTSTEIN D., ALTMAN B.R., février 2001. « Missing value estimation methods for DNA
microarrays » BMC Bioinformatics, volume 17, 520-525
Wang X., Li AO, JIANG Z., FENQ H., Janvier 2006. « Missing value estimation for DNA
microarray gene expression data by Support Vector Regression imputation and orthogonal
coding scheme » BMC Bioinformatics.
10
Plan Annexes
Annexe 1: Données puces ADN représentée sous forme de Heat
Map
Annexe 2: Calcul du CPP
Annexe 3: Programme en R de détermination du CPP en fonction
du pourcentage de données manquantes générés
11
Annexe 1: Données puces ADN représentée sous forme de Heat
Map
12
Annexe 2: Calcul du CPP
13
Annexe 3: Programme en R de détermination du CPP en fonction
du pourcentage de données manquantes générés
library(impute)
library(MASS)
PUCES.COMPLET=as.matrix(read.table( "ogawa_827.txt" ))
Kalgo=36
x = matrix(0,827,8)
NB.MVdebut=1
NB.MVmax=50
NB.repetition=100
PUCES.MV=matrix(0,827,8)
distance.complet=dist(PUCES.COMPLET)
hc.complet = hclust(distance.complet, method="complete")
cut.complet=cutree(hc.complet,k=Kalgo)
tab.MV=matrix(0,NB.repetition,50)
tab.CPP=matrix(0,NB.repetition,50)
MAX=c(1:Kalgo)
DIM=c(827,8)
f =function(x){
for(i in (1:8)){
x[,i]=runif(827,0,100)
}
return(x)
}
for(L in (NB.MVdebut:NB.MVmax)){
min=L
print("###########L#######")
print(L)
for(M in (1:NB.repetition)){
PUCES.MVnew=PUCES.COMPLET
MV=0
x=f(x)
print(x[827,1])
for (i in (1:DIM[2])){
for(j in (1:DIM[1])){
if(x[j,i]<=min){
PUCES.MVnew[j,i]= 0
MV=MV+1
14
}
}
}
PUCES.MV=cbind(PUCES.MV,PUCES.MVnew)
tab.MV[M,L]=MV/(DIM[2]*DIM[1])
}
}
repet=0
for(L in (NB.MVdebut:NB.MVmax)){
print("###########L#######")
print(L)
for(M in (1:NB.repetition)){
distance.corrige=dist(PUCES.MV[,(1+repet):(8+repet)])
hc.corrige = hclust(distance.corrige, method="complete")
cut.corrige=cutree(hc.corrige,k=Kalgo)
TABLEAU=table(cut.complet,cut.corrige)
for(i in 1:Kalgo){
MAX[i]=(max(TABLEAU[i,]))
}
tab.CPP[M,L]=sum(MAX[1:Kalgo])/DIM[1]
print(tab.CPP[M,L])
repet=repet+8
}
write.matrix(tab.CPP,file="CPP1_50_zero.txt",sep="\t")
write.matrix(tab.MV,file="MV1_50_zero.txt",sep="\t")
}
15