Convolution de variable aléatoire.
La convolution est un concept qui a une apparence plutôt simple de loin. L’idée est très simple : si j’ai deux variables aléatoires et que je les additionne, qu’est-ce que j’obtiens à la fin ?
Cela semble plutôt simple comme question à première vue, mais lorsque l’on se penche sur l’application et les calculs, on se rend vite compte que la question est loin d’être triviale. Personnellement, je me suis cassé la tête sur ce problème pendant beaucoup plus d’heures que je ne voudrais l’admettre…
Donc l’idée va être de simplifier le concept au maximum tout en l’explorant de façon très complète.
I - Introduction
Insane Monopoly >>> Monopoly :)
Étant donné que le sujet est déjà bien abstrait comme ça, je vais utiliser le Monopoly comme exemple afin de mieux visualiser.
Lorsqu’on joue au Monopoly, n’importe quelle personne correctement constituée dit : « Je dois avancer de 8 cases » et non « Je dois avancer de 3 cases puis de 5 cases ». Pourtant, lorsque l’on modélise mathématiquement le tirage des dés, on utilise deux variables aléatoires distribuées de façon uniforme et discrète, indépendantes l’une de l’autre.
Bien que l’on joue au Monopoly avec deux dés, ce qui compte à la fin, c’est la somme des deux dés. Et la convolution, c’est exactement cela : additionner deux variables aléatoires.
Alors cela peut paraître évident, mais la probabilité de faire au Monopoly, par exemple, n’est pas du tout , mais le résultat d’un calcul de probabilité obtenu via une convolution.
Il est tout à fait possible de le faire « à l’arrache », sans trop de rigueur, en ayant l’intuition suivante :
« En comptant toutes les paires menant à et en additionnant leurs probabilités, je peux trouver la probabilité de faire . »
Prenons l’exemple de la probabilité de faire au Monopoly. Pour faire , je peux soit tirer , soit . Chacune des paires a une probabilité de , donc la probabilité de faire est
Ici, on l’a fait un peu « à l’arrache », mais il existe une formule qui condense tout ce calcul en une seule ligne.
Elle peut sembler un peu chaotique à première vue, mais elle est tout à fait intuitive. Voici son fonctionnement :
Prenons toutes les issues possibles du premier dé : 1,2,3,4,5 et 6.
Pour chaque itération, on multiplie la probabilité de cette issue (via la pmf de ici) avec la probabilité de l’issue désirée de la convolution moins celle obtenue.
Pour l’exemple de la convolution à 3, si on a pioché 1 dans le premier dé, le seul moyen d’atteindre 3 est de piocher 2. On fait donc .
C’est pour cela qu’on met dans la pmf de . On fait simplement cela pour toutes les issues possibles du premier dé de la première variable aléatoire.
Notez d’ailleurs un comportement intéressant : si on pioche, disons, 5 au premier dé et qu’on veut obtenir 3 au total, dans la pmf de on va y mettre , soit . Or n’est pas une issue possible de la variable aléatoire , donc sa pmf va retourner 0, et comme on fait un produit, cette partie de la somme sera nulle. Cela permet de ne pas sortir du champ des possibles.
Mais alors comment fait-on si on veut additionner 4 ou variables aléatoires ? Car avec cette formule on ne peut le faire qu’entre deux variables aléatoires.
Prenons l’exemple avec :
Il suffit simplement de boucler autant de fois que nécessaire et de faire une convolution sur le résultat d’une convolution précédente.
J'ai par ailleurs visualiser une convolution des des du monopoly via matplotlib sur un script Python.
Alors c’est plutôt flagrant : on obtient une forme bien connue, une sorte de gaussienne ! Et c’est l’une des propriétés fondamentales de la convolution : au bout de n convolutions (sous certaines conditions), on tend vers une forme très proche de la gaussienne, peu importe la distribution initiale des variables aléatoires.
C’est d’ailleurs ce qui explique en partie son omniprésence dans la nature. Prenons la taille des êtres humains : le corps humain étant un système bien complexe, il dépend d’un grand nombre de variables aléatoires de types de distributions variés. La taille peut alors être vue comme « une sorte de convolution » de toutes ces variables. Et comme la convolution a tendance à produire une forme gaussienne lorsque l’on additionne un grand nombre de variables indépendantes, cela explique pourquoi la loi normale apparaît si souvent.
II - Le cas continu
Tout ce que nous avons vu jusque-là n’était qu’un amuse-bouche. C’est à partir d’ici que, personnellement, je suis resté coincé pendant beaucoup plus d’heures que je ne voudrais l’admettre. En effet, la technique consistant à compter toutes les combinaisons ne fonctionne plus ! Dans le cas continu, il existe une infinité de combinaisons possibles. Et lorsqu’on touche à l’infini, l’intégrale n’est jamais bien loin.
Sauf que, comme nous allons le voir dans quelques instants, cette intégrale peut être particulièrement chiante à calculer. Et la cerise sur le tas de m#rde, c’est que les bornes sont elles aussi délicates à déterminer, car il peut y avoir plusieurs intégrales selon la zone dans laquelle on se trouve !
Fort heureusement, je vais vous présenter un algorithme très mécanique qui vous permettra toujours de retomber sur vos pattes.
Commençons par un exemple. Imaginons un nouveau scénario :
Nous sommes une start-up de maccha-late ( saveurs fruit du dragon, ice-kiwi je ne sais trop quoi) pour bobos parisiens et ados sans personnalités et nous devons modéliser la quantité de graines de café que nos fournisseurs risquent de nous fournir. Nous avons deux variables aléatoires et représentant le nombre de tonnes de graines de café que nous allons recevoir sur l’année, provenant respectivement de la Colombie et du Vietnam. Bien sûr, comme ces deux pays sont très éloignés, nous admettrons l’indépendance entre ces deux variables aléatoires.
Nous cherchons alors à déterminer la loi de
Ce qui nous intéresse vraiment, c’est ce que nous allons avoir en stock. Nous voulons donc déterminer Z.
Pour se faire nous allons employer la formule de convolution mais continu cette fois.
Par définition de :
On remarquera qu’ici, j’ai préféré donner la CDF et non la PDF, contrairement au cas discret où nous faisions nos calculs avec la PMF et où il suffisait ensuite de sommer la PMF pour obtenir une probabilité via une inégalité. Si j’ai choisi la CDF, c’est tout simplement parce qu’il est très facile d’en déduire la PDF : la PDF est la dérivée de la CDF par rapport à .
On voit tout de suite le parallèle avec le cas discret. Avançons dans le processus et remplaçons les PDF par leur véritable définition. Les densités de variables aléatoires uniformément distribuées sont relativement simples : ce sont de simples constantes.
Comme
on a
Sauf que le problème, c’est que nous avons des fonctions définies par morceaux.
Donc nous aurons également une convolution définie par morceaux. Pour pouvoir nous en sortir, il faut déterminer le domaine de pour lequel l’intégrande n’est pas nul.
Commençons par déterminer le domaine de
Cela donne :
Nous connaissons désormais le domaine de , mais aussi celui de :
Le domaine d’intégration est donc l’intersection :
(On s'en fou d'integrer ailleurs car c'est tout le temps nulle)
Les bornes deviennent alors :
Etant donner qu'il y'a des fonctions min et max on va devoir trouver leurs points de bacules.
On résout :
On obtient alors trois cas :
Il ne nous reste plus qu’à poser les intégrales en faisant varier les bornes selon ces points de bascule.
On obtient finalement :
La méthode fonctionne avec n’importe quel type de variables continues. J’ai choisi des lois uniformes parce que ce sont celles qui illustrent le plus simplement ce problème de bornes. Mais évidemment, on peut appliquer la méthode à n’importe quel type de variable aléatoire.
Pour mieux comprendre « visuellement » comment fonctionne cette intégration, je ne peux que vous conseiller la superbe vidéo de 3Blue1Brown à ce sujet. (Elle m’a beaucoup aidé à mieux comprendre.)
III - Trucs & Astuces
Comme on a pu le voir précédemment, la convolution est une sacrée horreur à calculer. Le nombre d’erreurs d’inattention potentielles peut être assez affligeant. Fort heureusement, on peut parfois esquiver la méthode « pure ».
Cas numéro 1 — Addition de gaussiennes
On additionne deux variables gaussiennes indépendantes :
Alors,
Ici, rien de plus simple : on additionne les moyennes et les variances, et le tour est joué.
Cas numéro 2 — Vous avez un ordinateur sur vous
L’une des méthodes les plus simples, et très répandue grâce à sa simplicité, est la méthode de Monte-Carlo.
La technique est plutôt simple : on génère un grand nombre d’échantillons,
où chaque couple est indépendant et suit les lois de et .
On définit alors
Pour estimer une probabilité du type
on utilise :
et son approximation Monte-Carlo :
La méthode fonctionne grâce à la loi des grands nombres, qui s’applique lorsque l’on répète une expérience un très grand nombre de fois.
Lorsque les bornes ou les pdfs sont une véritable purge, ne cherchez pas plus loin : utilisez Monte-Carlo, cela fonctionne très bien. Personnellement, c’est ma méthode favorite ; je m’embête très rarement à calculer la convolution moi-même.
(C’est un comble qu’un post sur la convolution se termine par une incitation à ne pas utiliser la convolution.)
Antoine Koltou