Analyses de sensibilité : le début

24/06/2018

Introduction à l’analyse de sensibilité

La conception d’un modèle, selon Jay W. Forrester, doit passer par plusieurs étapes dont l’analyse de sensibilité fait partie.

L’analyse de sensibilité est une analyse qualitative d’un modèle. Globalement, celle-ci consiste à évaluer l’influence relative de chaque variable sur la réponse du système. C’est une analyse qualitative. Dans des modèles de la DS économiques, cette analyse permet d’optimiser un modèle (plus concrètement, optimiser la vente d’un produit).

On peut la comparer à l’analyse d’incertitude qui permet d’évaluer les intervalles de fluctuation de la sortie en fonction de l’entrée.

Habituellement, l’analyse de sensibilité est faite manuellement, pour des paramètres sélectionnés, qu’on suppose préalablement d’avoir une grande influence sur le système. En 1972, le club de Rome a ainsi fait une analyse partielle de sensibilité sur le modèle W3 en ayant d’abord identifié certains paramètres qu’ils jugeaient influents. Celle-ci consistait à faire tourner le modèle pour des valeurs extrêmes des paramètres identifiés et d’analyser visuellement les topologies et les différences de scénario qu’on a en sortie.

L’analyse de World3

Indices de Sobol’ et méthode de Saltelli

Mon objectif maintenant est de réaliser une analyse de sensibilité plus complète du modèle W3. À l’aide de Laurent Gilquin, ancien membre de l’équipe STEEP, j’ai pu débuter des tests d’analyse de sensibilité grâce à la méthode de Saltelli.

Cette méthode permet de trouver les indices de Sobol’ des paramètres d’entrée du modèle, qui eux sont des rapports de variance. Pour simplifier, un paramètre qui aurait un indice de 1 régirait à lui tout seul le comportement du modèle, alors qu’un paramètre à 0 n’aurait aucune influence sur la sortie.

Cependant, un paramètre seul peut n’avoir aucune influence, alors que couplé avec un autre, ils peuvent en avoir une. Il est possible de calculer un indice de Sobol’ pour deux paramètres en même temps, qu’on appelle indice de Sobol’ d’ordre 2 (celui qui ne s’intéresse à qu’une seule variable est d’ordre 1). Ainsi de suite si on s’intéresse à la variation simultanée de 3 variables, on calcule l’indice d’ordre 3.

Il serait idéal dans le cadre d’une analyse de sensibilité de W3 d’avoir tous les indices de tous les ordres, pour savoir quelles paramètres exactement on doit faire varier pour changer le scénario. Cependant, le modèle dispose d’au total plus de 300 variables, dont au moins 50 que j’ai identifiés comme paramètres d’entrée. On arrive à une explosion combinatoire, soit plus de milliers de millards de calculs à exécuter pour cette analyse complète.

On se limitera donc au calcul des ordres 1, et des ordres qu’on appelle totaux. Ces derniers sont, pour chaque paramètre, la somme de tous les indices qui contiennent le paramètre en question.

Par exemple, si j’ai trois paramètres AA, BB et CC, on a :

Mais aussi :

Et enfin :

Vous pouvez remarquer par ailleurs l’explosion du nombre d’indices qui résulte de la présence de plus de paramètres.

L’indice total pour le paramètre A est alors :

SAT=SA1+SAB2+SAC2+SABC3 S^T_A = S_A_1 + S_{AB}_2 + S_{AC}_2 + S_{ABC}_3

Il donne donc l’influence totale qu’il pourrait avoir sur le système, en incluant celle qu’il a en variant avec d’autres paramètres. On peut savoir si le paramètre a une plus grande influence seul ou avec d’autres paramètres en faisant la différence entre les indices d’ordre total et d’ordre 1.

Spécificité de World3

Jusqu’ici, j’ai fait comme si chaque paramètre avait un seul indice de Sobol’, c’est à dire que le système ne génère qu’un seul nombre en sortie. Ce n’est pas le cas pour W3, où nous avons plusieurs courbes en fonction du temps en sortie.

Le modèle donnant une sortie de 1900 à 2100 avec un pas de temps d’une demi année, ça fait 401 valeurs par variable de sortie, soit 2005 valeurs générées pour les 5 courbes de sortie habituelles.

L’idée est donc de calculer pour chaque paramètre, l’indice de Sobol’ d’ordre 1 et d’ordre total par pas de temps et par courbe de sortie (donc 2 × 2005 indices générés par paramètre si on évalue le modèle uniquement sur 5 courbes, soit 200500 indices à calculer si on a 50 variables).

De plus, la méthode de Saltelli a un coût (nombre de fois qu’on doit calculer la sortie du modèle) de 2N(d+2)2N(d+2) avec NN le nombre d’échantillons1 et dd le nombre de paramètres d’entrée. Si on prend 10000 échantillons par paramètre, ça nous fait un coût total de 1040000. Le modèle prenant environ 1 seconde pour s’exécuter, on est déjà à 12 jours d’exécution. J’espère pouvoir avoir accès à un centre de calcul pour pouvoir paralléliser et effectuer ces analyses plus rapidement.

L’idée est donc de pouvoir générer des courbes d’influence du paramètre en fonction du temps. (On pourra, par exemple, savoir si limiter le nombre de naissances aura plus d’influence vers le début ou la fin du siècle.)


  1. calculer les indices de Sobol’ nécessite de calculer le modèle pour un certain nombre de valeurs en entrée aléatoirement générées