Institut de la Francophonie pour l’Informatique Mémoire de fin d’études Implémentation d’une copule mutilvariée Réalisé par : Superviseur : PHAM Van Trung Gildas MAZO Projet Mistis Centre de recherche INRIA Grenoble Rhône-Alpes 29 novembre 2013 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Remerciements Je tiens à exprimer ma profonde gratitude à Gildas Mazo, mon directeur de stage. Il était toujours prêt à m’avoir donné des aides pour que j’aie pu comprendre bien des connaissances statistiques nécessaires. Ses commentaires utiles et ses judicieux conseils m’ont souvent été d’un grand recours pour mener à bien les objectifs de mon stage. Je tiens également à remercier les membres de l’équipe MISTIS.
Grâce à leur soutien, j’ai pu m’intégrer facilement à l’équipe. Je voudrais adresser mes sincères remerciements aux professeurs de l’IFI. Leurs cours m’ont permis d’approfondir mes connaissances sur des langages de programmation tels que R et C++. Enfin, je tiens à remercier ma famille, mes amis et notamment ma copine Truong Hong Van qui m’ont supporté ces six mois de stage.
Leurs encouragements m’ont permis d’être toujours motivé et d’avoir pu remplir mon rôle. i LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Résumé L’objectif de ce mémoire de fin d’études est d’implémenter une copule multivariée as- sociée à un Cumulative Distribution Network (CDN). CDN est une fonction de répartition d’un grand nombre de variables qui se factorise en produit de fonctions de répartition bivariées. Ce modèle permet de décrire la dépendance entre plusieurs variables aléatoires via un graphe où les arrêtes représentent les fonctions reliant les variables.
La fonction de vraisemblance est calculée grâce à un algorithme de message-passing. L’inférence dans le CDN est alors mise en oeuvre via la maximisation de la vraisemblance en utilisant une méthode d’optimisation. Toutefois, l’implémentation délicate de ce modèle peut freiner l’utilisateur dans la pra- tique. Nous nous proposons de l’implémenter et de le rendre disponible sous la forme d’un paquet R.
R est un logiciel de statistique très répandu et de plus en plus utilisé. Avec ce paquet, il est très facile de construire le graphe et de choisir des familles de copule paramétriques ainsi que de modéliser des données avec un CDN. Il permet aussi de calculer la vraisemblance selon l’algorithme de message-passing et de faire l’inférence. En outre, la vitesse de l’algorithme est augmentée grâce à l’écriture d’une partie du code en C++.
Mots-clés : Cumulative Distribution Network, copule, vraisemblance, fonction de répartition multivariée ii LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Abstract The goal of the thesis aims at implementing a multivariate copula associated with a Cumulative Distribution Network (CDN). CDN is a high-dimensional cumulative dis- tribution function (CDF) defined as a product of bivariate CDFs. This model accounts for dependencies between random variables via a graph where the edges represent the functions linking the variables. The likelihood function is computed thanks to a message- passing algorithm.
The inference in CDN is performed by optimizing the likelihood function. However, the implementation of this model is not available for users in practice. Hence, we propose to implement it and make it available as an R package. R is a statistical software widely spread in pratice.
Using this package, the users can build easily the graph, choose parametric copula families and generate data with a CDN. It allows to compute the likelihood function according to a message-passing algorithm and perform inference in CDN. Moreover, the speed of the algorithm has been increased by integrating C++ codes. Keywords : Cumulative Distribution Network, copula, likelihood, multivariate distri- bution function iii LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Table des matières Remerciements i Résumé ii Abstract iii Table des figures vi Liste des tableaux viii Contexte du stage 1 1 Introduction 3 1.1 Statistique théorique .1 Modèle statistique .2 Estimation des paramètres d’un modèle statistique .4 Cumulative distribution networks .5 La copule associée au CDN .2 Environnement de programmation .2 Structure d’un paquet R .3 Rcpp - Interface entre R et C++.
10 2 Algorithme de gradient-derivative-product 11 2.1 Initialisation de l’algorithme .2 Propagation des messages .3 Calcul de la fonction de vraisemblance et son gradient .1 Structure du paquet .3 Tests et tutoriels .2 Fonctions du paquet .1 Création d’un objet CDN .2 Implémentation de l’algorithme de message-passing .3 Estimation des paramètres. 26 iv LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Contents v 4 Expérimentations 28 4.1 Précision numérique de l’algorithme de message-passing .2 Simulation des données .3 Temps d’exécution .4 Application avec un jeu de données réelles. 36 5 Conclusions et perspectives 40 Bibliographie 41 A mpAlgo 43 A.1 Initialisation de l’algorithme de message-passing .2 Propagation des messages .3 Calcul de la densité et du gradient .1 Calcul de la fonction de vraisemblance et son gradient .2 Méthode de Broyden-Fletcher-Goldfarb-Shanno bfgs .3 Limited-memory BFGS with bounds lbfgsb. 50 C rCdn, pCdn et dCdn 51 C.1 Génération aléatoire des observations rCdn .2 Calcul de la fonction de répartition pCdn .3 Calcul de la densité de plusieurs observations dCdn.
52 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Table des figures 1.1 Exemple d’un CDN à trois variables .2 Exemple d’un CDN à sept variables .1 Exemple d’un arbre de 5 variables .2 Propagation des messages dans le CDN .1 Composants principaux du paquet CDN .2 Code source du paquet CDN .3 Documentation du paquet .4 Tests et démo .5 Diagramme des fonctions du paquet .6 Création d’un objet CDN .7 Exemple de transformation d’un graphe des variables en graphe CDN .8 Exemple de simplification du graphe.9 Algorithme de message-passing .10 Calculation de la fonction de répartition normale et ses gradients .11 Appel des libraries/fonctions dans C/C++ .12 Comparaison entre cdnOptim et optim.0 Précision de l’algorithme de message passing avec 5 modèles existants.1 Précision de l’algorithme de message passing avec le modèle normal. 32 vi LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com List of Tables vii 4.2 Temps d’exécution du calcul direct et de la fonction mpAlgo (en millise- condes) .3 Plan de 9 sites aux États Unis où les précipitations sont utilisées pour notre modèle .4 Résultats de 6 modèles mutivariés. 39 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Liste des tableaux 3.1 Matrice binaire extraite du graphe CDN.2 Comparaison entre le temps du calcul via fonction R et celui du calcul direct en C++ .1 Probabilité de l’événement (X1 ≤ x01 , X2 ≤ x02 , X3 ≤ x03 , X4 ≤ x04 , X5 ≤ x05 ) dans les données simulées et F (x0 ) = F (x01 , x02 , x03 , x04 , x05 ) .2 Résultats de l’estimation des paramètres .3 Temps d’exécution du calcul direct (en rouge) et de la fonction mpAlgo (en bleu) (en milisecondes) .4 Comparaison entre le temps d’exécution de la fonction optim et cdnOptim (en secondes) .5 Erreur quadratique moyenne selon deux modèles. 37 viii LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Contexte du stage Problématique Les copules [1, 2] jouent un rôle de plus en plus important dans la construction de distributions en grande dimension et la description de la dépendance entre les variables aléatoires.
L’une des difficultés de la construction d’une copule mutilvariée réside dans l’inférence de modèles paramétriques. Une copule multivariée associée à un Cumulative Distribution Network (CDN) [3] a été proposée. L’intérêt de ce modèle est la capacité de faire l’inférence via un algorithme de message-pasing [4]. L’estimation des paramètres est alors mise en oeuvre par la maximisation de la vraisemblance.
Toutefois, le code pour utiliser le CDN ainsi que l’algorithme de message-passing n’est pas disponible. Cela peut freiner l’utilisateur dans la pratique. C’est la raison pour laquelle nous nous proposons d’implémenter cet algorithme dans mon stage. Objectif de stage L’objectif de mon stage est d’implémenter l’inférence de cette copule multivariée et de la rendre disponible sous la forme d’un paquet R [5].
Ce paquet qui s’appelle CDN est disponible pour l’utilisation. Je l’ai présenté dans une communication orale et un poster en juin 2013 à Lyon lors des deuxièmes rencontres R [6]. Je prévois de le soumettre sur le dépôt des paquets R (http://cran.org/) en décembre 2013 après la publication de [3]. Environnement de stage Mon stage est réalisé au centre de recherche INRIA Grenoble Rhône-Alpes dans le cadre du projet MISTIS sous la direction de Mazo Gildas.
Cette équipe a pour domaine d’expertise la modélisation de phénomènes aléatoires complexes en grande dimension 1 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com List of Tables 2 et les statistiques des valeurs extrêmes, avec pour orientations applicatives privilégiées le traitement d’images et de données spatiales et dans les domaines biomédicaux et industriels. Mon stage s’inscrit à l’interface des statistiques des valeurs extrêmes et de la modélisation statistique en grande dimension. Plan de mémoire Ce mémoire se compose des cinq chapitres suivants : – Chapitre 1. Dans ce chapitre, je vais présenter quelques notions statistiques nécessaires telles que le modèle statistique, la copule, le Cumulative Dis- tribution Network, l’inférence.
L’environnement de programmation, y compris R et C++, est aussi expliqué. Algorithme de gradient-derivative-product. Ce chapitre sert à détailler un algorithme efficace qui permet de calculer la fonction de vraisemblance dans le Cumulative Distribution Network. Ce chapitre présente les composants importants du paquet CDN et comment ils sont installés dans R et C++.
Dans ce chapitre, je vais faire quelques expérimentations pour démontrer la précision des résultats obtenus par le paquet CDN, ainsi que ses avantages. Les applications sur les données simulées et réelles sont aussi montrées. Conclusion et perspectives. Dans la conclusion, je résume les contri- butions et les perspectives qui découlent de mon paquet.
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Chapitre 1 Introduction Ce chapitre sert à introduire quelques notions nécessaires sur la statistique théorique et computationnelle. Cela permet au lecteur de suivre facilement le rapport. Dans la première partie, ce sont des concepts principaux concernant les modèles statistiques, les copules, le Cumulative distribution networks (CDN) [7], l’inférence et l’optimisation. Dans la deuxième, R [5] est présenté comme un langage de programmation afin de développer des outils efficaces pour le traitement des données et l’analyse statistique.1 Statistique théorique 1.1 Modèle statistique Un modèle statistique se compose de deux ingrédients : une variable aléatoire X et une fonction de répartition F (x).
Cette fonction est définie via la probabilité d’un événement associé à X comme suit : F : R → [0, 1] F (x) = P r{X ≤ x}.1) F est une fonction croissante. Si elle est dérivable, la fonction de densité est donnée par : dF (x) f (x) = .2) dx Dans ce cas-là, la fonction de répartition s’écrit aussi : Z x F (x) = f (u)du.3) −∞ 3 LUAN VAN CHAT LUONG download : add luanvanchat@agmail. Introduction 4 Dans le cas d’un vecteur aléatoires X = (X1 , X2 ,. , Xk ), la fonction de répartition multivariée est donnée par : F (x1 , x2 , .4) Si les variables Xi sont continues, la densité de probabilité multivariée est donnée par : ∂ k F (x1 , x2 ,.
∂xk La fonction de répartition est alors : Z x1 Z xk F (x1 , x2 , .6) −∞ −∞ La densité marginale de Xi , i = 1,. , k est définie comme : Z ∞ Z ∞ fXi (xi ) =. , ui−1 , xi , ui+1 , .7) −∞ −∞ Dans le cas de plusieurs variables, par exemple X1 et X2 , la marge est donnée par : Z ∞ Z ∞ fX1 ,X2 (x1 , x2 ) = .2 Estimation des paramètres d’un modèle statistique Soit X1 , X2 ,. , Xn (indépendantes et identiquement distribuées) un échantillon d’une population dont la densité de probabilité est f (.|θ) où θ est un vecteur de paramètres inconnus de la population.
L’objectif de l’estimation est de trouver la vraie valeur du paramètre θ à partir de cet échantillon. La méthode du maximum de vraisemblance est la plus efficace asymptotiquement [8].