Gefoelichheidsanalyse wurdt brûkt om de ynfloed te bepalen fan in samling ûnôfhinklike faktoaren op in ôfhinklike fariabele ûnder bepaalde betingsten.
It is in sterke oanpak om te bepalen hoe't de útfier fan it model wurdt beynfloede troch de ynfier fan it model yn algemiene termen. Yn dizze post sil ik in fluch oersjoch jaan fan gefoelichheidsanalyse mei SALib, in fergese Python-sensitiviteitsanalysepakket.
In numerike wearde bekend as de gefoelichheidsyndeks, fertsjintwurdiget faak de gefoelichheid fan elke ynfier. D'r binne ferskate soarten sensibiliteitsyndeksen:
- Earste-order-yndeksen: berekkent de bydrage fan in inkele modelynput oan de útfierfariânsje.
- Yndeksen fan twadde-order: berekkent de bydrage fan twa modelynputen oan útfierfariânsje.
- Yndeks fan totale folchoarder: kwantifiseart de bydrage fan in modelynput oan útfierfariânsje, omfettet sawol earste-order-effekten (de ynfier fluktuearjend allinich) en elke ynteraksjes fan hegere folchoarder.
Wat is SALib?
SALib is in Python-basearre iepen-boarne toolkit foar it dwaan fan gefoelichheidsbeoardielingen. It hat in frijsteande workflow, wat betsjut dat it net direkt ynteraksje mei it wiskundige of berekkeningsmodel. Ynstee dêrfan is SALib ferantwurdlik foar it produsearjen fan de modelynputen (fia ien fan 'e stekproeffunksjes) en it berekkenjen fan 'e gefoelichheidsindices (fia ien fan 'e analysefunksjes) fan 'e modelútgongen.
In typyske SALib-sensitiviteitsanalyse bestiet út fjouwer stappen:
- Bepale de modelynputen (parameters) en it stekproefberik foar elk.
- Om modelynputen te meitsjen, útfiere de samplefunksje.
- Evaluearje it model mei de generearre ynputs en bewarje de modelresultaten.
- Om de gefoelichheidsindeksen te berekkenjen, brûk de analysefunksje op 'e útgongen.
Sobol, Morris, en FAST binne mar in pear fan 'e metoaden foar gefoelichheidsanalyse levere troch SALib. In protte faktoaren beynfloedzje hokker oanpak it bêste is foar in bepaalde applikaasje, lykas wy letter sille sjen. Hâld foar it momint yn gedachten dat jo mar twa funksjes hoege te brûken, sample en analysearje, nettsjinsteande hokker technyk jo ek brûke. Wy sille jo liede troch in basisfoarbyld om te yllustrearjen hoe't jo SALib brûke kinne.
SALib Foarbyld - Sobol' Sensitivity Analysis
Yn dit foarbyld sille wy de Sobol 'sensitiviteit fan' e Ishigami-funksje ûndersykje, lykas hjirûnder werjûn. Fanwegen syn hege net-lineariteit en nonmonotoniciteit wurdt de Ishigami-funksje in protte brûkt om metoaden foar ûnwissichheid en gefoelichheidsanalyse te evaluearjen.
De stappen geane as folget:
1. Ymportearje SALib
De earste stap is om de fereaske biblioteken ta te foegjen. De sample- en analysefunksjes fan SALib wurde ûnderskieden hâlden yn Python-modules. It ymportearjen fan de satellytmonster en Sobol-analyzefunksjes, bygelyks, wurdt hjirûnder werjûn.
Wy brûke ek de Ishigami-funksje, dy't beskikber is as testfunksje yn SALib. Uteinlik ymportearje wy NumPy as SALib it brûkt om modelynputen en -útgongen op te slaan yn in matrix.
2. Model Ynfier
De modelynputen moatte dan definieare wurde. De Ishigami-funksje akseptearret trije ynputs: x1, x2, en x3. Yn SALib konstruearje wy in dict dy't it oantal ynputs spesifisearret, har nammen en de grinzen op elke ynfier, lykas hjirûnder te sjen.
3. Generearje Samples en it Model
De samples wurde dan generearre. Wy moatte samples meitsje mei de Saltelli-sampler, om't wy in Sobol-sensitiviteitsanalyse dogge. Yn dit gefal binne paramwearden in NumPy-matrix. Wy kinne observearje dat de matrix is 8000 by 3 troch it útfieren fan param values.shape. 8000 samples waarden makke mei de Saltelli sampler. De Saltelli sampler makket samples, wêrby't N 1024 is (de parameter dy't wy hawwe levere) en D is 3. (it oantal modelynputen).
Lykas earder sein, is SALib net dwaande mei wiskundige of komputative modelevaluaasje. As it model is skreaun yn Python, sille jo typysk elke sample-ynfier trochrinne en it model beoardielje:
De samples kinne wurde opslein yn in tekstbestân as it model net ûntwikkele is yn Python:
Eltse rigel yn param values.txt stiet foar ien model ynfier. De útfier fan it model moat wurde opslein yn in oare triem yn in ferlykbere styl, mei ien útfier op elke rigel. Dêrnei kinne de útgongen laden wurde mei:
Yn dit foarbyld sille wy de Ishigami-funksje fan SALib brûke. Dizze testfunksjes kinne as folget wurde evaluearre:
4. Fiere Analyse
Wy kinne úteinlik de gefoelichheidsindeksen berekkenje nei it laden fan de modelresultaten yn Python. Yn dit foarbyld sille wy sobol.analyze brûke om de earste, twadde en totale folchoarder yndeksen te berekkenjen.
Si is in Python wurdboek mei de kaaien "S1," "S2," "ST," "S1 conf," "S2 conf," en "ST conf." De _conf-kaaien hâlde de assosjearre betrouwensintervallen, dy't oer it algemien ynsteld binne op 95 prosint. Om alle yndeksen út te fieren, brûk de kaaiwurdparameter print nei console = Wier. As alternatyf, lykas hjirûnder yllustrearre, kinne wy de yndividuele wearden fan Si ôfdrukke.
Wy kinne sjen dat x1 en x2 gefoelichheid hawwe fan earste-order, mar x3 liket gjin earste-order-ynfloeden te hawwen.
As de yndeksen fan 'e totale folchoarder signifikant grutter binne dan de yndeksen fan' e earste-order, binne ynteraksjes fan hegere folchoarder grif plak. Wy kinne dizze ynteraksjes fan hegere oarder sjen troch te sjen nei de yndeksen fan twadde folchoarder:
Wy kinne observearje dat x1 en x3 wichtige ynteraksjes hawwe. Dêrnei kin it resultaat wurde omfoarme ta in Pandas DataFrame foar fierdere stúdzje.
5. Plotte
Foar jo gemak wurde basiskaartfoarsjenningen oanbean. De funksje plot () produsearret objekten mei matplotlib-as foar folgjende manipulaasje.
Konklúzje
SALib is in ferfine toolkit foar gefoelichheidsanalyse. Oare techniken yn SALib omfetsje de Fourier Amplitude Sensitivity Test (FAST), Morris Method, en Delta-Moment Independent Measure. Wylst it in Python-bibleteek is, is it bedoeld om te operearjen mei modellen fan elke soart.
SALib biedt in maklik te brûken kommando-rigelynterface foar it meitsjen fan modelynputen en it beoardieljen fan modelútgongen. Betelje SALib dokumintaasje te learen mear.
Leave a Reply