Analýza citlivosti sa používa na určenie vplyvu súboru nezávislých faktorov na závislú premennú za určitých podmienok.
Je to silný prístup na určenie, ako je výstup modelu ovplyvnený vstupmi modelu vo všeobecnosti. V tomto príspevku poskytnem rýchly prehľad analýzy citlivosti pomocou SALib, bezplatného balíka analýzy citlivosti Pythonu.
Číselná hodnota známa ako index citlivosti často predstavuje citlivosť každého vstupu. Existuje mnoho typov indexov citlivosti:
- Indexy prvého rádu: vypočítava príspevok jedného vstupu modelu k rozptylu výstupu.
- Indexy druhého rádu: vypočítava príspevok dvoch modelových vstupov k rozptylu výstupu.
- Index celkového poradia: kvantifikuje príspevok modelového vstupu k rozptylu výstupu, pričom zahŕňa efekty prvého rádu (vstup kolíše sám) a akékoľvek interakcie vyššieho rádu.
Čo je SALib?
SALib je založený na Pythone open source súbor nástrojov na hodnotenie citlivosti. Má oddelený pracovný postup, čo znamená, že neinteraguje priamo s matematickým alebo výpočtovým modelom. Namiesto toho má SALib na starosti produkciu modelových vstupov (prostredníctvom jednej zo vzorových funkcií) a výpočet indexov citlivosti (prostredníctvom jednej z analyzačných funkcií) z výstupov modelu.
Typická analýza citlivosti SALib pozostáva zo štyroch krokov:
- Určite vstupy modelu (parametre) a rozsah vzoriek pre každý z nich.
- Ak chcete vytvoriť modelové vstupy, spustite vzorovú funkciu.
- Vyhodnoťte model pomocou vygenerovaných vstupov a uložte výsledky modelu.
- Na výpočet indexov citlivosti použite funkciu analýzy na výstupoch.
Sobol, Morris a FAST sú len niektoré z metód analýzy citlivosti, ktoré poskytuje SALib. Mnoho faktorov ovplyvňuje, ktorý prístup je pre danú aplikáciu najlepší, ako uvidíme neskôr. Zatiaľ majte na pamäti, že potrebujete použiť iba dve funkcie, vzorkovanie a analýzu, bez ohľadu na to, akú techniku použijete. Prevedieme vás základným príkladom, ktorý ilustruje, ako používať SALib.
Príklad SALib – Sobolova analýza citlivosti
V tomto príklade budeme skúmať Sobolovu citlivosť funkcie Ishigami, ako je uvedené nižšie. Vzhľadom na svoju vysokú nelinearitu a nemonotonickosť sa Ishigamiho funkcia široko používa na vyhodnotenie metodík analýzy neistoty a citlivosti.
Kroky prebiehajú takto:
1. Import SALibu
Prvým krokom je pridanie požadovaných knižníc. Funkcie vzorkovania a analýzy SALib sú v moduloch Pythonu oddelené. Napríklad import satelitnej vzorky a funkcie analýzy Sobol sú zobrazené nižšie.
Používame aj funkciu Ishigami, ktorá je dostupná ako testovacia funkcia v SALib. Nakoniec importujeme NumPy, pretože ho SALib používa na ukladanie vstupov a výstupov modelu do matice.
2. Vstup modelu
Potom je potrebné definovať vstupy modelu. Funkcia Ishigami akceptuje tri vstupy: x1, x2 a x3. V SALib vytvárame diktát, ktorý špecifikuje počet vstupov, ich názvy a limity každého vstupu, ako je uvedené nižšie.
3. Vytvorte vzorky a model
Potom sa vygenerujú vzorky. Potrebujeme vytvoriť vzorky pomocou vzorkovača Saltelli, pretože robíme analýzu citlivosti Sobol. V tomto prípade sú hodnoty parametrov maticou NumPy. Môžeme pozorovať, že matica je 8000 x 3 spustením parametra values.shape. So samplerom Saltelli bolo vytvorených 8000 vzoriek. Vzorkovač Saltelli vytvára vzorky, kde N je 1024 (parameter, ktorý sme poskytli) a D je 3. (počet vstupov modelu).
Ako už bolo uvedené, SALib sa nezaoberá hodnotením matematických alebo výpočtových modelov. Ak je model napísaný v jazyku Python, zvyčajne prechádzate každým vzorovým vstupom a model vyhodnotíte:
Vzorky je možné uložiť do textového súboru, ak model nie je vyvinutý v Pythone:
Každý riadok v súbore param values.txt predstavuje jeden modelový vstup. Výstup modelu by sa mal uložiť do iného súboru v podobnom štýle, s jedným výstupom na každom riadku. Potom môžu byť výstupy načítané:
V tomto príklade použijeme funkciu Ishigami zo SALib. Tieto testovacie funkcie možno vyhodnotiť takto:
4. Vykonajte analýzu
Po načítaní výsledkov modelu do Pythonu môžeme konečne vypočítať indexy citlivosti. V tomto príklade použijeme sobol.analyze na výpočet indexu prvého, druhého a celkového poradia.
Si je pythonovský slovník s kľúčmi „S1“, „S2“, „ST“, „S1 conf“, „S2 conf“ a „ST conf“. Kľúče _conf obsahujú príslušné intervaly spoľahlivosti, ktoré sú vo všeobecnosti nastavené na 95 percent. Na výstup všetkých indexov použite parameter kľúčového slova print na console=True. Alternatívne, ako je znázornené nižšie, môžeme vytlačiť jednotlivé hodnoty zo Si.
Vidíme, že x1 a x2 majú citlivosť prvého rádu, ale zdá sa, že x3 nemá žiadny vplyv prvého rádu.
Ak sú indexy celkového rádu výrazne väčšie ako indexy prvého rádu, určite dochádza k interakciám vyššieho rádu. Tieto interakcie vyššieho rádu môžeme vidieť pri pohľade na indexy druhého rádu:
Môžeme pozorovať, že x1 a x3 majú významné interakcie. Potom môže byť výsledok transformovaný do Pandas DataFrame na ďalšie štúdium.
5. Plotovanie
Pre vaše pohodlie sú k dispozícii základné možnosti mapovania. Funkcia plot() vytvára objekty osi matplotlib pre následnú manipuláciu.
záver
SALib je sofistikovaná súprava nástrojov na analýzu citlivosti. Medzi ďalšie techniky v SALib patrí Fourierov test citlivosti amplitúdy (FAST), Morrisova metóda a nezávislé meranie delta-momentu. Hoci ide o knižnicu Python, je určená na prácu s modelmi akéhokoľvek druhu.
SALib ponúka ľahko použiteľné rozhranie príkazového riadka na vytváranie vstupov do modelu a hodnotenie výstupov modelu. Odhlásiť sa dokumentácia SALib sa dozvedieť viac.
Nechaj odpoveď