Die Sensitivitätsanalyse wird verwendet, um den Einfluss einer Sammlung unabhängiger Faktoren auf eine abhängige Variable unter bestimmten Bedingungen zu bestimmen.
Es ist ein starker Ansatz, um zu bestimmen, wie die Ausgabe des Modells durch die Eingaben des Modells im Allgemeinen beeinflusst wird. In diesem Beitrag gebe ich einen kurzen Überblick über die Sensitivitätsanalyse mit SALib, einem kostenlosen Python-Sensitivitätsanalysepaket.
Ein numerischer Wert, der als Empfindlichkeitsindex bekannt ist, repräsentiert häufig die Empfindlichkeit jedes Eingangs. Es gibt zahlreiche Arten von Sensitivitätsindizes:
- Indizes erster Ordnung: Berechnet den Beitrag einer einzelnen Modelleingabe zur Ausgabevarianz.
- Indizes zweiter Ordnung: berechnet den Beitrag zweier Modelleingaben zur Ausgabevarianz.
- Gesamtordnungsindex: quantifiziert den Beitrag einer Modelleingabe zur Ausgabevarianz und umfasst sowohl Effekte erster Ordnung (die Eingabe schwankt allein) als auch alle Wechselwirkungen höherer Ordnung.
Was ist SALib?
SALib ist ein Python-basiertes Open-Source Toolkit für die Durchführung von Sensitivitätsbewertungen. Es hat einen losgelösten Arbeitsablauf, was bedeutet, dass es nicht direkt mit dem mathematischen oder rechnerischen Modell interagiert. Stattdessen ist SALib dafür verantwortlich, die Modelleingaben (über eine der Beispielfunktionen) zu erzeugen und die Sensitivitätsindizes (über eine der Analysefunktionen) aus den Modellausgaben zu berechnen.
Eine typische SALib-Sensitivitätsanalyse besteht aus vier Schritten:
- Bestimmen Sie die Modelleingaben (Parameter) und den Abtastbereich für jeden.
- Führen Sie zum Erstellen von Modelleingaben die Beispielfunktion aus.
- Bewerten Sie das Modell anhand der generierten Eingaben und speichern Sie die Modellergebnisse.
- Um die Empfindlichkeitsindizes zu berechnen, verwenden Sie die Analysefunktion für die Ausgänge.
Sobol, Morris und FAST sind nur einige der von SALib bereitgestellten Sensitivitätsanalysemethoden. Viele Faktoren beeinflussen, welcher Ansatz für eine bestimmte Anwendung am besten geeignet ist, wie wir später sehen werden. Denken Sie vorerst daran, dass Sie nur zwei Funktionen verwenden müssen, Probenahme und Analyse, unabhängig davon, welche Technik Sie verwenden. Wir führen Sie durch ein einfaches Beispiel, um zu veranschaulichen, wie Sie SALib verwenden.
Beispiel SALib – Sensitivitätsanalyse von Sobol
In diesem Beispiel untersuchen wir die Sobol'-Empfindlichkeit der Ishigami-Funktion, wie unten gezeigt. Aufgrund ihrer hohen Nichtlinearität und Nichtmonotonie wird die Ishigami-Funktion häufig zur Bewertung von Unsicherheits- und Sensitivitätsanalysemethoden verwendet.
Die Schritte gehen wie folgt:
1. Importieren von SALib
Der erste Schritt besteht darin, die erforderlichen Bibliotheken hinzuzufügen. Die Abtast- und Analysefunktionen von SALib werden in Python-Modulen getrennt gehalten. Das Importieren der Satelliten-Sample- und Sobol-Analysefunktionen wird beispielsweise unten gezeigt.
Wir verwenden auch die Ishigami-Funktion, die als Testfunktion in SALib verfügbar ist. Schließlich importieren wir NumPy, da SALib es verwendet, um Modelleingaben und -ausgaben in einer Matrix zu speichern.
2. Modelleingabe
Anschließend müssen die Modelleingaben definiert werden. Die Ishigami-Funktion akzeptiert drei Eingaben: x1, x2 und x3. In SALib erstellen wir ein Diktat, das die Anzahl der Eingaben, ihre Namen und die Grenzen für jede Eingabe angibt, wie unten gezeigt.
3. Generieren Sie Beispiele und das Modell
Anschließend werden die Muster generiert. Wir müssen Proben mit dem Saltelli-Sampler erstellen, da wir eine Sobol-Sensitivitätsanalyse durchführen. In diesem Fall sind Parameterwerte eine NumPy-Matrix. Wir können beobachten, dass die Matrix 8000 mal 3 ist, indem wir param values.shape ausführen. 8000 Samples wurden mit dem Saltelli Sampler erstellt. Der Saltelli-Sampler erstellt Samples, wobei N 1024 (der von uns bereitgestellte Parameter) und D 3 ist (die Anzahl der Modelleingaben).
Wie bereits erwähnt, befasst sich SALib nicht mit der Bewertung mathematischer oder rechnerischer Modelle. Wenn das Modell in Python geschrieben ist, durchlaufen Sie normalerweise jede Beispieleingabe und bewerten das Modell:
Die Beispiele können in einer Textdatei gespeichert werden, wenn das Modell nicht in Python entwickelt wurde:
Jede Zeile in param values.txt repräsentiert eine Modelleingabe. Die Ausgabe des Modells sollte in einer anderen Datei in einem ähnlichen Stil gespeichert werden, mit einer Ausgabe in jeder Zeile. Danach können die Ausgänge geladen werden mit:
In diesem Beispiel verwenden wir die Ishigami-Funktion von SALib. Diese Testfunktionen können wie folgt ausgewertet werden:
4. Analyse durchführen
Wir können endlich die Sensitivitätsindizes berechnen, nachdem wir die Modellergebnisse in Python geladen haben. In diesem Beispiel verwenden wir sobol.analyze, um die Indizes erster, zweiter und Gesamtordnung zu berechnen.
Si ist ein Python-Wörterbuch mit den Schlüsseln „S1“, „S2“, „ST“, „S1 conf“, „S2 conf“ und „ST conf“. Die _conf-Schlüssel enthalten die zugehörigen Konfidenzintervalle, die im Allgemeinen auf 95 Prozent festgelegt sind. Um alle Indizes auszugeben, verwenden Sie den Schlüsselwortparameter print to console=True. Alternativ können wir, wie unten dargestellt, die einzelnen Werte von Si drucken.
Wir können sehen, dass x1 und x2 eine Empfindlichkeit erster Ordnung haben, aber x3 scheint keine Auswirkungen erster Ordnung zu haben.
Wenn die Gesamtindizes signifikant größer sind als die Indizes erster Ordnung, finden höchstwahrscheinlich Wechselwirkungen höherer Ordnung statt. Wir können diese Wechselwirkungen höherer Ordnung sehen, indem wir uns die Indizes zweiter Ordnung ansehen:
Wir können beobachten, dass x1 und x3 signifikante Wechselwirkungen haben. Danach kann das Ergebnis zur weiteren Untersuchung in einen Pandas DataFrame umgewandelt werden.
5. Plotten
Zu Ihrer Bequemlichkeit werden grundlegende Kartenfunktionen bereitgestellt. Die Funktion plot() erzeugt matplotlib-Achsenobjekte für die nachfolgende Bearbeitung.
Zusammenfassung
SALib ist ein ausgeklügeltes Sensitivitätsanalyse-Toolkit. Andere Techniken in SALib umfassen den Fourier-Amplitudenempfindlichkeitstest (FAST), die Morris-Methode und die Delta-Moment-unabhängige Messung. Obwohl es sich um eine Python-Bibliothek handelt, ist sie für den Betrieb mit Modellen jeglicher Art vorgesehen.
SALib bietet eine benutzerfreundliche Befehlszeilenschnittstelle zum Erstellen von Modelleingaben und Bewerten von Modellausgaben. Kasse SALib-Dokumentation um mehr zu erfahren.
Hinterlassen Sie uns einen Kommentar