L'analyse de sensibilité est utilisée pour déterminer l'impact d'un ensemble de facteurs indépendants sur une variable dépendante sous certaines conditions.
Il s'agit d'une approche solide pour déterminer comment la sortie du modèle est affectée par les entrées du modèle en termes généraux. Dans cet article, je donnerai un aperçu rapide de l'analyse de sensibilité à l'aide de SALib, un package gratuit d'analyse de sensibilité Python.
Une valeur numérique connue sous le nom d'indice de sensibilité représente fréquemment la sensibilité de chaque entrée. Il existe de nombreux types d'indices de sensibilité :
- Indices de premier ordre : calcule la contribution d'une seule entrée de modèle à la variance de sortie.
- Indices de second ordre : calcule la contribution de deux entrées du modèle à la variance de sortie.
- Indice d'ordre total : quantifie la contribution d'une entrée de modèle à la variance de sortie, englobant à la fois les effets de premier ordre (l'entrée fluctuant seule) et toutes les interactions d'ordre supérieur.
Qu'est-ce que SALib ?
SALib est basé sur Python open-source boîte à outils pour faire des évaluations de sensibilité. Il a un flux de travail détaché, ce qui signifie qu'il n'interagit pas directement avec le modèle mathématique ou informatique. Au lieu de cela, SALib est chargé de produire les entrées du modèle (via l'une des fonctions d'échantillonnage) et de calculer les indices de sensibilité (via l'une des fonctions d'analyse) à partir des sorties du modèle.
Une analyse de sensibilité SALib typique se compose de quatre étapes :
- Déterminez les entrées du modèle (paramètres) et la plage d'échantillonnage pour chacune.
- Pour créer des entrées de modèle, exécutez l'exemple de fonction.
- Évaluez le modèle à l'aide des entrées générées et enregistrez les résultats du modèle.
- Pour calculer les indices de sensibilité, utilisez la fonction d'analyse sur les sorties.
Sobol, Morris et FAST ne sont que quelques-unes des méthodes d'analyse de sensibilité fournies par SALib. De nombreux facteurs influencent la meilleure approche pour une application donnée, comme nous le verrons plus tard. Pour le moment, gardez à l'esprit que vous n'avez besoin d'utiliser que deux fonctions, échantillonner et analyser, quelle que soit la technique que vous employez. Nous vous guiderons à travers un exemple de base pour illustrer comment utiliser SALib.
Exemple SALib – Analyse de sensibilité Sobol'
Dans cet exemple, nous examinerons la sensibilité Sobol' de la fonction Ishigami, comme indiqué ci-dessous. En raison de sa non-linéarité et de sa non-monotonicité élevées, la fonction d'Ishigami est largement utilisée pour évaluer les méthodologies d'analyse de l'incertitude et de la sensibilité.
Les étapes se déroulent comme suit :
1. Importer SALib
La première étape consiste à ajouter les bibliothèques requises. Les fonctions d'échantillonnage et d'analyse de SALib sont distinctes dans les modules Python. L'importation de l'échantillon satellite et des fonctions d'analyse Sobol, par exemple, est illustrée ci-dessous.
Nous utilisons également la fonction Ishigami, qui est disponible en tant que fonction de test dans SALib. Enfin, nous importons NumPy car SALib l'utilise pour stocker les entrées et les sorties du modèle dans une matrice.
2. Entrée du modèle
Les entrées du modèle doivent ensuite être définies. La fonction Ishigami accepte trois entrées : x1, x2 et x3. Dans SALib, nous construisons un dict qui spécifie le nombre d'entrées, leurs noms et les limites de chaque entrée, comme indiqué ci-dessous.
3. Générer des échantillons et le modèle
Les échantillons sont ensuite générés. Nous devons créer des échantillons à l'aide de l'échantillonneur Saltelli puisque nous effectuons une analyse de sensibilité Sobol. Dans ce cas, les valeurs de paramètre sont une matrice NumPy. Nous pouvons observer que la matrice est de 8000 par 3 en exécutant param values.shape. 8000 échantillons ont été créés avec l'échantillonneur Saltelli. L'échantillonneur Saltelli crée des échantillons, où N est 1024 (le paramètre que nous avons fourni) et D est 3. (le nombre d'entrées du modèle).
Comme indiqué précédemment, SALib n'est pas engagé dans l'évaluation de modèles mathématiques ou informatiques. Si le modèle est écrit en Python, vous parcourrez généralement chaque entrée d'échantillon et évaluerez le modèle :
Les exemples peuvent être enregistrés dans un fichier texte si le modèle n'est pas développé en Python :
Chaque ligne dans param values.txt représente une entrée de modèle. La sortie du modèle doit être enregistrée dans un autre fichier dans un style similaire, avec une sortie sur chaque ligne. Après cela, les sorties peuvent être chargées avec :
Dans cet exemple, nous allons utiliser la fonction Ishigami de SALib. Ces fonctions de test peuvent être évaluées comme suit :
4. Effectuer une analyse
Nous pouvons enfin calculer les indices de sensibilité après avoir chargé les résultats du modèle dans Python. Dans cet exemple, nous utiliserons sobol.analyze pour calculer les indices de premier, deuxième et total ordre.
Si est un dictionnaire Python ayant les clés « S1 », « S2 », « ST », « S1 conf », « S2 conf » et « ST conf ». Les clés _conf contiennent les intervalles de confiance associés, qui sont généralement définis sur 95 %. Pour afficher tous les index, utilisez le paramètre de mot-clé print to console=True. Alternativement, comme illustré ci-dessous, nous pouvons imprimer les valeurs individuelles de Si.
Nous pouvons voir que x1 et x2 ont une sensibilité de premier ordre, mais x3 ne semble pas avoir d'impact de premier ordre.
Si les indices d'ordre total sont significativement plus grands que les indices de premier ordre, des interactions d'ordre supérieur ont très certainement lieu. Nous pouvons voir ces interactions d'ordre supérieur en examinant les indices de second ordre :
Nous pouvons observer que x1 et x3 ont des interactions importantes. Après cela, le résultat peut être transformé en un Pandas DataFrame pour une étude plus approfondie.
5. Traçage
Pour votre commodité, des installations cartographiques de base sont fournies. La fonction plot() produit des objets d'axe matplotlib pour une manipulation ultérieure.
Conclusion
SALib est une boîte à outils d'analyse de sensibilité sophistiquée. Les autres techniques de SALib incluent le test de sensibilité à l'amplitude de Fourier (FAST), la méthode de Morris et la mesure indépendante du delta-moment. Bien qu'il s'agisse d'une bibliothèque Python, elle est destinée à fonctionner avec des modèles de tout type.
SALib offre une interface de ligne de commande facile à utiliser pour créer des entrées de modèle et évaluer les sorties de modèle. Vérifier Documentation SALib pour en savoir plus.
Soyez sympa! Laissez un commentaire