Inhoudsopgave[Zich verstoppen][Laten zien]
Gevoeligheidsanalyse wordt gebruikt om de impact van een verzameling onafhankelijke factoren op een afhankelijke variabele onder bepaalde omstandigheden te bepalen.
Het is een sterke benadering om te bepalen hoe de output van het model in algemene termen wordt beïnvloed door de input van het model. In dit bericht zal ik een snel overzicht geven van gevoeligheidsanalyse met behulp van SALib, een gratis Python-gevoeligheidsanalysepakket.
Een numerieke waarde die bekend staat als de gevoeligheidsindex, vertegenwoordigt vaak de gevoeligheid van elke ingang. Er zijn verschillende soorten gevoeligheidsindexen:
- Eerste-orde-indexen: berekent de bijdrage van een enkele modelinvoer aan de uitvoervariantie.
- Indices van de tweede orde: berekent de bijdrage van twee modelinvoer aan de uitvoervariantie.
- Totale-orde-index: kwantificeert de bijdrage van een modelinvoer aan de uitvoervariantie, waarbij zowel eerste-orde-effecten (de invoer fluctueert alleen) als eventuele hogere-orde-interacties worden meegenomen.
Wat is SAlib?
SAlib is een op Python gebaseerd open source toolkit voor het doen van gevoeligheidsbeoordelingen. Het heeft een vrijstaande workflow, wat betekent dat het geen directe interactie heeft met het wiskundige of computationele model. In plaats daarvan is SALib verantwoordelijk voor het produceren van de modelinvoer (via een van de voorbeeldfuncties) en het berekenen van de gevoeligheidsindices (via een van de analysefuncties) uit de modeluitvoer.
Een typische SAlib-gevoeligheidsanalyse bestaat uit vier stappen:
- Bepaal de modelinvoer (parameters) en het steekproefbereik voor elk.
- Voer de voorbeeldfunctie uit om modelinvoer te maken.
- Evalueer het model met behulp van de gegenereerde invoer en sla de modelresultaten op.
- Gebruik de analysefunctie op de uitgangen om de gevoeligheidsindexen te berekenen.
Sobol, Morris en FAST zijn slechts enkele van de gevoeligheidsanalysemethoden die door SALib worden aangeboden. Veel factoren beïnvloeden welke aanpak het beste is voor een bepaalde toepassing, zoals we later zullen zien. Houd er voorlopig rekening mee dat u slechts twee functies hoeft te gebruiken, bemonsteren en analyseren, ongeacht welke techniek u gebruikt. We zullen u door een eenvoudig voorbeeld leiden om te illustreren hoe u SALib kunt gebruiken.
SAlib-voorbeeld - Sobol'-gevoeligheidsanalyse
In dit voorbeeld zullen we de Sobol'-gevoeligheid van de Ishigami-functie onderzoeken, zoals hieronder weergegeven. Vanwege de hoge niet-lineariteit en niet-monotoniciteit wordt de Ishigami-functie veel gebruikt om onzekerheids- en gevoeligheidsanalysemethodologieën te evalueren.
De stappen gaan als volgt:
1. SAlib importeren
De eerste stap is het toevoegen van de vereiste bibliotheken. De voorbeeld- en analysefuncties van SALib worden gescheiden gehouden in Python-modules. Het importeren van bijvoorbeeld de satellietmonster- en Sobol-analysefuncties wordt hieronder weergegeven.
We gebruiken ook de Ishigami-functie, die als testfunctie beschikbaar is in SALib. Ten slotte importeren we NumPy omdat SALib het gebruikt om modelinvoer en -uitvoer in een matrix op te slaan.
2. Modelinvoer
De modelinvoer moet dan worden gedefinieerd. De Ishigami-functie accepteert drie ingangen: x1, x2 en x3. In SALib construeren we een dictaat dat het aantal ingangen, hun namen en de limieten voor elke ingang specificeert, zoals hieronder te zien is.
3. Genereer voorbeelden en het model
De monsters worden vervolgens gegenereerd. We moeten monsters maken met behulp van de Saltelli-sampler, omdat we een Sobol-gevoeligheidsanalyse doen. In dit geval zijn parameterwaarden een NumPy-matrix. We kunnen zien dat de matrix 8000 bij 3 is door param values.shape uit te voeren. Met de Saltelli-sampler zijn 8000 samples gemaakt. De Saltelli-sampler maakt monsters, waarbij N 1024 is (de parameter die we hebben opgegeven) en D is 3. (het aantal modelinvoeren).
Zoals eerder vermeld, houdt SALib zich niet bezig met wiskundige of computationele modelevaluatie. Als het model in Python is geschreven, doorloopt u doorgaans elke voorbeeldinvoer en beoordeelt u het model:
De voorbeelden kunnen worden opgeslagen in een tekstbestand als het model niet in Python is ontwikkeld:
Elke regel in parameter values.txt vertegenwoordigt één modelinvoer. De uitvoer van het model moet in een vergelijkbare stijl worden opgeslagen in een ander bestand, met één uitvoer op elke regel. Daarna kunnen de uitgangen worden geladen met:
In dit voorbeeld gaan we de Ishigami-functie van SALib gebruiken. Deze testfuncties kunnen als volgt worden geëvalueerd:
4. Analyse uitvoeren
We kunnen eindelijk de gevoeligheidsindexen berekenen na het laden van de modelresultaten in Python. In dit voorbeeld gebruiken we sobol.analyze om de eerste, tweede en totale-orde-indexen te berekenen.
Si is een Python-woordenboek met de toetsen "S1", "S2", "ST", "S1 conf", "S2 conf" en "ST conf." De _conf-sleutels bevatten de bijbehorende betrouwbaarheidsintervallen, die over het algemeen zijn ingesteld op 95 procent. Om alle indices uit te voeren, gebruikt u het trefwoord parameter print to console=True. Als alternatief kunnen we, zoals hieronder geïllustreerd, de individuele waarden van Si afdrukken.
We kunnen zien dat x1 en x2 eerste-orde gevoeligheid hebben, maar x3 lijkt geen eerste-orde effecten te hebben.
Als de totale-orde-indices aanzienlijk groter zijn dan de eerste-orde-indices, vinden er zeker hogere-orde-interacties plaats. We kunnen deze interacties van hogere orde zien door naar de indexen van de tweede orde te kijken:
We kunnen zien dat x1 en x3 significante interacties hebben. Daarna kan het resultaat worden omgezet in een Pandas DataFrame voor verder onderzoek.
5. Plotten
Voor uw gemak zijn er elementaire kaartfaciliteiten aanwezig. De functie plot() produceert matplotlib-asobjecten voor latere manipulatie.
Conclusie
SAlib is een geavanceerde toolkit voor gevoeligheidsanalyse. Andere technieken in SALib zijn de Fourier Amplitude Sensitivity Test (FAST), Morris Method en Delta-Moment Independent Measure. Hoewel het een Python-bibliotheek is, is het bedoeld om met alle soorten modellen te werken.
SALib biedt een gebruiksvriendelijke opdrachtregelinterface voor het maken van modelinvoer en het beoordelen van modeluitvoer. Uitchecken SAlib-documentatie om meer te leren.
Laat een reactie achter