Sensitiwiteitsanalise word gebruik om die impak van 'n versameling onafhanklike faktore op 'n afhanklike veranderlike onder sekere omstandighede te bepaal.
Dit is 'n sterk benadering om te bepaal hoe die model se uitset in algemene terme deur die model se insette beïnvloed word. In hierdie pos gee ek 'n vinnige oorsig van sensitiwiteitsanalise deur SALib te gebruik, 'n gratis Python-sensitiwiteitsanalise-pakket.
'n Numeriese waarde bekend as die sensitiwiteitsindeks verteenwoordig gereeld elke inset se sensitiwiteit. Daar is talle tipes sensitiwiteitsindekse:
- Eerste-orde indekse: bereken die bydrae van 'n enkele model-inset tot die uitsetafwyking.
- Tweede-orde-indekse: bereken die bydrae van twee model-insette tot uitsetafwyking.
- Totale-orde-indeks: kwantifiseer 'n modelinset se bydrae tot uitsetafwyking, wat beide eerste-orde-effekte (die inset wissel alleen) en enige hoër-orde interaksies insluit.
Wat is SALib?
SALib is 'n Python-gebaseerde open-source gereedskapstel om sensitiwiteitsbepalings te doen. Dit het 'n losstaande werkvloei, wat beteken dat dit nie direk met die wiskundige of berekeningsmodel interaksie het nie. In plaas daarvan is SALib in beheer van die vervaardiging van die modelinsette (deur een van die steekproeffunksies) en die berekening van die sensitiwiteitsindekse (via een van die ontledingsfunksies) vanaf die modeluitsette.
’n Tipiese SALib-sensitiwiteitsanalise bestaan uit vier stappe:
- Bepaal die modelinsette (parameters) en die steekproefreeks vir elkeen.
- Om modelinsette te skep, voer die voorbeeldfunksie uit.
- Evalueer die model deur die gegenereerde insette te gebruik en stoor die modelresultate.
- Om die sensitiwiteitsindekse te bereken, gebruik die ontleedfunksie op die uitsette.
Sobol, Morris en FAST is net 'n paar van die sensitiwiteitsanalisemetodes wat deur SALib verskaf word. Baie faktore beïnvloed watter benadering die beste vir 'n gegewe toepassing is, soos ons later sal sien. Hou voorlopig in gedagte dat jy net twee funksies hoef te gebruik, monster en analiseer, ongeag watter tegniek jy ook al gebruik. Ons sal jou deur 'n basiese voorbeeld lei om te illustreer hoe om SALib te gebruik.
SALib Voorbeeld – Sobol' Sensitiwiteitsanalise
In hierdie voorbeeld sal ons die Sobol'-sensitiwiteit van die Ishigami-funksie ondersoek, soos hieronder getoon. As gevolg van sy hoë nie-lineariteit en niemonotonisiteit, word die Ishigami-funksie wyd gebruik om onsekerheid- en sensitiwiteitsanalise-metodologieë te evalueer.
Die stappe verloop soos volg:
1. Die invoer van SALib
Die eerste stap is om die vereiste biblioteke by te voeg. Die steekproef- en analiseerfunksies van SALib word in Python-modules onderskei. Die invoer van die satellietmonster en Sobol-ontledingsfunksies word byvoorbeeld hieronder getoon.
Ons gebruik ook die Ishigami-funksie, wat as 'n toetsfunksie in SALib beskikbaar is. Ten slotte voer ons NumPy in aangesien SALib dit gebruik om modelinsette en -uitsette in 'n matriks te stoor.
2. Model Invoer
Die modelinsette moet dan gedefinieer word. Die Ishigami-funksie aanvaar drie insette: x1, x2 en x3. In SALib konstrueer ons 'n diktaat wat die aantal insette, hul name en die limiete op elke invoer spesifiseer, soos hieronder gesien.
3. Genereer monsters en die model
Die monsters word dan gegenereer. Ons moet monsters skep deur die Saltelli-monsternemer te gebruik, aangesien ons 'n Sobol-sensitiwiteitsanalise doen. In hierdie geval is paramwaardes 'n NumPy-matriks. Ons kan waarneem dat die matriks 8000 by 3 is deur param values.shape uit te voer. 8000 monsters is geskep met die Saltelli monsternemer. Die Saltelli-monsternemer skep monsters, waar N 1024 is (die parameter wat ons verskaf het) en D 3 is (die aantal modelinsette).
Soos voorheen genoem, is SALib nie besig met wiskundige of berekeningsmodel-evaluering nie. As die model in Python geskryf is, sal jy tipies elke voorbeeldinvoer deurlus en die model assesseer:
Die voorbeelde kan in 'n tekslêer gestoor word as die model nie in Python ontwikkel is nie:
Elke reël in param values.txt verteenwoordig een modelinvoer. Die model se afvoer moet gestoor word in 'n ander lêer in 'n soortgelyke styl, met een uitvoer op elke reël. Daarna kan die uitsette gelaai word met:
In hierdie voorbeeld gaan ons die Ishigami-funksie van SALib gebruik. Hierdie toetsfunksies kan soos volg geëvalueer word:
4. Voer analise uit
Ons kan uiteindelik die sensitiwiteitsindekse bereken nadat ons die modelresultate in Python gelaai het. In hierdie voorbeeld sal ons sobol.analyze gebruik om die eerste, tweede en totale-orde indekse te bereken.
Si is 'n Python-woordeboek met die sleutels "S1," "S2," "ST," "S1 conf," "S2 conf," en "ST conf." Die _conf-sleutels hou die gepaardgaande vertrouensintervalle, wat gewoonlik op 95 persent gestel is. Om alle indekse uit te voer, gebruik die sleutelwoordparameter print om te console=True. Alternatiewelik, soos hieronder geïllustreer, kan ons die individuele waardes vanaf Si druk.
Ons kan sien dat x1 en x2 eerste-orde sensitiwiteit het, maar x3 blyk geen eerste-orde impak te hê nie.
As die totale-orde-indekse aansienlik groter is as die eerste-orde-indekse, vind hoër-orde interaksies beslis plaas. Ons kan hierdie hoër-orde interaksies sien deur na die tweede-orde indekse te kyk:
Ons kan waarneem dat x1 en x3 beduidende interaksies het. Daarna kan die resultaat getransformeer word na 'n Pandas DataFrame vir verdere studie.
5. Plot
Vir u gerief word basiese kaartfasiliteite voorsien. Die plot()-funksie produseer matplotlib-as-objekte vir daaropvolgende manipulasie.
Gevolgtrekking
SALib is 'n gesofistikeerde gereedskapstel vir sensitiwiteitsanalise. Ander tegnieke in SALib sluit in die Fourier Amplitude Sensitiwiteitstoets (FAST), Morris Metode en Delta-Moment Onafhanklike Meting. Alhoewel dit 'n Python-biblioteek is, is dit bedoel om met modelle van enige aard te werk.
SALib bied 'n maklik-om-te gebruik opdraglyn-koppelvlak vir die skep van model-insette en assessering van model-uitsette. Uitteken SALib dokumentasie om meer te leer.
Lewer Kommentaar