Tundlikkusanalüüsi kasutatakse sõltumatute tegurite kogumi mõju määramiseks sõltuvale muutujale teatud tingimustel.
See on tugev lähenemisviis selle kindlaksmääramiseks, kuidas mudeli väljundit mudeli sisendid üldiselt mõjutavad. Selles postituses annan kiire ülevaate tundlikkusanalüüsist, kasutades Pythoni tasuta tundlikkusanalüüsi paketti SALib.
Tundlikkuse indeksina tuntud arvväärtus tähistab sageli iga sisendi tundlikkust. Tundlikkuse indekseid on mitut tüüpi:
- Esimest järku indeksid: arvutab ühe mudeli sisendi panuse väljundi dispersiooni.
- Teist järku indeksid: arvutab mudeli kahe sisendi panuse väljundi dispersiooni.
- Kogujärku indeks: kvantifitseerib mudeli sisendi panuse väljundi dispersioonisse, hõlmates nii esimest järku efekte (üksnes sisend kõikub) kui ka kõrgemat järku interaktsioone.
Mis on SALib?
SALib on Pythonil põhinev avatud lähtekoodiga tundlikkuse hindamise tööriistakomplekt. Sellel on eraldatud töövoog, mis tähendab, et see ei suhtle otseselt matemaatilise ega arvutusliku mudeliga. Selle asemel vastutab SALib mudeli sisendite loomise eest (ühe näidisfunktsiooni kaudu) ja tundlikkuse indeksite arvutamise eest (ühe analüüsifunktsiooni kaudu) mudeli väljunditest.
Tüüpiline SALibi tundlikkuse analüüs koosneb neljast etapist:
- Määrake iga mudeli sisendid (parameetrid) ja näidisvahemik.
- Mudelisisendite loomiseks käivitage näidisfunktsioon.
- Hinnake mudelit genereeritud sisendite abil ja salvestage mudeli tulemused.
- Tundlikkusindeksite arvutamiseks kasutage väljundite analüüsi funktsiooni.
Sobol, Morris ja FAST on vaid mõned SALibi pakutavatest tundlikkusanalüüsi meetoditest. Paljud tegurid mõjutavad seda, milline lähenemisviis on antud rakenduse jaoks parim, nagu näeme hiljem. Praegu pidage meeles, et olenemata kasutatavast tehnikast peate kasutama ainult kahte funktsiooni, proovivõttu ja analüüsi. Juhendame teid SALIbi kasutamise illustreerimiseks põhinäites.
SALibi näide – Soboli tundlikkuse analüüs
Selles näites uurime Ishigami funktsiooni Soboli tundlikkust, nagu allpool näidatud. Suure mittelineaarsuse ja mittemonotoonsuse tõttu kasutatakse Ishigami funktsiooni laialdaselt määramatuse ja tundlikkuse analüüsi metoodikate hindamiseks.
Toimingud on järgmised:
1. SALibi importimine
Esimene samm on vajalike teekide lisamine. SALibi proovi- ja analüüsifunktsioonid hoitakse Pythoni moodulites eraldi. Allpool on näidatud näiteks satelliidiproovi ja Soboli analüüsifunktsioonide importimine.
Kasutame ka Ishigami funktsiooni, mis on SALibis testfunktsioonina saadaval. Lõpuks impordime NumPy, kuna SALib kasutab seda mudeli sisendite ja väljundite maatriksisse salvestamiseks.
2. Mudeli sisend
Seejärel tuleb määratleda mudeli sisendid. Ishigami funktsioon aktsepteerib kolme sisendit: x1, x2 ja x3. SALibis koostame diktaadi, mis määrab sisendite arvu, nende nimed ja iga sisendi piirangud, nagu allpool näha.
3. Looge näidised ja mudel
Seejärel genereeritakse proovid. Peame proovid looma Saltelli proovivõtturi abil, kuna teeme Soboli tundlikkuse analüüsi. Sel juhul on parameetri väärtused NumPy maatriks. Me võime jälgida, et maatriks on 8000 x 3, käivitades param values.shape. Saltelli proovivõtturiga loodi 8000 proovi. Saltelli proovivõtja loob valimid, kus N on 1024 (meie pakutud parameeter) ja D on 3. (mudeli sisendite arv).
Nagu varem öeldud, ei tegele SALib matemaatilise ega arvutusliku mudeli hindamisega. Kui mudel on kirjutatud Pythonis, vaatate tavaliselt läbi iga näidissisendi ja hindate mudelit:
Näidised saab salvestada tekstifaili, kui mudel pole Pythonis välja töötatud:
Iga rida failis param values.txt tähistab üht mudelisisendit. Mudeli väljund tuleks salvestada teise sarnase stiiliga faili, kus igal real on üks väljund. Pärast seda saab väljunditesse laadida:
Selles näites kasutame SALibi funktsiooni Ishigami. Neid testifunktsioone saab hinnata järgmiselt:
4. Tehke analüüs
Pärast mudeli tulemuste laadimist Pythoni saame lõpuks tundlikkusindeksid välja arvutada. Selles näites kasutame esimese, teise ja kogujärku indeksite arvutamiseks sobol.analyze.
Si on Pythoni sõnastik, millel on võtmed "S1", "S2", "ST", "S1 conf", "S2 conf" ja "ST conf". Klahvid _conf hoiavad seotud usaldusvahemikke, mis on üldiselt seatud 95 protsendile. Kõigi indeksite väljastamiseks kasutage märksõna parameetrit print to console=True. Alternatiivina, nagu allpool näidatud, võime printida üksikud väärtused Si-st.
Näeme, et x1 ja x2 on esimest järku tundlikkusega, kuid x3-l ei paista olevat esimest järku mõjusid.
Kui kogujärku indeksid on oluliselt suuremad kui esimest järku indeksid, toimuvad kindlasti kõrgemat järku vastasmõjud. Neid kõrgemat järku interaktsioone näeme teist järku indekseid vaadates:
Võime täheldada, et x1 ja x3 omavad märkimisväärset vastasmõju. Pärast seda saab tulemuse edasiseks uurimiseks teisendada Panda DataFrame'iks.
5. Joonistamine
Teie mugavuse huvides on olemas põhilised kaardistamise võimalused. Funktsioon plot() toodab matplotlib telje objekte järgnevaks manipuleerimiseks.
Järeldus
SALib on keerukas tundlikkusanalüüsi tööriistakomplekt. Muud SALibi tehnikad hõlmavad Fourier' amplituuditundlikkuse testi (FAST), Morrise meetodit ja Delta-momendi sõltumatut mõõtmist. Kuigi see on Pythoni raamatukogu, on see mõeldud töötama mis tahes mudelitega.
SALib pakub mudeli sisendite loomiseks ja mudeli väljundite hindamiseks lihtsalt kasutatavat käsurea liidest. Kontrollige SALib dokumentatsioon rohkem teada saada.
Jäta vastus