Herkkyysanalyysiä käytetään määrittämään riippumattomien tekijöiden joukon vaikutus riippuvaan muuttujaan tietyissä olosuhteissa.
Se on vahva lähestymistapa sen määrittämiseen, kuinka mallin syötteet vaikuttavat mallin tuottoon yleisesti. Tässä viestissä annan nopean yleiskatsauksen herkkyysanalyysistä käyttämällä SALibia, ilmaista Python-herkkyysanalyysipakettia.
Numeerinen arvo, joka tunnetaan herkkyysindeksinä, edustaa usein kunkin tulon herkkyyttä. Herkkyysindeksejä on monenlaisia:
- Ensimmäisen asteen indeksit: laskee yksittäisen mallin syötteen osuuden lähdön varianssista.
- Toisen asteen indeksit: laskee kahden mallin tulon osuuden lähdön varianssista.
- Kokonaismääräindeksi: kvantifioi mallin syötteen osuuden lähdön varianssista, joka kattaa sekä ensimmäisen kertaluvun vaikutukset (syöte vaihtelee yksin) että kaikki korkeamman asteen vuorovaikutukset.
Mikä on SALib?
SALib on Python-pohjainen avoimen lähdekoodin työkalupakki herkkyysarviointien tekemiseen. Siinä on irrallinen työnkulku, mikä tarkoittaa, että se ei ole suoraan vuorovaikutuksessa matemaattisen tai laskennallisen mallin kanssa. Sen sijaan SALib vastaa mallin syötteiden tuottamisesta (yhden näytefunktion kautta) ja herkkyysindeksien laskemisesta (yhden analyysitoiminnon kautta) mallin lähdöistä.
Tyypillinen SALib-herkkyysanalyysi koostuu neljästä vaiheesta:
- Määritä mallin syötteet (parametrit) ja näytealue jokaiselle.
- Luo mallin syötteitä suorittamalla näytetoiminto.
- Arvioi malli luotujen syötteiden avulla ja tallenna mallin tulokset.
- Laske herkkyysindeksit käyttämällä lähtöjen analyysitoimintoa.
Sobol, Morris ja FAST ovat vain muutamia SALibin tarjoamista herkkyysanalyysimenetelmistä. Monet tekijät vaikuttavat siihen, mikä lähestymistapa on paras tietylle sovellukselle, kuten näemme myöhemmin. Muista toistaiseksi, että sinun tarvitsee käyttää vain kahta toimintoa, otantaa ja analysoida, riippumatta käyttämästäsi tekniikasta. Opastamme sinut perusesimerkin läpi, joka havainnollistaa SALibin käyttöä.
SALib-esimerkki – Sobol'-herkkyysanalyysi
Tässä esimerkissä tarkastelemme Ishigami-funktion Sobol'-herkkyyttä alla esitetyllä tavalla. Suuren epälineaarisuuden ja ei-monotonisuuden vuoksi Ishigami-funktiota käytetään laajalti epävarmuus- ja herkkyysanalyysimenetelmien arvioinnissa.
Vaiheet etenevät seuraavasti:
1. SALibin tuonti
Ensimmäinen askel on lisätä tarvittavat kirjastot. SALibin näyte- ja analysointitoiminnot pidetään erillään Python-moduuleissa. Alla näytetään esimerkiksi satelliittinäytteen ja Sobol-analyysitoimintojen tuonti.
Käytämme myös Ishigami-toimintoa, joka on saatavana testitoimintona SALibissa. Lopuksi tuomme NumPyn, koska SALib käyttää sitä mallin syötteiden ja tulosten tallentamiseen matriisiin.
2. Mallin syöttö
Mallin syötteet on sitten määritettävä. Ishigami-toiminto hyväksyy kolme tuloa: x1, x2 ja x3. SALibissa rakennamme sanelun, joka määrittää syötteiden lukumäärän, niiden nimet ja kunkin syötteen rajoitukset, kuten alla näkyy.
3. Luo näytteet ja malli
Sitten luodaan näytteet. Meidän on luotava näytteitä Saltelli-näytteenottimella, koska teemme Sobol-herkkyysanalyysiä. Tässä tapauksessa parametriarvot ovat NumPy-matriisi. Voimme havaita, että matriisi on 8000 x 3 ajamalla param values.shape. Saltelli-näytteenottimella luotiin 8000 näytettä. Saltelli-näytteenottolaite luo näytteitä, joissa N on 1024 (antamamme parametri) ja D on 3. (mallisyötteiden määrä).
Kuten aiemmin todettiin, SALib ei osallistu matemaattisten tai laskennallisten mallien arviointiin. Jos malli on kirjoitettu Pythonilla, käyt yleensä läpi jokaisen näytesyötteen ja arvioit mallin:
Näytteet voidaan tallentaa tekstitiedostoon, jos mallia ei ole kehitetty Pythonissa:
Jokainen rivi parametriarvot.txt-tiedostossa edustaa yhtä mallisyötettä. Mallin tulos tulee tallentaa toiseen tiedostoon samalla tyylillä, yksi tuloste jokaisella rivillä. Sen jälkeen ulostuloihin voidaan ladata:
Tässä esimerkissä aiomme käyttää Ishigami-funktiota SALibista. Nämä testitoiminnot voidaan arvioida seuraavasti:
4. Suorita analyysi
Voimme vihdoin laskea herkkyysindeksit, kun mallin tulokset on ladattu Pythoniin. Tässä esimerkissä käytämme sobol.analyzea ensimmäisen, toisen ja kokonaisindeksin laskemiseen.
Si on Python-sanakirja, jossa on avaimet "S1", "S2", "ST", "S1 conf", "S2 conf" ja "ST conf". _conf-avaimet sisältävät niihin liittyvät luottamusvälit, jotka on yleensä asetettu 95 prosenttiin. Tulosta kaikki indeksit käyttämällä avainsanaparametria print to console=True. Vaihtoehtoisesti, kuten alla on kuvattu, voimme tulostaa yksittäiset arvot Si:stä.
Voimme nähdä, että x1:llä ja x2:lla on ensimmäisen asteen herkkyys, mutta x3:lla ei näytä olevan ensimmäisen kertaluvun vaikutuksia.
Jos kokonaisindeksit ovat merkittävästi suurempia kuin ensimmäisen kertaluvun indeksit, tapahtuu varmasti korkeamman kertaluvun vuorovaikutuksia. Näemme nämä korkeamman asteen vuorovaikutukset katsomalla toisen asteen indeksejä:
Voimme havaita, että x1:llä ja x3:lla on merkittäviä vuorovaikutuksia. Tämän jälkeen tulos voidaan muuntaa Pandas DataFrame -kehykseksi lisätutkimuksia varten.
5. Piirustus
Käytettävissäsi on peruskartoituspalvelut. plot()-funktio tuottaa matplotlib-akselin objekteja myöhempää käsittelyä varten.
Yhteenveto
SALib on hienostunut herkkyysanalyysityökalu. Muita SALibin tekniikoita ovat Fourier-amplitudiherkkyystesti (FAST), Morris-menetelmä ja Delta-Moment Independent Measure. Vaikka se on Python-kirjasto, se on tarkoitettu toimimaan kaikenlaisten mallien kanssa.
SALib tarjoaa helppokäyttöisen komentoriviliittymän mallisyötteiden luomiseen ja mallin tulosteiden arviointiin. Tarkista SALib-dokumentaatio lisätietoja.
Jätä vastaus