Analiza osjetljivosti koristi se za određivanje utjecaja zbirke neovisnih čimbenika na ovisnu varijablu pod određenim uvjetima.
To je snažan pristup za određivanje kako na izlaz modela utječu inputi modela općenito. U ovom postu dat ću kratak pregled analize osjetljivosti koristeći SALib, besplatni Python paket za analizu osjetljivosti.
Brojčana vrijednost poznata kao indeks osjetljivosti često predstavlja osjetljivost svakog ulaza. Postoje brojne vrste indeksa osjetljivosti:
- Indeksi prvog reda: izračunava doprinos jednog inputa modela izlaznoj varijansi.
- Indeksi drugog reda: izračunava doprinos dvaju ulaznih podataka modela varijanci izlaza.
- Indeks ukupnog reda: kvantificira doprinos modela inputa izlaznoj varijanci, obuhvaćajući efekte prvog reda (samo ulaz fluktuira) i sve interakcije višeg reda.
Što je SALib?
SALib je temeljen na Pythonu open-source alata za provođenje procjena osjetljivosti. Ima odvojeni tijek rada, što znači da nema izravnu interakciju s matematičkim ili računskim modelom. Umjesto toga, SALib je zadužen za proizvodnju ulaznih podataka modela (kroz jednu od funkcija uzorka) i izračunavanje indeksa osjetljivosti (putem jedne od funkcija analize) iz izlaza modela.
Tipična analiza osjetljivosti SALib-a sastoji se od četiri koraka:
- Odredite ulaze (parametre) modela i raspon uzorka za svaki.
- Za kreiranje ulaza modela, pokrenite funkciju uzorka.
- Ocijenite model koristeći generirane ulazne podatke i spremite rezultate modela.
- Za izračun indeksa osjetljivosti koristite funkciju analize na izlazima.
Sobol, Morris i FAST samo su neke od metoda analize osjetljivosti koje nudi SALib. Mnogi čimbenici utječu na to koji je pristup najbolji za određenu aplikaciju, kao što ćemo vidjeti kasnije. Za sada, imajte na umu da trebate koristiti samo dvije funkcije, uzorkovanje i analizu, bez obzira koju tehniku koristite. Provest ćemo vas kroz osnovni primjer kako bismo ilustrirali kako koristiti SALib.
Primjer SALib – Sobolova analiza osjetljivosti
U ovom primjeru ispitat ćemo Sobolovu osjetljivost Ishigami funkcije, kao što je prikazano u nastavku. Zbog svoje visoke nelinearnosti i nemonotonosti, Ishigami funkcija se naširoko koristi za procjenu metodologija analize nesigurnosti i osjetljivosti.
Koraci idu kako slijedi:
1. Uvoz SALib-a
Prvi korak je dodavanje potrebnih knjižnica. Funkcije uzorka i analize SALib-a se razlikuju u Python modulima. Uvoz satelitskog uzorka i funkcije Sobol analize, na primjer, prikazani su u nastavku.
Također koristimo funkciju Ishigami, koja je dostupna kao testna funkcija u SALib. Konačno, uvozimo NumPy jer ga SALib koristi za pohranjivanje ulaza i izlaza modela u matrici.
2. Unos modela
Tada se moraju definirati ulazni podaci modela. Ishigami funkcija prihvaća tri ulaza: x1, x2 i x3. U SALib-u konstruiramo dict koji specificira broj ulaza, njihova imena i ograničenja za svaki ulaz, kao što se vidi u nastavku.
3. Generirajte uzorke i model
Zatim se generiraju uzorci. Moramo izraditi uzorke koristeći Saltelli uzorkivač budući da radimo analizu osjetljivosti Sobol. U ovom slučaju, vrijednosti parama su NumPy matrica. Možemo primijetiti da je matrica 8000 puta 3 izvođenjem param values.shape. 8000 uzoraka stvoreno je Saltelli uzorkivačem. Saltelli uzorkivač stvara uzorke, gdje je N 1024 (parametar koji smo dali), a D je 3. (broj ulaza modela).
Kao što je prethodno navedeno, SALib se ne bavi matematičkim ili računskim modelom evaluacije. Ako je model napisan na Pythonu, obično ćete proći kroz svaki uzorak unosa i procijeniti model:
Uzorci se mogu spremiti u tekstualnu datoteku ako model nije razvijen u Pythonu:
Svaki redak u param values.txt predstavlja jedan ulaz modela. Izlaz modela treba biti spremljen u drugu datoteku u sličnom stilu, s jednim izlazom u svakom retku. Nakon toga, izlazi se mogu učitati sa:
U ovom primjeru koristit ćemo funkciju Ishigami iz SALib-a. Ove testne funkcije mogu se ocijeniti na sljedeći način:
4. Izvršite analizu
Konačno možemo izračunati indekse osjetljivosti nakon učitavanja rezultata modela u Python. U ovom primjeru koristit ćemo sobol.analyze za izračunavanje prvog, drugog i indeksa ukupnog reda.
Si je Python rječnik koji ima ključeve “S1”, “S2”, “ST”, “S1 conf”, “S2 conf” i “ST conf”. Tipke _conf drže povezane intervale pouzdanosti, koji su općenito postavljeni na 95 posto. Za izlaz svih indeksa koristite parametar ključne riječi print to console=True. Alternativno, kao što je dolje prikazano, možemo ispisati pojedinačne vrijednosti iz Si.
Možemo vidjeti da x1 i x2 imaju osjetljivost prvog reda, ali čini se da x3 nema utjecaja prvog reda.
Ako su indeksi ukupnog reda znatno veći od indeksa prvog reda, sigurno se događaju interakcije višeg reda. Te interakcije višeg reda možemo vidjeti gledajući indekse drugog reda:
Možemo primijetiti da x1 i x3 imaju značajne interakcije. Nakon toga, rezultat se može transformirati u Pandas DataFrame za daljnje proučavanje.
5. Ucrtavanje
Radi vaše udobnosti, dostupni su osnovni sadržaji za crtanje. Funkcija plot() proizvodi objekte osi matplotlib za naknadnu manipulaciju.
Zaključak
SALib je sofisticirani alat za analizu osjetljivosti. Ostale tehnike u SALib-u uključuju Fourierov test amplitudne osjetljivosti (FAST), Morrisovu metodu i neovisanu mjeru od delta-momenta. Iako je to Python biblioteka, namijenjena je za rad s modelima bilo koje vrste.
SALib nudi sučelje naredbenog retka jednostavno za korištenje za kreiranje ulaza modela i procjenu izlaza modela. Provjeri SALib dokumentacija biste saznali više.
Ostavi odgovor