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. Matériel et Méthodes 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. Il faudrait peut être préciser qu’on génère autant de valeurs aléatoires par la loi uniforme que de valeurs dans l’échantillon, 827*8. 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%. 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 pour 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). 3. Mesure de la qualité du remplacement par le Normalized Root Mean Square Error (NRMSE) Nous avons effectué une mesure de 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é du remplacement opéré par le KNN en prenant en compte de la variance et la moyenne des données de l’expérience. RMSE ?? 4. Estimation de la stabilité des groupes de gènes Nous avons effectué une analyse de CPP (Conserved Pairs Proportion, De Brevern et al. 2004). Cette analyse 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 l’estimation complete (Peut-être est-il bon de parler un peu plus du complete, dire que c’est une méthode de clustering et que R en propose plusieurs plus ou moins adapté pour notre étude, et dire que le choix du complete vient de l’article de De Brevern) implémenté dans R. Puis nous avons coupé cet arbre grâce la fonction cutree avec k=36 groupes. 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) Résultats A) Influence des données manquantes sur les groupes de gènes : Pour avoir un aperçu des liens pouvant exister entre les gênes on réalise un regroupement hiérarchique avec la fonction hclust de R. Cette méthode permet d’avoir un aspect visuel des liens existant entre chaque gène. Ici on compare l’arbre obtenu à partir de la puce d’ADN sans valeur manquante et l’arbre obtenu après introduction de valeurs manquantes. Pour afficher les arbres, la fonction hclust n’accepte pas les données de type « NA » (pour «non-attributed» en anglais, non attribué), que l’on souhaite pourtant utiliser pour remplacer les valeurs manquantes. Pour générer des données manquantes et permettre l’affichage sous hclust, on peut soit supprimer les lignes contenant des données manquantes, soit remplacer les valeurs par 0. Hors ici pour éviter de perdre des informations et permettre l’étude des appariements de gène, nous avons décidé de remplacer les valeurs manquantes par 0. Figure 1 : Arbre représentant la répartition des groupes de gènes A gauche est représenté l’arbre (ou dendrogramme) obtenu à partir de la puce d’ADN sans donnée manquante A droite est représenté l’arbre obtenu à partir de la puce contenant 10% de données manquantes. En ordonnée est indiqué la distance séparant deux groupes de gènes. Chaque terminaison de l’arbre en abscisse représente les différents gènes de la puce. Les deux arbres ont été réalisés avec la méthode « complete » de la fonction hclust. Observations : On constate ici que certains gènes se retrouvent dans de nouveaux groupes lorsque l’on considère la puce avec donnée manquante. Plus on se rapproche des racines de l’arbre, moins les groupes sont lisibles ainsi il est impossible d’estimer avec cette technique le nombre de groupe de gènes affichés. Conclusion sur les deux arbres: Puisque l’on peut voir des déplacements de gènes dans de nouveaux groupes, on peut penser qu’il y a une influence de l’action des données manquantes sur la stabilité des groupes de gênes. Mais le hclust n’est pas très lisible lorsque l’on se rapproche des racines, on ne peut donc pas dire que ce changement est significatif lorsque l’on insère des données manquantes dans la puce. Du fait de la grande quantité de gènes étudiés, le hclust n’est pas la méthode la plus appropriée. Il faut donc utiliser un estimateur des changements dans les associations de gènes lors de l’ajout de valeur manquante, appelé CPP (Proportion de pair de gène conservé ou « Conserved Pair Proportion »). Figure 2 : Graphe de l'évolution du CPP en fonction du pourcentage de valeurs manquantes contenues dans une puce à ADN En abscisse est indiqué le pourcentage de valeurs manquantes introduites dans la puce à ADN, allant de 0 à 50%. En ordonnée est indiqué le CPP, correspondant au pourcentage de couple dont le niveau d’expression est égal et conservé même après l’ajout de valeurs manquantes. Ici 100% de correspondance dans le CPP correspond aux regroupements visibles sur la puce sans donnée manquante. Les valeurs manquantes ont été remplacées par 0 pour effectuer le hclust. La fonction hclust et la méthode « complete » sont utilisées pour générer l’arbre des groupes de gènes. Enfin l’arbre est coupé de sorte que l’on obtient un nombre de groupe Kalgo=36, représentant le nombre de groupe optimal pour traiter notre échantillon de donnée. (Cf [1]) Observations : D’après le graphe du CPP en fonction du pourcentage de donnée manquante dans la puce à ADN, on observe une forte diminution du nombre de pair de gènes lorsqu’on augmente le pourcentage de donnée manquante. Il y a une diminution rapide qui descend jusqu'à environs 35% de groupes d’appariement pour un taux de valeurs manquantes de 50%. Cette diminution n’est pas linéaire, on peut avoir quelques fois des augmentations d’une itération à l’autre du CPP, alors que l’on augmente à chaque itération le taux d’erreur de 1%, mais le CPP diminue tout de même globalement au cours de la simulation. Conclusion sur le graphe: Ce graphe confirme qu’il y a une influence des données manquantes sur la stabilité des groupes de gènes dans la puce à ADN. Cette perturbation est d’autant plus forte qu’il y a de données manquantes dans la puce, de plus on a un comportement non stable des appariements, en effet on observe parfois une augmentation du CPP alors que l’on augmente le taux d’erreur. Cette observation est logique puisque le fait de remplacer les valeurs entraîne forcement des ruptures de couples, mais dans ce cas ci on remplace les données manquantes par des 0. On sait qu’a l’origine notre échantillon contenait une forte proportion de valeurs proches ou égales à 0, il y a donc une augmentation de la proportion de valeurs proches de 0 au cours du temps, ceci entraînant des perturbations dans la diminution du CPP. Pour réduire l’instabilité des groupes de gènes dans la puce, il faut utiliser un algorithme qui va remplacer les valeurs manquantes tel que le kNN. B) Estimation du taux de prédiction de la méthode kNN. Pour limiter les effets des valeurs manquantes et ainsi permettre l’analyse des données de puce à ADN, il existe plusieurs méthodes tel que la suppression des gènes contenant des données manquantes, ou bien le remplacement des données manquantes par 0, ou enfin des algorithmes permettant de réévaluer l’expression des gènes par comparaison entre un nombre k de voisin tel que le kNN. Les tests effectués dans cette partie visent à tester la méthode du kNN, afin d’évaluer l’efficacité de cet algorithme ainsi que ses limites. Pour estimer l’action de kNN sur les données manquantes, on réalise tout d’abord un échantillon de donnée dont on a retiré 10% des valeurs de manière aléatoire. La nouvelle distribution des valeurs est ensuite affichée à l’aide d’un histogramme puis comparé à notre échantillon de donnée sans valeur manquante : Figure 4 : Histogramme de la répartition des expressions de gène dans la puce sans donnée manquante et dans la puce avec correction de donnée manquante de 10% par la méthode kNN. L’histogramme s’étale sur 22 classes de valeurs dont les extrêmes sont regroupés dans les catgeories (<-1.1) et (>1.0). Le nombre d’occurrence de chaque valeur est indiqué en ordonnée. L’histogramme en vert représente la distribution des valeurs contenues dans la puce sans valeurs manquantes L’histogramme en bleu représente la distribution des valeurs dont les valeurs manquantes ont été réévaluées par la méthode kNN pour un pourcentage de donnée manquante de 10%. Observations : La comparaison des deux histogrammes indique qu’en général la méthode knn a réussis à restituer la valeur qui à été remplacé par une valeur manquante. On constate tout de même de forts écarts de répartition sur les valeurs extrêmes, avec par exemple pour les valeurs autour de -1.1 un écart de 50 occurrences entre la puce corrigée et la puce sans valeur manquante. Conclusion sur les deux histogrammes: Cette première évaluation du kNN indique qu’il y a une restitution significative des valeurs manquantes vers leurs valeurs d’origines, mais cela n’informe pas sur les réelles performances du kNN selon les différents taux de données manquantes, et si il y a une différence très significative entre le kNN et le remplacement de données manquantes par des 0. Dans cette expérience, on réalise plusieurs échantillons de puces qui ont été corrigés pas la méthode kNN, possédant un taux de correction différent allant de 1% à 50%. On procède également à la création de plusieurs puces contenant des 0 à la place des valeurs manquantes et on évalue la stabilité de l’expression des gènes dans ces deux échantillons à l’aide du CPP. On affiche enfin l’évolution du CPP pour l’échantillon de donnée corrigée par le CPP et celui dont les valeurs manquantes ont été remplacées par 0: Figure 5 : Graphe de l'évolution du CPP en fonction du pourcentage de valeurs manquantes contenues dans une puce corrigée par la méthode du kNN. En abscisse, on augmente le pourcentage de valeurs manquantes dans l’échantillon d’origine. En ordonnée, on affiche le pourcentage de couple de gène conservé par rapport aux couples de gènes dans la puce sans valeur manquante. En bleu est affiché la progression du CPP lorsqu’on augmente le taux d’erreur et que l’on corrige en remplaçant par 0. En rouge est affiché la progression du CPP dans l’échantillon corrigé par le Knn Observations : La courbe bleu matérialisant le pourcentage de donnée manquante corrigé par ajout de 0 est significativement plus faible en général que la courbe représentant l’échantillon dont les valeurs manquantes ont été corrigé par le kNN. Vers 50% de valeurs manquantes le kNN permet de conserver un CPP supérieur à 40% alors que la méthode de remplacement des valeurs par 0 à un CPP autour de 35%. Conclusion sur le graphe : Le knn permet donc de restituer la stabilité des groupes de gènes dans un échantillon ayant des valeurs manquantes. Cette correction est significativement différente de celle de la correction par remplacement des valeurs manquantes par 0. Ce graphe montre pourtant que le kNN n’est pas beaucoup plus performant que la méthode de remplacement par 0 pour conserver les couples de gènes. On veut maintenant estimer l’écart de l’estimation entre la valeur corrigée par le kNN et la valeur réelle contenu dans la puce sans valeur manquante. On utilise pour cela la méthode du NRMSE. On génère deux matrices contenant chacune 50 répétitions de chaque pourcentage de valeurs manquantes, de 0% à 50% par pas de 1%. Une matrice sera corrigée par la méthode kNN (en rouge), l’autre aura ses valeurs manquantes remplacées par 0 (en bleu). On parcourt ensuite les matrices pour faire la moyenne des valeurs estimées. On calcul enfin l’écart entre la valeur estimée et la valeur réelle pour chaque pourcentage d’erreurs. Figure 3: Graphe du NRMSE montrant l’écart entre les valeurs estimées et les valeurs réelles en fonction du pourcentage de donnée manquantes En rouge est représenté la moyenne des écarts entre valeur réelle et valeur corrigée par la méthode kNN En bleu est représenté la moyenne des écarts entre valeur réelle et valeur manquante remplacée par 0. Observ ations: La courbe rouge représentant l’évolution de l’écart entre les valeurs manquantes corrigées par le kNN et les valeurs réelles est constamment plus faible que celui en bleu correspondant à la méthode de remplacement par 0 des valeurs manquantes. L’écart entre valeur corrigée et valeur réelle pour la méthode de correction par le remplacement de valeur manquante par 0 est constant et égal à 1.1, quel que soit le pourcentage de valeurs manquantes considéré. De plus, pour des pourcentages de valeurs manquantes inférieures à 10% de la correction par la méthode kNN, l’écart entre la prédiction à la valeur réelle est d’environs 0.8, ce qui est largement inférieur à celui de la méthode de remplacement par 0. Conclusion sur le NRMSE: Le NRMSE permet de justifier que la méthode de correction par le kNN est largement plus performante que si on remplaçait les valeurs manquantes par 0. Cela peut se comprendre par le fait que la méthode de remplacement des valeurs manquantes par 0 ne se soucie pas des autres données de gène, alors que le kNN va chercher k voisins au gène ayant une valeur manquante, et faire une approximation de la valeur manquante en faisant la moyenne des valeurs voisines. Le NRMSE apporte une information supplémentaire en indiquant que la prédiction du kNN est plus proche de la valeur réelle si on considère des échantillons avec des pourcentages de données manquantes inférieurs à 10%. Conclusion La première partie de l’analyse a permis de justifier l’influence des données manquante sur la stabilité des expressions des couples de gènes répertoriés dans les puces à ADN. L’arbre montrant la répartition des groupes de gènes est bien différent lorsqu’on introduit des données manquantes dans un échantillon. De plus le test effectué par le calcul du CPP, qui est un estimateur du nombre de pair de gène conservé entre l’échantillon sans donnée manquante et l’échantillon avec valeur manquante, indique que plus on augmente le pourcentage de donnée manquante, plus on déstabilise les associations de groupes de gènes par rapport à un regroupement de référence, ce qui induirait une interprétation biaisé des données d’une puce à ADN. Comme les données manquantes sont souvent visibles dans les données de puce à ADN, il faut utiliser un algorithme de correction de ces valeurs pour créer un échantillon de donnée plus proche des valeurs réelles. On test donc dans la deuxième partie de l’analyse deux méthodes, la méthode de remplacement des valeurs manquantes par 0 ainsi que la méthode kNN, qui est un algorithme qui va comparer un nombre k de gènes ayant un jeu de donnée le plus proche de celui du gène contenant des valeurs manquantes. L’histogramme de répartition des valeurs d’un échantillon sans valeurs manquantes comparé à un échantillon ayant un pourcentage de données manquantes de 10% corrigés par la méthode kNN indique que le Knn permet de conserver une répartition de valeurs proche de celle de l’échantillon de référence. Pourtant la comparaison entre le CPP du kNN et celui de la méthode de remplacement des valeurs manquantes par 0 montre que le kNN est faiblement performant pour conserver les stabilités des groupes de gènes. Le calcul du NRMSE, qui est un estimateur de l’écart entre une valeur réelle et une valeur corrigée, indique pourtant que le kNN est plus performant pour restituer une valeur plus proche de la valeur réelle, surtout lorsque l’on considère des échantillons avec des pourcentages de données manquantes inférieurs à 10%.