Analiza občutljivosti se uporablja za določitev vpliva zbirke neodvisnih faktorjev na odvisno spremenljivko pod določenimi pogoji.
To je močan pristop za določanje, kako vložki modela na splošno vplivajo na rezultat modela. V tej objavi bom dal hiter pregled analize občutljivosti z uporabo SALib, brezplačnega paketa za analizo občutljivosti Python.
Številčna vrednost, znana kot indeks občutljivosti, pogosto predstavlja občutljivost vsakega vhoda. Obstaja več vrst indeksov občutljivosti:
- Indeksi prvega reda: izračuna prispevek posameznega vhoda modela k izhodni variance.
- Indeksi drugega reda: izračuna prispevek dveh vhodov modela k izhodni varianci.
- Indeks celotnega reda: količinsko opredeljuje prispevek vhoda modela k izhodni varianti, ki vključuje učinke prvega reda (samo vhod niha) in vse interakcije višjega reda.
Kaj je SALib?
SALib temelji na Pythonu open-source komplet orodij za ocenjevanje občutljivosti. Ima ločen potek dela, kar pomeni, da ne sodeluje neposredno z matematičnim ali računalniškim modelom. Namesto tega je SALib zadolžen za proizvodnjo vhodnih podatkov modela (prek ene od vzorčnih funkcij) in izračun indeksov občutljivosti (prek ene od analiznih funkcij) iz izhodnih podatkov modela.
Tipična analiza občutljivosti SALib je sestavljena iz štirih korakov:
- Določite vhode (parametre) modela in obseg vzorca za vsakega.
- Če želite ustvariti vhode modela, zaženite vzorčno funkcijo.
- Ocenite model z uporabo ustvarjenih vhodov in shranite rezultate modela.
- Za izračun indeksov občutljivosti uporabite funkcijo analize na izhodih.
Sobol, Morris in FAST so le nekatere od metod analize občutljivosti, ki jih ponuja SALib. Številni dejavniki vplivajo na to, kateri pristop je najboljši za dano aplikacijo, kot bomo videli pozneje. Zaenkrat ne pozabite, da morate uporabiti le dve funkciji, vzorčenje in analizo, ne glede na to, katero tehniko uporabljate. Vodili vas bomo skozi osnovni primer, ki bo ponazoril, kako uporabljati SALib.
Primer SALib – Sobolova analiza občutljivosti
V tem primeru bomo preučili Sobolovo občutljivost funkcije Ishigami, kot je prikazano spodaj. Funkcija Ishigami se zaradi svoje visoke nelinearnosti in nemonotonosti pogosto uporablja za ocenjevanje metodologij analize negotovosti in občutljivosti.
Koraki potekajo takole:
1. Uvoz SALib
Prvi korak je dodajanje potrebnih knjižnic. Funkcije vzorca in analize SALib so ločene v modulih Python. Uvoz satelitskega vzorca in funkcije analize Sobol sta na primer prikazana spodaj.
Uporabljamo tudi funkcijo Ishigami, ki je na voljo kot testna funkcija v SALib. Nazadnje uvozimo NumPy, saj ga SALib uporablja za shranjevanje vhodov in izhodov modela v matriko.
2. Vnos modela
Nato je treba definirati vhode modela. Funkcija Ishigami sprejema tri vhode: x1, x2 in x3. V SALib izdelamo dict, ki določa število vhodov, njihova imena in omejitve za vsak vhod, kot je prikazano spodaj.
3. Ustvari vzorce in model
Nato se ustvarijo vzorci. Vzorce moramo ustvariti z vzorčevalnikom Saltelli, saj delamo analizo občutljivosti Sobol. V tem primeru so vrednosti parametrov matrika NumPy. Opazimo, da je matrika 8000 x 3, tako da zaženemo param values.shape. Z vzorčevalnikom Saltelli je bilo ustvarjenih 8000 vzorcev. Vzorčevalnik Saltelli ustvari vzorce, kjer je N 1024 (parameter, ki smo ga navedli) in D je 3. (število vhodov modela).
Kot smo že omenili, se SALib ne ukvarja z ocenjevanjem matematičnega ali računalniškega modela. Če je model napisan v Pythonu, boste običajno pregledali vsak vzorčni vnos in ocenili model:
Vzorce je mogoče shraniti v besedilno datoteko, če model ni razvit v Pythonu:
Vsaka vrstica v param values.txt predstavlja en vhod modela. Izhod modela je treba shraniti v drugo datoteko v podobnem slogu, z enim izhodom v vsaki vrstici. Po tem se lahko izhodi naložijo z:
V tem primeru bomo uporabili funkcijo Ishigami iz SALib. Te preskusne funkcije je mogoče oceniti na naslednji način:
4. Izvedite analizo
Končno lahko izračunamo indekse občutljivosti po nalaganju rezultatov modela v Python. V tem primeru bomo uporabili sobol.analyze za izračun prvega, drugega in indeksa celotnega reda.
Si je slovar Python, ki ima ključe »S1«, »S2«, »ST«, »S1 conf«, »S2 conf« in »ST conf«. Tipke _conf vsebujejo povezane intervale zaupanja, ki so običajno nastavljeni na 95 odstotkov. Za izpis vseh indeksov uporabite parameter ključne besede print to console=True. Alternativno, kot je prikazano spodaj, lahko natisnemo posamezne vrednosti iz Si.
Vidimo, da imata x1 in x2 občutljivost prvega reda, vendar se zdi, da x3 nima nobenega vpliva prvega reda.
Če so indeksi skupnega reda bistveno večji od indeksov prvega reda, se zagotovo dogajajo interakcije višjega reda. Te interakcije višjega reda lahko vidimo, če pogledamo indekse drugega reda:
Opazimo lahko, da imata x1 in x3 pomembne interakcije. Po tem se lahko rezultat pretvori v Pandas DataFrame za nadaljnjo študijo.
5. Izris
Za vaše udobje so na voljo osnovne naprave za kartiranje. Funkcija plot() ustvari objekte osi matplotlib za kasnejšo manipulacijo.
zaključek
SALib je sofisticiran komplet orodij za analizo občutljivosti. Druge tehnike v SALib vključujejo Fourierjevo amplitudno občutljivost (FAST), Morrisovo metodo in Delta-Moment Independent Measure. Čeprav je knjižnica Python, je namenjena delovanju z modeli katere koli vrste.
SALib ponuja vmesnik ukazne vrstice, ki je enostaven za uporabo za ustvarjanje vhodov modela in ocenjevanje izhodov modela. Preveri Dokumentacija SALib Če želite izvedeti več.
Pustite Odgovori