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