# Analyse de sensibilité

L’analyse de sensibilité est l'étude de la façon dont l'incertitude de la sortie d'un code ou d'un système (numérique ou autre) peut être attribuée à l'incertitude dans ses entrées$^,$$^,$. Il s'agit d'estimer des indices de sensibilité qui quantifient l'influence d'une entrée ou d'un groupe d'entrées sur la sortie.

## Introduction
### Applications

L'analyse de sensibilité peut être utile pour beaucoup d'applications:
* Tester la robustesse d'un modèle ou d'un système en présence d'incertitude.
* Une meilleure compréhension des relations entre l'entrée et la sortie des variables dans un système ou d'un modèle.
* La réduction d'incertitude, à travers l'identification des entrées du modèle qui causent une incertitude importante dans la production et devraient donc être le centre de l'attention.
* La recherche d'erreurs dans le modèle (par la rencontre inattendue des relations entre les entrées et les sorties).
* La simplification du modèle, en fixant les entrées qui n'ont pas d'effet sur la sortie, ou en identifiant et en supprimant les parties redondantes de la structure du modèle.
* L'amélioration de la communication entre modélisateurs et décideurs (par exemple en formulant des recommandations plus crédibles, compréhensibles, irrésistibles ou de persuasion).
* Trouver des régions dans l'espace des entrées pour lesquelles la sortie du modèle est maximale ou minimale, ou répond à un certain critère d'optimalité (voir optimisation et méthode de Monte Carlo).
* Pour la calibration des modèles avec un grand nombre de paramètres, une analyse de sensibilité peut faciliter le réglage des paramètres en se concentrant sur les paramètres sensibles. Sans connaître la sensibilité des paramètres, beaucoup de temps et d'effort peuvent être gaspillés pour régler des paramètres peu sensibles.
* Chercher à identifier les liens importants entre les observations, les entrées du modèle, et des prédictions ou des prévisions, conduisant à l'élaboration de meilleurs modèles$^,$.

### Notations et vocabulaire

L'objet d'étude de l'analyse de sensibilité est une fonction $f$, (appelée "modèle mathématique" ou "code"). Elle peut être vue comme une boîte noire dont on ne connaît que sa sortie $Y$. Ses entrées sont notées $X_{1},...,X_{p}$. Il s'agit de paramètres de la boîte noire qui ont un impact sur la sortie du système.
$Y=f(X)$avec $X=(X_{1},...,X_{p})$.

## Problématiques

Le choix de la méthode de l'analyse de sensibilité est généralement déterminée pour répondre aux contraintes qu'impose la fonction $f$. Les plus courantes sont :
* Coût de calcul : sauf dans de très rares cas, faire une analyse de sensibilité requiert d'évaluer $f$ un grand nombre de fois. Cela devient une barrière quand :
** Une seule exécution du code prend beaucoup de temps (c'est couramment le cas).
** Le code dispose d'un grand nombre d'entrées. L'espace à explorer devient trop grand (voir "Malédiction de la dimensionnalité").
* Entrées corrélées : l'hypothèse d'indépendance entre les entrées du modèle simplifie beaucoup l'analyse de sensibilité, mais parfois on ne peut pas négliger que les entrées soient fortement corrélées. Les corrélations entre les entrées doivent alors être prises en compte dans l'analyse.
* La non-linéarité : selon que le code à analyser est linéaire ou non, on préférera différentes techniques (score de régression linéaire quand il est linéaire, scores fondés sur la variance quand il ne l'est pas).
* Interactions : lorsque les entrées ont seulement des effets additifs, on dit qu'elles ne sont pas en interaction. Certaines techniques simples (nuage de point, OAT) sont alors applicables. Quand ce n'est pas le cas, d'autres techniques sont plus indiquées (calcul des indices de Sobol simples et totaux).
* Sorties multiples ou fonctionnelle : généralement introduite pour des codes à une seule sortie, l'analyse de sensibilité s'étend aux cas où la sortie Y est un vecteur, une fonction, une série temporelle ou un champ.
* À partir de données : il arrive que l'on n'ait pas la possibilité d'évaluer le code sur tous les points désirés. On ne dispose de la sortie du code qu'en des points donnés (pour une analyse rétrospective ou une expérience non-reproductible, par exemple). La réponse du code en d'autres points que ceux donnés doit alors être inférée à partir des points connus. On construit alors un modèle statistique du code (ou "méta-modèle").
* Code stochastique : un code est dit déterministe lorsque, pour plusieurs évaluations du code avec les mêmes entrées, on obtient toujours la même sortie. Lorsque ce n'est pas le cas (la sortie est différente malgré des entrées identiques), le code est dit stochastique. Il faut alors séparer la variabilité de la sortie due à la variabilité sur les entrées de celle due au caractère stochastique.

## Méthodologies

Il existe un grand nombre d'approches pour faire une analyse de sensibilité, dont beaucoup ont été développées pour répondre à une ou plusieurs des contraintes discutées ci-dessus. Elles se distinguent également par le type de mesure de sensibilité (décomposition de variance, dérivées partielles, effets élémentaires...). En général, on retrouve le plan suivant dans la plupart des procédures :
* Quantifier l'incertitude dans chaque entrée (plages de valeurs possibles, distributions de probabilité). Cela peut être un problème en soi car beaucoup de méthodes existent pour obtenir l'incertitude des distributions de données subjectives.
* Identifier la(les) sortie(s) du modèle qui vont être analysées (la cible d'intérêt devrait idéalement avoir une relation directe avec le problème abordé par le modèle). La seule rationalisation imposée par cette tâche est un des bénéfices de l'analyse de sensibilité.
* Exécuter le modèle un certain nombre de fois en suivant un plan d'expérience (différent suivant l'approche choisie et l'incertitude des entrées).
* Calculer la mesure de sensibilité choisie pour le problème.
Dans certains cas, cette procédure sera répétée, par exemple en hautes-dimensions, des problèmes où l'utilisateur doit d'abord trier les variables sans importance ("screening") avant d'effectuer une analyse de sensibilité complète.
Les différentes méthodologies (voir ci-dessous) se distinguent par les mesures de sensibilité qui sont calculées. Ces méthodologies se chevauchent parfois et d'autres mesures de sensibilité, adaptées aux contraintes du problème, peuvent être testées.

### One-At-a-Time (OAT)

Le moyen le plus simple et le plus commun d'étudier la sensibilité des entrées est de les modifier une par une ("One-At-a-Time" : OAT), les autres restant fixées à une valeur nominale. On voit alors l'effet que cela produit sur la sortie$^,$$^,$. La méthode OAT implique habituellement de :
* Déplacer une variable d'entrée, laissant les autres à une valeur de référence (nominale)
* Puis remettre la variable d'entrée à sa valeur nominale ; puis à faire ainsi pour chacune des autres entrées de la même manière.
La sensibilité peut ensuite être mesurée par la surveillance des changements dans la sortie, par exemple, par les dérivées partielles ou de régression linéaire. Cela semble logique que tout changement observé dans la sortie peut être attribué sans ambiguïté à la seule variable changée. En outre, en modifiant une variable à la fois, on peut garder toutes les autres variables fixes à leur centrale ou de valeurs de référence. Cela accroît la comparabilité des résultats (tous les "effets" sont calculés en référence au même point "central" dans l'espace des entrées). La méthode OAT est souvent préférée par les modélisateurs pour des raisons pratiques. Lorsque le modèle ne converge pas lors d'une analyse OAT, le modélisateur sait immédiatement qui est le paramètre responsable de l'échec.
Cependant, malgré sa simplicité, cette approche ne permet pas d'explorer totalement l'espace des entrées. En effet, elle ne tient pas compte de la variation simultanée de variables d'entrée. Cela signifie que la méthode OAT ne peut pas détecter la présence d'interactions entre les variables d'entrée. De plus, le choix de la valeur nominale et de l'échantillonnage peuvent poser problème. Par exemple, sur le modèle $Y=\sin(X_{1})\cos(X_{2})$avec la valeur nominale $(0,0)$, l'influence de $X_{2}$ sera invisible par une méthode OAT.

### Méthodes locales

Les méthodes locales impliquent de prendre la dérivée partielle de la sortie Y par rapport à une entrée X$_i$:
    $\left\vert {\frac {\partial Y}{\partial X_{i}}}\right\vert _{{\bf {x}}^{0}}$
où l'indice ${\bf {x}}^{0}$ indique que la dérivée est prise à un point fixe dans l'espace des entrées (d'où l'adjectif "local"). Modélisation adjointe$^,$ et Différenciation automatisée sont les méthodes de ce type. Semblables à OAT, les méthodes locales n'essaient pas d'explorer l'espace des entrées. Elles examinent seulement les petites perturbations, généralement une variable à la fois.

### Les nuages de points

Un outil simple mais utile est de tracer des nuages de points de la variable de sortie en fonction de variables d'entrée, après que le modèle a été évalué sur un échantillon aléatoire (respectant les distributions des entrées). L'avantage de cette approche est qu'elle s'applique aussi à des données. Elle donne aussi une indication visuelle directe de la sensibilité.

### L'analyse par régression

L'analyse par régression, dans le contexte de l'analyse de sensibilité, consiste à utiliser les coefficients de régression standardisés comme des mesures directes de la sensibilité. La régression doit être linéaire par rapport aux données. Sinon il est difficile d'interpréter les coefficients standardisés. Cette méthode est donc plus appropriée lorsque le modèle de réponse est en fait linéaire ; la linéarité peut être confirmée, par exemple, si le coefficient de détermination est grand. Les avantages de l'analyse par régression sont qu'elle est simple et a un faible coût de calcul.

### Décomposition de variance

Les méthodes basées sur la décomposition de variance$^,$$^,$ considèrent les entrées comme des variables aléatoires et s'intéressent seulement à la variance de la sortie. Celle-ci est décomposée en termes attribuables à une entrée ou à un groupe d'entrées. Les indices de sensibilité calculés sont les indices de Sobol : ils représentent la proportion de variance expliquée par une entrée ou un groupe d'entrées.
Pour l'entrée $X_{i}$, l'indice de Sobol simple est donné par :$S_{i}={\frac {V(\mathbb {E} [Y\vert X_{i}])}{V(Y)}}$où $V(\cdot )$ et $\mathbb {E} [\cdot ]$ désignent la variance et l'espérance (ou moyenne pondérée).
L'indice de Sobol simple ne prend pas en compte l'incertitude causée par les interactions de $X_{i}$ avec les autres variables. Pour inclure toutes les interactions dans lesquelles $X_{i}$ est impliquée on utilise l'indice de Sobol total :$S_{i}^{T}=1-{\frac {V(\mathbb {E} [Y\vert X_{\sim i}])}{V(Y)}}$où $X_{\sim i}=(X_{1},...,X_{i-1},X_{i+1},...,X_{p})$.
Les méthodes basées sur la décomposition de variance permettent d'explorer complètement l'espace des entrées et de prendre en compte les interactions ainsi que les réponses non linéaires. Pour ces raisons, elles sont largement utilisées. Le calcul des indices de Sobol nécessite de nombreuses évaluations du modèle (de l'ordre du millier). Plusieurs estimateurs existent$^,$$^,$. On recourt généralement à des méta-modèles (émulateurs) pour rendre possible le calcul.

### Screening

Les méthodes de "screening" s'appliquent à des modèles de grande dimension pour lesquels on veut distinguer rapidement quelles entrées sont significatives, sans chercher l'exhaustivité. Il s'agit d'observer l'effet de perturbations élémentaires des entrées sur les sorties. La méthode de Morris est une des plus connues.

### Fourier Amplitude Sensitivity Test (FAST)

Le principe est d'approcher une fonction par des harmoniques en utilisant la transformation de Fourier. Les indices de Sobol sont alors exprimés analytiquement en fonction des coefficients de la série de Fourier.

### Polynômes du chaos

Le principe est de projeter la fonction d'intérêt sur une base de polynômes orthogonaux. Les indices de Sobol sont alors exprimés analytiquement en fonction des coefficients de cette décomposition.