Jautrumo analizė naudojama siekiant nustatyti nepriklausomų veiksnių rinkinio įtaką priklausomam kintamajam tam tikromis sąlygomis.
Tai tvirtas metodas, leidžiantis nustatyti, kaip modelio įvestis bendrai paveikia modelio išvestį. Šiame įraše pateiksiu greitą jautrumo analizės, naudojant nemokamą Python jautrumo analizės paketą SALib, apžvalgą.
Skaitinė reikšmė, žinoma kaip jautrumo indeksas, dažnai parodo kiekvieno įvesties jautrumą. Yra daugybė jautrumo indeksų tipų:
- Pirmosios eilės indeksai: apskaičiuoja vieno modelio įvesties indėlį į išvesties dispersiją.
- Antros eilės indeksai: apskaičiuoja dviejų modelio įvesčių indėlį į išvesties dispersiją.
- Bendros eilės indeksas: kiekybiškai įvertina modelio įvesties indėlį į išvesties dispersiją, apimantį ir pirmos eilės efektus (vien įvestis svyruoja), ir bet kokias aukštesnės eilės sąveikas.
Kas yra SALib?
SALib yra Python pagrindu atviro kodo jautrumo vertinimo priemonių rinkinys. Jis turi atskirtą darbo eigą, o tai reiškia, kad jis tiesiogiai nesąveikauja su matematiniu ar skaičiavimo modeliu. Vietoj to, SALib yra atsakinga už modelio įvesties kūrimą (per vieną iš pavyzdinių funkcijų) ir jautrumo indeksų apskaičiavimą (per vieną iš analizės funkcijų) iš modelio išvesties.
Įprastą SALib jautrumo analizę sudaro keturi etapai:
- Nustatykite kiekvieno modelio įvestis (parametrus) ir imties diapazoną.
- Norėdami sukurti modelio įvestis, paleiskite pavyzdinę funkciją.
- Įvertinkite modelį naudodami sugeneruotas įvestis ir išsaugokite modelio rezultatus.
- Norėdami apskaičiuoti jautrumo indeksus, naudokite analizės funkciją išvestyje.
„Sobol“, „Morris“ ir „FAST“ yra tik keletas iš SALib pateiktų jautrumo analizės metodų. Daugelis veiksnių turi įtakos tam, kuris metodas geriausiai tinka konkrečiai programai, kaip pamatysime vėliau. Šiuo metu atminkite, kad jums tereikia naudoti dvi funkcijas – imti ir analizuoti, neatsižvelgiant į tai, kokią techniką naudojate. Pateiksime pagrindinį pavyzdį, kad parodytume, kaip naudoti SALib.
SALib pavyzdys – Sobol jautrumo analizė
Šiame pavyzdyje mes išnagrinėsime Ishigami funkcijos Sobol jautrumą, kaip parodyta toliau. Dėl didelio netiesiškumo ir nemonotoniškumo Ishigami funkcija plačiai naudojama neapibrėžtumo ir jautrumo analizės metodikoms įvertinti.
Veiksmai vyksta taip:
1. Importuoti SALib
Pirmiausia reikia pridėti reikiamas bibliotekas. SALib pavyzdinės ir analizės funkcijos yra atskirtos Python moduliuose. Pavyzdžiui, palydovinio pavyzdžio ir Sobol analizės funkcijų importavimas parodytas žemiau.
Taip pat naudojame Ishigami funkciją, kuri yra SALib kaip bandomoji funkcija. Galiausiai, mes importuojame NumPy, nes SALib naudoja jį modelio įvestims ir išvestims saugoti matricoje.
2. Modelio įvestis
Tada reikia apibrėžti modelio įvestis. Ishigami funkcija priima tris įvestis: x1, x2 ir x3. „SALib“ sukuriame diktą, kuris nurodo įvesties skaičių, jų pavadinimus ir kiekvienos įvesties ribas, kaip parodyta toliau.
3. Sukurkite pavyzdžius ir modelį
Tada sugeneruojami pavyzdžiai. Turime sukurti mėginius naudodami Saltelli mėginių ėmiklį, nes atliekame Sobol jautrumo analizę. Šiuo atveju parametrų reikšmės yra NumPy matrica. Galime pastebėti, kad matrica yra 8000 x 3, paleidus parametrų reikšmės.shape. Su Saltelli mėginių ėmikliu buvo sukurta 8000 mėginių. Saltelli mėginių ėmiklis sukuria pavyzdžius, kur N yra 1024 (mūsų pateiktas parametras), o D yra 3. (modelio įvesties skaičius).
Kaip minėta anksčiau, SALib neužsiima matematiniu ar skaičiavimo modelių vertinimu. Jei modelis parašytas Python, paprastai peržiūrėsite kiekvieną imties įvestį ir įvertinsite modelį:
Pavyzdžius galima įrašyti į tekstinį failą, jei modelis nėra sukurtas Python:
Kiekviena parametrų reikšmės.txt eilutė reiškia vieną modelio įvestį. Modelio išvestis turėtų būti įrašyta į kitą panašaus stiliaus failą su po vieną išvestį kiekvienoje eilutėje. Po to išėjimai gali būti įkelti:
Šiame pavyzdyje naudosime Ishigami funkciją iš SALib. Šios testo funkcijos gali būti įvertintos taip:
4. Atlikite analizę
Pagaliau galime apskaičiuoti jautrumo indeksus įkėlę modelio rezultatus į Python. Šiame pavyzdyje naudosime sobol.analyze pirmosios, antrosios ir bendros eilės indeksams apskaičiuoti.
Si yra Python žodynas, turintis raktus „S1“, „S2“, „ST“, „S1 conf“, „S2 conf“ ir „ST conf“. Raktuose _conf yra susiję pasikliautinieji intervalai, kurie paprastai nustatomi į 95 procentus. Norėdami išvesti visus indeksus, naudokite raktinio žodžio parametrą print to console=True. Arba, kaip parodyta toliau, galime atspausdinti atskiras reikšmes iš Si.
Matome, kad x1 ir x2 turi pirmos eilės jautrumą, tačiau neatrodo, kad x3 turi pirmos eilės poveikį.
Jei bendros eilės indeksai yra žymiai didesni už pirmos eilės indeksus, tikrai vyksta aukštesnės eilės sąveikos. Šias aukštesnės eilės sąveikas galime pamatyti žiūrėdami į antros eilės indeksus:
Galime pastebėti, kad x1 ir x3 turi reikšmingą sąveiką. Po to rezultatas gali būti pakeistas į Pandas DataFrame tolesniam tyrimui.
5. Braižymas
Jūsų patogumui siūlomos pagrindinės žemėlapių sudarymo priemonės. Funkcija plot() sukuria matplotlib ašies objektus, skirtus tolesniam manipuliavimui.
Išvada
SALib yra sudėtingas jautrumo analizės įrankių rinkinys. Kiti SALib metodai apima Furjė amplitudės jautrumo testą (FAST), Morriso metodą ir nepriklausomą deltos momento matavimą. Nors tai yra Python biblioteka, ji skirta veikti su bet kokio tipo modeliais.
SALib siūlo lengvai naudojamą komandų eilutės sąsają modelio įvestims kurti ir modelio išvestims įvertinti. Patikrinkite SALib dokumentacija Norėdami sužinoti daugiau.
Palikti atsakymą