Analýza citlivosti se používá k určení dopadu souboru nezávislých faktorů na závisle proměnnou za určitých podmínek.
Je to silný přístup k určení, jak je výstup modelu obecně ovlivněn vstupy modelu. V tomto příspěvku poskytnu rychlý přehled analýzy citlivosti pomocí SALib, bezplatného balíčku pro analýzu citlivosti Pythonu.
Číselná hodnota známá jako index citlivosti často představuje citlivost každého vstupu. Existuje mnoho typů indexů citlivosti:
- Indexy prvního řádu: počítá příspěvek jednoho vstupu modelu k rozptylu výstupu.
- Indexy druhého řádu: počítá příspěvek dvou modelových vstupů k rozptylu výstupu.
- Index celkového řádu: kvantifikuje příspěvek modelového vstupu k rozptylu výstupu, zahrnuje jak efekty prvního řádu (vstup kolísá sám o sobě), tak jakékoli interakce vyššího řádu.
Co je SALib?
SALib je založen na Pythonu open source sada nástrojů pro provádění hodnocení citlivosti. Má oddělený pracovní postup, což znamená, že neinteraguje přímo s matematickým nebo výpočtovým modelem. Místo toho má SALib na starosti produkci modelových vstupů (prostřednictvím jedné ze vzorových funkcí) a výpočet indexů citlivosti (prostřednictvím jedné z analyzačních funkcí) z modelových výstupů.
Typická analýza citlivosti SALib se skládá ze čtyř kroků:
- Určete modelové vstupy (parametry) a rozsah vzorků pro každý z nich.
- Chcete-li vytvořit modelové vstupy, spusťte ukázkovou funkci.
- Vyhodnoťte model pomocí vygenerovaných vstupů a uložte výsledky modelu.
- Pro výpočet indexů citlivosti použijte funkci analýzy na výstupech.
Sobol, Morris a FAST jsou jen některé z metod analýzy citlivosti, které poskytuje SALib. Mnoho faktorů ovlivňuje, který přístup je pro danou aplikaci nejlepší, jak uvidíme později. Prozatím mějte na paměti, že potřebujete využít pouze dvě funkce, vzorkování a analýzu, bez ohledu na to, jakou techniku používáte. Provedeme vás základním příkladem, který ilustruje, jak používat SALib.
Příklad SALib – Sobolova analýza citlivosti
V tomto příkladu prozkoumáme Sobolovu citlivost Ishigamiho funkce, jak je ukázáno níže. Vzhledem ke své vysoké nelinearitě a nemonotónnosti je Ishigamiho funkce široce používána k hodnocení metod analýzy nejistoty a citlivosti.
Kroky probíhají následovně:
1. Import SALibu
Prvním krokem je přidání požadovaných knihoven. Vzorkovací a analytické funkce SALib jsou v modulech Pythonu odděleny. Import satelitního vzorku a funkce analýzy Sobol jsou například zobrazeny níže.
Používáme také funkci Ishigami, která je dostupná jako testovací funkce v SALibu. Nakonec importujeme NumPy, protože jej SALib používá k ukládání vstupů a výstupů modelu do matice.
2. Vstup modelu
Poté je třeba definovat vstupy modelu. Funkce Ishigami přijímá tři vstupy: x1, x2 a x3. V SALibu vytváříme příkaz, který určuje počet vstupů, jejich jména a limity na každém vstupu, jak je vidět níže.
3. Vygenerujte vzorky a model
Poté se vytvoří vzorky. Potřebujeme vytvořit vzorky pomocí vzorkovače Saltelli, protože provádíme analýzu citlivosti Sobol. V tomto případě jsou hodnoty param matice NumPy. Můžeme pozorovat, že matice je 8000 x 3 spuštěním parametru values.shape. Vzorkovačem Saltelli bylo vytvořeno 8000 vzorků. Saltelli sampler vytváří vzorky, kde N je 1024 (parametr, který jsme poskytli) a D je 3. (počet vstupů modelu).
Jak již bylo uvedeno, SALib se nezabývá matematickým nebo výpočtovým hodnocením modelů. Pokud je model napsán v Pythonu, obvykle projdete každý ukázkový vstup a model vyhodnotíte:
Ukázky lze uložit do textového souboru, pokud model není vyvinut v Pythonu:
Každý řádek v souboru parametr values.txt představuje jeden vstup modelu. Výstup modelu by měl být uložen do jiného souboru v podobném stylu, s jedním výstupem na každém řádku. Poté mohou být výstupy načteny:
V tomto příkladu použijeme funkci Ishigami ze SALib. Tyto testovací funkce lze vyhodnotit následovně:
4. Proveďte analýzu
Po načtení výsledků modelu do Pythonu můžeme konečně vypočítat indexy citlivosti. V tomto příkladu použijeme sobol.analyze k výpočtu indexu prvního, druhého a celkového pořadí.
Si je pythonovský slovník s klíči „S1“, „S2“, „ST“, „S1 conf“, „S2 conf“ a „ST conf“. Klíče _conf obsahují přidružené intervaly spolehlivosti, které jsou obecně nastaveny na 95 procent. Pro výstup všech indexů použijte parametr klíčového slova print na console=True. Alternativně, jak je znázorněno níže, můžeme vytisknout jednotlivé hodnoty z Si.
Můžeme vidět, že x1 a x2 mají citlivost prvního řádu, ale nezdá se, že by x3 měl nějaký dopad prvního řádu.
Pokud jsou indexy celkového řádu výrazně větší než indexy prvního řádu, dochází zcela jistě k interakcím vyšších řádů. Tyto interakce vyššího řádu můžeme vidět při pohledu na indexy druhého řádu:
Můžeme pozorovat, že x1 a x3 mají významné interakce. Poté může být výsledek transformován do Pandas DataFrame pro další studium.
5. Kreslení
Pro vaše pohodlí jsou k dispozici základní funkce pro mapování. Funkce plot() vytváří objekty osy matplotlib pro následnou manipulaci.
Proč investovat do čističky vzduchu?
SALib je sofistikovaná sada nástrojů pro analýzu citlivosti. Mezi další techniky v SALib patří Fourierův test citlivosti na amplitudu (FAST), Morrisova metoda a nezávislé měření na delta-momentu. I když se jedná o knihovnu Python, je určena pro práci s modely jakéhokoli druhu.
SALib nabízí snadno použitelné rozhraní příkazového řádku pro vytváření modelových vstupů a posuzování výstupů modelu. Překontrolovat dokumentace SALib dozvědět se více.
Napsat komentář