qx, qy sont des fonctions 1.1.4 Cumulative distribution networks Cumulative distribution network CDN est un mod`ele statistique propos´e dans la th`ese de Huang [7].. Un Cumulative distr
Trang 1R´ealis´e par :
PHAM Van Trung
Superviseur :Gildas MAZO
Projet MistisCentre de recherche
29 novembre 2013
Trang 2Je tiens ´egalement `a remercier les membres de l’´equipe MISTIS Grˆace `a leur soutien,j’ai pu m’int´egrer facilement `a l’´equipe.
Je voudrais adresser mes sinc`eres remerciements aux professeurs de l’IFI Leurs coursm’ont permis d’approfondir mes connaissances sur des langages de programmation telsque R et C++
Van qui m’ont support´e ces six mois de stage Leurs encouragements m’ont permis d’ˆetretoujours motiv´e et d’avoir pu remplir mon rˆole
i
Trang 3L’objectif de ce m´emoire de fin d’´etudes est d’impl´ementer une copule multivari´ee soci´ee `a un Cumulative Distribution Network (CDN) CDN est une fonction de r´epartitiond’un grand nombre de variables qui se factorise en produit de fonctions de r´epartitionbivari´ees Ce mod`ele permet de d´ecrire la d´ependance entre plusieurs variables al´eatoiresvia un graphe o`u les arrˆetes repr´esentent les fonctions reliant les variables La fonction devraisemblance est calcul´ee grˆace `a un algorithme de message-passing L’inf´erence dans
as-le CDN est alors mise en oeuvre via la maximisation de la vraisemblance en utilisantune m´ethode d’optimisation
Toutefois, l’impl´ementation d´elicate de ce mod`ele peut freiner l’utilisateur dans la tique Nous nous proposons de l’impl´ementer et de le rendre disponible sous la formed’un paquet R R est un logiciel de statistique tr`es r´epandu et de plus en plus utilis´e.Avec ce paquet, il est tr`es facile de construire le graphe et de choisir des familles decopule param´etriques ainsi que de mod´eliser des donn´ees avec un CDN Il permet aussi
pra-de calculer la vraisemblance selon l’algorithme pra-de message-passing et pra-de faire l’inf´erence
En outre, la vitesse de l’algorithme est augment´ee grˆace `a l’´ecriture d’une partie du code
en C++
Mots-cl´es : Cumulative Distribution Network, copule, vraisemblance, fonction de r´epartitionmultivari´ee
ii
Trang 4The goal of the thesis aims at implementing a multivariate copula associated with aCumulative Distribution Network (CDN) CDN is a high-dimensional cumulative dis-tribution function (CDF) defined as a product of bivariate CDFs This model accountsfor dependencies between random variables via a graph where the edges represent thefunctions linking the variables The likelihood function is computed thanks to a message-passing algorithm The inference in CDN is performed by optimizing the likelihoodfunction
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 statisticalsoftware widely spread in pratice Using this package, the users can build easily thegraph, choose parametric copula families and generate data with a CDN It allows tocompute the likelihood function according to a message-passing algorithm and performinference in CDN Moreover, the speed of the algorithm has been increased by integratingC++ codes
Keywords : Cumulative Distribution Network, copula, likelihood, multivariate bution function
distri-iii
Trang 5Remerciements i
1.1 Statistique th´eorique 3
1.1.1 Mod`ele statistique 3
1.1.2 Estimation des param`etres d’un mod`ele statistique 4
1.1.3 Copules 5
1.1.4 Cumulative distribution networks 6
1.1.5 La copule associ´ee au CDN 8
1.2 Environnement de programmation 9
1.2.1 R 9
1.2.2 Structure d’un paquet R 9
1.2.3 Rcpp - Interface entre R et C++ 10
2 Algorithme de gradient-derivative-product 11 2.1 Initialisation de l’algorithme 11
2.2 Propagation des messages 12
2.3 Calcul de la fonction de vraisemblance et son gradient 13
3 Impl´ementation 17 3.1 Structure du paquet 17
3.1.1 Code source 18
3.1.2 Documentation 18
3.1.3 Tests et tutoriels 19
3.2 Fonctions du paquet 19
3.2.1 Cr´eation d’un objet CDN 20
3.2.2 Impl´ementation de l’algorithme de message-passing 22
3.2.3 Estimation des param`etres 26
iv
Trang 6Contents v
4.1 Pr´ecision num´erique de l’algorithme de message-passing 28
4.2 Simulation des donn´ees 30
4.3 Temps d’ex´ecution 33
4.4 Application avec un jeu de donn´ees r´eelles 36
5 Conclusions et perspectives 40 Bibliographie 41 A mpAlgo 43 A.1 Initialisation de l’algorithme de message-passing 43
A.2 Propagation des messages 44
A.3 Calcul de la densit´e et du gradient 47
B cdnOptim 48 B.1 Calcul de la fonction de vraisemblance et son gradient 48
B.2 M´ethode de Broyden-Fletcher-Goldfarb-Shanno bfgs 49
B.3 Limited-memory BFGS with bounds lbfgsb 50
C rCdn, pCdn et dCdn 51 C.1 G´en´eration al´eatoire des observations rCdn 51
C.2 Calcul de la fonction de r´epartition pCdn 52
C.3 Calcul de la densit´e de plusieurs observations dCdn 52
Trang 71.1 Exemple d’un CDN `a trois variables 7
1.2 Exemple d’un CDN `a sept variables 8
2.1 Exemple d’un arbre de 5 variables 15
2.2 Propagation des messages dans le CDN 16
3.1 Composants principaux du paquet CDN 17
3.2 Code source du paquet CDN 18
3.3 Documentation du paquet 19
3.4 Tests et d´emo 19
3.5 Diagramme des fonctions du paquet 20
3.6 Cr´eation d’un objet CDN 21
3.7 Exemple de transformation d’un graphe des variables en graphe CDN 22
3.8 Exemple de simplification du graphe 23
3.9 Algorithme de message-passing 23
3.10 Calculation de la fonction de r´epartition normale et ses gradients 24
3.11 Appel des libraries/fonctions dans C/C++ 25
3.12 Comparaison entre cdnOptim et optim 27
4.0 Pr´ecision de l’algorithme de message passing avec 5 mod`eles existants 31
4.1 Pr´ecision de l’algorithme de message passing avec le mod`ele normal 32
vi
Trang 8List of Tables vii
millise-condes) 354.3 Plan de 9 sites aux ´Etats Unis o`u les pr´ecipitations sont utilis´ees pournotre mod`ele 384.4 R´esultats de 6 mod`eles mutivari´es 39
Trang 93.1 Matrice binaire extraite du graphe CDN 22
4.1 Probabilit´e de l’´ev´enement (X1 ≤ x01, X2≤ x02, X3 ≤ x03, X4 ≤ x04, X5 ≤
x05) dans les donn´ees simul´ees et F (x0) = F (x01, x02, x03, x04, x05) 324.2 R´esultats de l’estimation des param`etres 34
(en secondes) 36
viii
Trang 10Contexte du stage
Les copules [1, 2] jouent un rˆole de plus en plus important dans la construction dedistributions en grande dimension et la description de la d´ependance entre les variablesal´eatoires L’une des difficult´es de la construction d’une copule mutilvari´ee r´eside dansl’inf´erence de mod`eles param´etriques Une copule multivari´ee associ´ee `a un CumulativeDistribution Network (CDN) [3] a ´et´e propos´ee L’int´erˆet de ce mod`ele est la capacit´e
de faire l’inf´erence via un algorithme de message-pasing [4] L’estimation des param`etresest alors mise en oeuvre par la maximisation de la vraisemblance Toutefois, le code pourutiliser le CDN ainsi que l’algorithme de message-passing n’est pas disponible Cela peutfreiner l’utilisateur dans la pratique C’est la raison pour laquelle nous nous proposonsd’impl´ementer cet algorithme dans mon stage
Objectif de stage
L’objectif de mon stage est d’impl´ementer l’inf´erence de cette copule multivari´ee et de
la rendre disponible sous la forme d’un paquet R [5] Ce paquet qui s’appelle CDN estdisponible pour l’utilisation Je l’ai pr´esent´e dans une communication orale et un poster
en juin 2013 `a Lyon lors des deuxi`emes rencontres R [6] Je pr´evois de le soumettresur le d´epˆot des paquets R (http://cran.r-project.org/) en d´ecembre 2013 apr`es lapublication de [3]
Environnement de stage
cadre du projet MISTIS sous la direction de Mazo Gildas Cette ´equipe a pour domained’expertise la mod´elisation de ph´enom`enes al´eatoires complexes en grande dimension
1
Trang 11et les statistiques des valeurs extrˆemes, avec pour orientations applicatives privil´egi´ees
le traitement d’images et de donn´ees spatiales et dans les domaines biom´edicaux etindustriels Mon stage s’inscrit `a l’interface des statistiques des valeurs extrˆemes et de
la mod´elisation statistique en grande dimension
Ce m´emoire se compose des cinq chapitres suivants :
statistiques n´ecessaires telles que le mod`ele statistique, la copule, le Cumulative
C++, est aussi expliqu´e
d´etailler un algorithme efficace qui permet de calculer la fonction de vraisemblancedans le Cumulative Distribution Network
– Chapitre 4 Exp´erimentations Dans ce chapitre, je vais faire quelques exp´erimentationspour d´emontrer la pr´ecision des r´esultats obtenus par le paquet CDN, ainsi que sesavantages Les applications sur les donn´ees simul´ees et r´eelles sont aussi montr´ees
contri-butions et les perspectives qui d´ecoulent de mon paquet
Trang 12Chapitre 1
Introduction
Ce chapitre sert `a introduire quelques notions n´ecessaires sur la statistique th´eorique
et computationnelle Cela permet au lecteur de suivre facilement le rapport Dans lapremi`ere partie, ce sont des concepts principaux concernant les mod`eles statistiques,les copules, le Cumulative distribution networks (CDN) [7], l’inf´erence et l’optimisation.Dans la deuxi`eme, R [5] est pr´esent´e comme un langage de programmation afin ded´evelopper des outils efficaces pour le traitement des donn´ees et l’analyse statistique
1.1.1 Mod`ele statistique
Un mod`ele statistique se compose de deux ingr´edients : une variable al´eatoire X et unefonction de r´epartition F (x) Cette fonction est d´efinie via la probabilit´e d’un ´ev´enementassoci´e `a X comme suit :
Trang 13Dans le cas d’un vecteur al´eatoires X = (X1, X2, , Xk), la fonction de r´epartitionmultivari´ee est donn´ee par :
f (u1, , ui−1, xi, ui+1, uk)du1 dui−1dui+1 duk (1.7)
Dans le cas de plusieurs variables, par exemple X1 et X2, la marge est donn´ee par :
1.1.2 Estimation des param`etres d’un mod`ele statistique
Soit X1, X2, , Xn (ind´ependantes et identiquement distribu´ees) un ´echantillon d’unepopulation dont la densit´e de probabilit´e est f (.|θ) o`u θ est un vecteur de param`etresinconnus de la population L’objectif de l’estimation est de trouver la vraie valeur duparam`etre θ `a partir de cet ´echantillon La m´ethode du maximum de vraisemblance est
la plus efficace asymptotiquement [8] La vraisemblance est donn´ee par :
Trang 14Chapitre 1 Introduction 5
∇θ(−L(θ)) L’algorithme s’arrˆete quand la valeur du gradient est suffisamment petite.Bas´ee sur l’id´ee de la m´ethode de Newton, les m´ethodes Broyden-Fletcher-Goldfarb-Shanno (BFGS) et Limited-memory BFGS (L-BFGS) [9] ont ´et´e d´evelopp´ees L’avan-tage de ces m´ethodes est leur impl´ementation pratique C’est la raison pour laquelle jeles ai utilis´ees dans mon impl´emetation
1.1.3 Copules
Les copules [1, 2] ont pour objectif de mod´eliser la d´ependance de plusieurs variables
r´epartition
D´efinition 1.1.3.1 Soit F une fonction de r´epartition `a n dimensions, x = (x1, , xn) ∈
Rn (n ≥ 2) Sa marge Fi (1 ≤ i ≤ n) est obtenue quand x1, x2, , xi−1, xi+1, , xntendent vers +∞ :
Fi(xi) = lim
D´efinition 1.1.3.2 Une copule C : [0, 1]n→ [0, 1] est une fonction de r´epartition dontles marges sont uniformes Soit le vecteur u = (u1, , un) ∈ [0, 1]n, les marges de lacopule C sont donn´ees par :
Ck(uk) = lim
u\uk→1 C(u1, , un) = uk ∀k = 1, , n (1.12)
Th´eor`eme 1.1.3.1 (Sklar [1]) Soit H une fonction de r´epartition dont les marges F
et G sont continues Il existe une unique copule C de sorte que ∀x, y ∈ R :
i1/θ
Trang 15θ2q(x)2+ θ2q(y)2− 2θq(x)q(y)
2θ2− 2
!dxdy, θ ∈ (−1, 1);
(1.19)o`u θ est un param`etre inconnu
– (1.14) est la famille de copule de Gumbel
– (1.15) est la famille de copule de Farlie-Gumbel-Morgenstern (FGM)
– (1.16) est la famille de copule de Frank
– (1.17) est la famille de copule de Ali-Mikhail-Haq (AMH)
– (1.18) est la famille de copule de Joe
– (1.19) est la famille de copule de Gauss (copule normale) q(x), q(y) sont des fonctions
1.1.4 Cumulative distribution networks
Cumulative distribution network (CDN) est un mod`ele statistique propos´e dans la th`ese
de Huang [7] Dans ce mod`ele, la fonction de r´epartition s’´ecrit comme un produit
de fonction de r´epartition bivari´ees On lui associe un graphe pour repr´esenter lesd´ependances
D´efinition 1.4.1 Un graphe biparti G = (V, S, E) est construit `a partir de trois sembles : deux ensembles de sommets V et S, un ensemble d’arˆetes E Les arrˆetes dugraphe ont une extr´emit´e dans V et l’autre dans S
en-D´efinition 1.4.2 Un Cumulative distribution network (CDN) est un mod`ele statistique
variable et S indique un ensemble de noeuds de fonction, E se compose des arˆetes entredes noeuds de variable et de fonctions Chaque fonction est repr´esent´ee par φs(xs) :
R|N (s)| → [0, 1] o`u s ∈ S, N (s) = {s1, , sd} est l’ensemble de voisins de la fonction s
et xs = xN (s) = (xs1, , xsd) o`u d = |N (s)| est le nombre de voisins de s Toutes lesfonctions φsdoivent satisfaire les propri´et´es caract´eristiques des fonctions de r´epartition
La fonction de r´epartition sur toutes les variables dans le CDN s’´ecrit :
s∈S
Trang 16Dans notre cas, nous consid´erons un CDN avec les contraintes suivantes :
1 Le graphe ne contient aucun cycle Autrement dit, c’est un arbre de n variables et
n - 1 fonctions
2 Les feuilles sont des noeuds de variables
3 Chaque noeud de fonction n’est reli´e qu’`a deux noeuds de variable En effet, lesfonctions de r´epartition φs sont bivari´ees Cela veut dire que φs(xs) = φs(xα, xβ)o`u α, β sont les variables voisines de la fonction s : N (s) = {α, β}
cercles montrent des noeuds de variable et les diamants indiquent les noeuds de fonction.Alors, la fonction de r´epartition sur trois variables X1, X2et X3 dans le CDN est donn´eepar :
F (x1, x2, x3) = φ1(x1, x2)φ2(x2, x3) (1.26)
Figure 1.1: Exemple d’un CDN ` a trois variables.
fonction de r´epartition sur sept variables X1, X2, X3, X4, X5, X6, X7 dans le CDN
Trang 17Consid´erons φs comme une fonction param´etrique, on a : φs = φs(xα, xβ; θs) o`u θs est
un param`etre inconnu, α, β sont les voisins de s Nous prenons la fonction φsen fonctiond’une copule :
φs(xα, xβ; θs) = Cs(x1/nα
o`u Cs est une copule `a choisir ; nα et nβ sont respectivement les nombres de voisins desvariables α et β Comme Cs est une copule, xα, xβ ∈ [0, 1] La fonction de r´epartitions’´ecrit alors :
Pour la simulation des donn´ees de la fonction de r´epartition C(x1, , xd|θ), on utilise
le lemme de Liebscher [11] :
Trang 18o, α = 1, , d.
La fonction de r´epartition du vecteur (U1, U2, , Ud) est C(x1, , xd|θ)
1.2.1 R
le traitement des donn´ees et l’analyse statistique Il est d´evelopp´e par GNU R est
de plus en plus important et connu grˆace `a ses avantages Premi`erement, R est opensource C’est libre `a utiliser et `a d´evelopper Deuxi`emement, il permet de faire de la
disponible sur plusieurs syst`emes d’op´eration populaires comme Unix, Windows et cOS Quatri`emement, R est associ´e `a plusieurs langages de programmation tels queC/C++, Fortan En effet, il permet d’appeler directement le code dans C/C++, For-tan Derni`erement, R s’´etend facilement via des paquets ´ecrits par les d´eveloppeurs Enoutre, il existe le d´epˆot CRAN pourque les d´eveloppeurs puissent d´eposer leurs paquets
Ma-1.2.2 Structure d’un paquet R
Normalement, un paquet R se compose des parties suivantes [12] :
– Un fichier Description qui d´ecrit le paquet, l’auteur et la licence
– Le r´epertoire man/ contient les fichiers de la documentation
– Le r´epertoire R/ est le lieu pour d´eposer le code source en R
– Le r´epertoire data/ fourni les donn´ees disponibles dans le paquet
– Le r´epertoire src/ contient le code source en C/C++, Fortan
– Le r´epertoire tests/ se compose des fichiers R qui sert `a v´erifier les fonctions fourniespar le paquet
– Le r´epertoire exec/ comprend les fichiers ex´ecutables (en Java ou Perl)
– Le r´epertoire vignettes/ donne quelques exemples et renseignements pour l’utilisation
du paquet
Trang 19et la modification des objets de R en C++ Il peut aussi faciliter l’´echange des donn´eesentre R et C++ et la gestion des erreurs En outre, avec Rcpp, le code peut devenirplus propre et avec moins de bugs C’est la raison pour laquelle Rcpp est utilis´e pourconstruire notre paquet.
Trang 20s´eparer la d´erivation multiple en une chaˆıne des d´eriv´ees locales sous forme de messages.
En effet, on constate qu’une variable n’apparait que dans ses fonctions de voisin Au lieu
de d´eriver la fonction de repartition par rapport `a toutes les variables, il est n´ecessaire decalculer les d´eriv´ees locales et les mettre sous forme des messages Grˆace `a un processus
de propagation des messages, la fonction de vraisemblance est finalement obtenue :
Cet algorithme GDP se compose des trois ´etapes principales suivantes :
1 Initialisation de l’algorithme,
2 Propagation des messages, et ,
3 Calcul de la fonction de vraisemblance et son gradient
Les messages entre des noeuds de variable et de fonction sont repr´esent´es par les fonctions
µs→α, µα→s, λs→α, λα→s o`u s est un noeud de fonction et α est un noeud de variable s
11
Trang 21et α sont deux noeuds adjacents : α ∈ N (s), s ∈ N (α) µs→α et λs→αsont les messages
`
messages `a partir des noeuds de variable α aux noeuds de fonction s D’abord, toutesles fonctions de message et leur gradient sont initialis´es `a z´ero sauf µα→s o`u α est unefeuille du graphe :
des variables aux fonctions et l’autre `a partir des fonctions aux variables
• Les messages `a partir des noeuds int´erieurs de variable α aux noeuds de fonction devoisin s ∈ N (α) Les fonctions de message sont mises `a jour comme suit :
Trang 22Chapitre 2 Algorithme de gradient-derivative-product 13
• Messages `a partir des noeuds de fonction s aux noeuds de variable de voisin α ∈ N (s).Les fonctions de message sont mises `a jour comme suit :
La valeur de ces fonctions est fix´ee et ne change pas dans les it´erations suivantes Dans
la deuxi`eme it´eration, les messages entrant et sortant aux variables `a la hauteur de 2sont mis `a jour et fix´es Semblablement, `a la k -i`eme it´eration, les messages entrant etsortant aux variables `a la hauteur de k sont calcul´es Quand les fonctions de messageentrant la racine sont calcul´ees et fix´ees, l’algorithme s’arrˆete alors
Enfin, il faut calculer la d´eriv´ee f (x|θ) = ∂x α
hQ
Pour trouver la racine α, on va tout d’abord d´efinir quelques notions et des propri´et´es
de l’arbre qui sont d´etaill´ees dans [14,15] Soit G un arbre :
Trang 23• Si G a n arˆetes, le nombre de sommets de G est alors n + 1.
• La distance entre deux noeuds de G est le nombre des arˆetes dans le plus court chemin
entre eux
• L’excentricit´e d’un sommet est sa distance maximale `a tous les autres sommets de G
• Le centre de G est un sommet dont l’excentricit´e est minimale En outre, le centre du
graphe n’est pas unique En effet, il existe un ensemble des centres
• Les centres du graphe se trouvent au milieu du plus long chemin de G L’excentricit´e
de centre est donc ´egale `a la moiti´e de la longueur du plus long chemin
On remarque que la d´eriv´ee f (x|θ) = ∂x[F (x|θ)] et son gradient ∇θf (x|θ) ne d´ependent
pas de la racine choisie Les r´esultats ne changent pas si on choisit autre racine
Cepen-dant, le choix de la racine permet de d´eterminer le nombre d’it´erations de l’algorithme
En effet, en observant la propagation des messages, on trouve qu’il s’agit de n it´erations
pour obtenir tous les messages entrant `a la racine o`u n est l’excentricit´e de la racine
C’est la raison pour laquelle on choisit un centre du graphe de variables comme la racine
puisque l’excentricit´e du centre est minimale Le nombre d’it´erations de l’algorithme est
alors d´efini comme l’excentricit´e du centre Il faut donc trouver un plus long chemin du
graphe des variables Le noeud au milieu de ce chemin est choisi comme la racine du
graphe CDN
Exemple 2.3.1 Sur la figure 2.1, c’est un arbre de cinq variables et le graphe CDN
correspondant
• La distance entre le sommet X1 et X4 est 3 puisque le plus court chemin entre ces
deux sommets est X1 - X2 - X3 - X4
• Les distances entre le sommet X3 et les autres {X1, X2, X4, X5} sont {2, 1, 1, 1}
L’excentricit´e de X3 est alors 2
• Les excentricit´es des sommets {X1, X2, X3, X4, X5} sont {3, 2, 2, 3, 3} Le centre du
graphe de variables est donc {X2, X3}
• Dans le graphe de variable, il y a deux plus longs chemins : X1 - X2 - X3 - X4 et X1
- X2 - X3 - X5 Deux centres {X2, X3} se trouvent au milieu des plus longs chemins
• La racine du graphe CDN est un des deux centres {X2, X3}
graphe CDN se compose de 6 variables (X1,X2,X3,X4,X5,X6) et 5 fonctions (Φ1, Φ2, Φ3, Φ4, Φ5)
Le plus long chemin est (X1 - X2 - X3 - X5 - X6) La racine du graphe de variables est
alors le sommet X3 Le nombre d’it´eration est 2 L’algorithme de message-passing est
d´etaill´e comme suit :
• `A l’´etape d’initialisation, les messages sortant des feuilles sont initialis´es Ce sont des
messages variables-fonctions X1 − Φ1, X4 − Φ3, X6 − Φ5
Trang 24Chapitre 2 Algorithme de gradient-derivative-product 15
Figure 2.1: Exemple d’un arbre de 5 variablese.
• Dans la premi`ere it´eration, les messages entrant et sortant pour X2, X3 et X5 sontcalcul´es Pour la variable X2, c’est Φ1 − X2, puis X2 − Φ2 Pour la variable X3, c’estΦ3 − X3 Pour la variable X5, c’est Φ5 − X5, puis X5 − Φ4
• `A la deuxi`eme it´eration, les messages entrant `a la variable X3 sont calcul´es Ce sontdes messages fonctions-variables Φ4 − X3 et Φ2 − X3 On note que la figure 2.2montre seulement les messages n´ecessaires pour le calcul f (x|θ) et ∇θf (x|θ) Ce sontdes messages tendant vers la racine X3 Pour les autres, on n’affiche pas Par exemple,
calcul´es Toutefois, ils ne servent pas `a calculer f (x|θ) et ∇θf (x|θ)
• Enfin, f (x|θ) et ∇θf (x|θ) sont calcul´es `a partir des messages entrant `a la racine X3.Par exemple,
Trang 25Figure 2.2: Propagation des messages dans le CDN.
Trang 26Chapitre 3
Apr`es avoir fait le point sur les connaissances importantes concernant le CDN (1.22), on
va se concentrer sur ce que j’ai fait dans mes travaux C’est d’impl´ementer l’inf´erence de
la copule associ´ee `a un CDN pr´esent´ee dans l’´equation (1.29) et de le rendre disponiblesous forme d’un paquet R En d´etail, je vais montrer ce qui est install´e dans ce paquet
et comment ¸ca fonctionne En outre, quelques astuces servant `a acc´el´erer la vitesse desfonctions du paquet sont pr´esent´ees
Dans cette section, je vais montrer des composants principaux du paquet CDN quisont affich´es sur la figure 3.1 Le code source et la documentation sont deux partiesindispensables dans chaque paquet R Les tests et le tutoriel ne sont pas n´ecessairesmais appr´eci´es
Figure 3.1: Composants principaux du paquet CDN.
17
Trang 273.1.1 Code source
(Figure 3.2) D’une part, le code C++ est mis dans le r´epertoire /src Il fournit quelques
Compute.cpp, Derivatives.cpp, Gradient.cpp, miwa.cpp) et l’inf´erence dans le CDN tim.cpp, lbfgsb.cpp) Les fichiers de R se trouvent dans le r´epertoire /R Ils ont pourobjectif de cr´eer l’objet CDN qui est pr´ecis´e dans la section 3.2.1 (CDN.R, cdnMo-dels.R), d’appeler des fonctions C++ (cdnOptim.R, mpAlgo.R), de g´en´erer des donn´eesal´eatoires (rCdn.R) Le d´etail des fonctions du paquet est montr´e dans la section 3.2
(Op-Figure 3.2: Code source du paquet CDN.
3.1.2 Documentation
La documentation du paquet (Figure 3.3) est mise dans deux r´epertoire : /man et gnettes Les fichiers dans /man d´ecrivent le paquet (CDN-package.Rd ) et les donn´eesdisponibles (JapanSeaLevel.Rd ) Ils expliquent aussi comment cr´eer l’objet CDN (CDN-class.Rd, cdnModels.Rd ), utiliser l’algorithme de message-passing (mpAlgo.Rd ), fairel’inf´erence (cdnOptim.Rd ), g´en´erer des donn´ees al´eatoires (CDN.Rd ) En outre, les vi-
et l’utiliser pour r´esoudre des probl`emes statistiques Les fichiers de test et de tutorielsont montr´es sur la figure 3.4
Trang 28Chapitre 3 Impl´ementation 19
Figure 3.3: Documentation du paquet.
3.1.3 Tests et tutoriels
Le r´epertoire /tests contient des fichiers qui testent quelques sc´enarios diff´erents afin
corrects En effet, on va v´erifier la justesse d’impl´ementation de l’algorithme passing (precision.R, testingFunctions.R), la simulation des donn´ees al´eatoires (simula-tion.R) et l’inf´erence dans le CDN (optim.R) De plus, il reste un fichier de descriptionqui pr´esente g´en´eralement le paquet CDN et les paquets de d´ependance tels que Rcpp(l’interface R/C++), igraph et methodes (pour cr´eer l’objet CDN), copula (pour simulerdes donn´ees), numDeriv (pour les tests)
message-Figure 3.4: Tests et d´emo.
Dans cette section, je vais montrer les fonctions fournies par le paquet CDN La figure3.5 d´ecrit le fonctionnement g´en´eral des fonctions importantes du paquet et les lieux o`uelles sont install´ees Le paquet se compose alors des trois ´etapes principales suivantes :
• Premi`erement, c’est l’entr´ee des donn´ees utilis´ees pour les fonctions du paquet Legraphe cr´e´e par le paquet igraph montre la relation entre les variables Les donn´ees
se composent des vecteurs d’observation et d’un vecteur de param`etres La copule Cs
dans (1.28) est choisie par l’utilisateur Tout est r´ealis´e dans le code R
Trang 29• Deuxi`emement, c’est l’appel des fonctions fournies par le paquet CDN qui sont impl´ement´eesdans le code R ou C++.
– cdn sert `a cr´eer un objet CDN et a besoin d’un graphe et d’un mod`ele param´etrique.– cdnPlot permet de visualiser l’objet CDN en repr´esentant le graphe
– rCdn (Annexe C.1) g´en`ere al´eatoirement des observations et pCdn (Annexe C.2)calcule la fonction de r´epartition
– mpAlgo (Annexe A) impl´emente l’algorithme de message-passing product Son entr´ee est un objet CDN et un vecteur de variables Sa sortie est ladensit´e de cette observation et la gradient par rapport au vecteur des param`etres.– cdnOptim (Annexe B) utilise mpAlgo afin de construire la fonction de vraisemblance
gradient-derivative-et son gradient Ensuite, une m´ethode d’optimisation est choisie pour trouver lavaleur du param`etre qui maximise la fonction de vraisemblance
– dCdn (Annexe C.3) a pour objectif de calculer la densit´e de plusieurs observationsd’entr´ee via mpAlgo
• Derni`erement, les r´esultats sont affich´es dans R La transmission des donn´ees et desfonctions entre C++ et R est r´ealis´ee par l’interface Rcpp [13]
Dans les parties suivantes, je vais d´etailler l’impl´ementation des fonctions du paquet
Figure 3.5: Diagramme des fonctions du paquet.
3.2.1 Cr´eation d’un objet CDN
Pour cr´eer un objet CDN, il s’agit de choisir un graphe des variables et d’une famille decopules Cs (1.28) Ces donn´ees d’entr´ees sont trait´ees avant d’assigner les valeurs auxcomposants de l’objet (Figure 3.6)
Trang 30Chapitre 3 Impl´ementation 21
Figure 3.6: Cr´eation d’un objet CDN.
Pour le mod`ele, on peut choisir une des six familles existantes dans le paquet Ce sontdes copules populaires qui sont mentionn´ees dans la section 1.1.3 : Gumbel (”gumbel”),Farlie-Gumbel-Morgenstern (”fgm”), Frank (”frank”), Gauss (”normal”), Ali-Mikhail-
des variables et d’un mod`ele choisi est montr´e ci-apr`es
la valeur de l’´el´ement (i,s) est mise `a 1 ; sinon `a z´ero Sur le tableau 3.1, nous affichons
la matrice binaire extraite `a partir du graphe CDN de la figure 3.7
Concernant la cr´eation d’un graphe avec le paquet igraph, la fa¸con la plus simple et tique pour l’utilisateur est d’utiliser la commande graph.formula Cependant, il apparait
pra-un probl`eme `a r´esoudre C’est que cette commande fait par d´efaut simplifier le graphed’entr´ee Par exemple, on cr´ee un graphe avec la commande :
1 g