Analiza osjetljivosti se koristi za određivanje utjecaja kolekcije nezavisnih faktora na zavisnu 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 ću dati kratak pregled analize osjetljivosti koristeći SALib, besplatni Python paket za analizu osjetljivosti.
Numerička 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 dva inputa modela izlaznoj varijansi.
- Indeks ukupnog reda: kvantifikuje doprinos modela inputa izlaznoj varijansi, obuhvatajući efekte prvog reda (samo ulaz fluktuira) i sve interakcije višeg reda.
Šta je SALib?
SALib je baziran na Python-u Open-source set alata za procjenu osjetljivosti. Ima odvojeni radni tok, što znači da ne stupa u direktnu 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 (preko jedne od funkcija analize) iz izlaza modela.
Tipična SALib analiza osjetljivosti sastoji se od četiri koraka:
- Odredite ulazne podatke (parametre) modela i raspon uzorka za svaki.
- Da kreirate ulaze modela, pokrenite funkciju uzorka.
- Procijenite model koristeći generirane ulazne podatke i sačuvajte rezultate modela.
- Da biste izračunali indekse osjetljivosti, koristite funkciju analize na izlazima.
Sobol, Morris i FAST su samo neke od metoda analize osjetljivosti koje nudi SALIb. Mnogi faktori utiču na to koji je pristup najbolji za datu aplikaciju, kao što ćemo kasnije vidjeti. Za sada, imajte na umu da trebate koristiti samo dvije funkcije, uzorkovanje i analizu, bez obzira na to koju tehniku koristite. Provest ćemo vas kroz osnovni primjer kako bismo ilustrirali kako koristiti SALib.
Primjer SALib – Sobolova analiza osjetljivosti
U ovom primjeru ćemo ispitati Sobolovu osjetljivost Ishigami funkcije, kao što je prikazano u nastavku. Zbog svoje visoke nelinearnosti i nemonotonosti, Ishigami funkcija se široko koristi za procjenu metodologija analize nesigurnosti i osjetljivosti.
Koraci idu na sljedeći način:
1. Uvoz SALib
Prvi korak je dodavanje potrebnih biblioteka. 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 Ishigami funkciju, koja je dostupna kao testna funkcija u SALib-u. 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 prihvata tri ulaza: x1, x2 i x3. U SALib-u konstruišemo dict koji specificira broj ulaza, njihova imena i ograničenja za svaki ulaz, kao što se vidi ispod.
3. Generirajte uzorke i model
Zatim se generišu uzorci. Moramo kreirati uzorke koristeći Saltelli sampler jer radimo analizu osjetljivosti Sobol. U ovom slučaju, vrijednosti parama su NumPy matrica. Možemo primijetiti da je matrica 8000 puta 3 pokretanjem param values.shape. 8000 uzoraka je kreirano sa Saltelli samplerom. Saltelli uzorkivač kreira uzorke, gdje je N 1024 (parametar koji smo dali), a D je 3. (broj ulaza modela).
Kao što je ranije rečeno, SALib se ne bavi evaluacijom matematičkih ili računskih modela. Ako je model napisan u Pythonu, obično ćete proći kroz svaki uzorak unosa i procijeniti model:
Uzorci se mogu sačuvati u tekstualnoj datoteci ako model nije razvijen u Pythonu:
Svaki red u param values.txt predstavlja jedan ulaz modela. Izlaz modela treba biti sačuvan u drugoj datoteci u sličnom stilu, sa jednim izlazom u svakoj liniji. 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 rečnik koji ima ključeve “S1”, “S2”, “ST”, “S1 conf”, “S2 conf” i “ST conf”. Ključevi _conf drže povezane intervale pouzdanosti, koji su općenito postavljeni na 95 posto. Za izlaz, sve indekse, koristite parametar ključne riječi print to console=True. Alternativno, kao što je ilustrovano u nastavku, 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 značajno veći od indeksa prvog reda, interakcije višeg reda se sasvim sigurno dešavaju. Ove 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 dalje proučavanje.
5. Ucrtavanje
Za vašu udobnost, obezbeđeni 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 uključuju Fourierov test amplitudne osjetljivosti (FAST), Morrisovu metodu i mjeru neovisnu o delta-momentu. Iako je to Python biblioteka, namijenjena je za rad sa modelima bilo koje vrste.
SALib nudi interfejs komandne linije koji se lako koristi za kreiranje ulaza modela i procenu izlaza modela. Provjeri SALib dokumentacija da biste saznali više.
Ostavite odgovor