Ang pag-analisa sa pagkasensitibo gigamit aron mahibal-an ang epekto sa usa ka koleksyon sa mga independente nga hinungdan sa usa ka nagsalig nga variable sa ilawom sa piho nga mga kondisyon.
Kini usa ka lig-on nga pamaagi alang sa pagtino kung giunsa ang output sa modelo naapektuhan sa mga input sa modelo sa kinatibuk-ang termino. Sa kini nga post, maghatag ako usa ka dali nga pagtan-aw sa pagsusi sa pagkasensitibo gamit ang SALib, usa ka libre nga pakete sa pagsusi sa pagkasensitibo sa Python.
Usa ka numerical value nga nailhan nga sensitivity index, kanunay nga nagrepresentar sa sensitivity sa matag input. Adunay daghang mga lahi sa mga indeks sa pagkasensitibo:
- Mga indeks sa una nga han-ay: nagkalkula sa kontribusyon sa usa ka modelo nga input sa output variance.
- Second-order nga mga indeks: kalkulado ang kontribusyon sa duha ka modelo nga mga input sa output variance.
- Total-order index: nag-ihap sa kontribusyon sa usa ka modelo nga input sa output variance, nga naglangkob sa duha ka first-order nga mga epekto (ang input nag-usab-usab nga nag-inusara) ug bisan unsang mas taas nga order nga mga interaksyon.
Unsa ang SAlib?
SAlib kay gibase sa Python Open-source toolkit para sa paghimo sa sensitivity assessments. Kini adunay usa ka detached workflow, nga nagpasabot nga kini dili direktang makig-uban sa mathematical o computational nga modelo. Hinuon, ang SALib ang nagdumala sa paghimo sa mga input sa modelo (pinaagi sa usa sa mga sample function) ug pag-compute sa mga indeks sa pagkasensitibo (pinaagi sa usa sa mga function sa pag-analisar) gikan sa mga output sa modelo.
Ang kasagaran nga pagtuki sa pagkasensitibo sa SALib naglangkob sa upat ka mga lakang:
- Tinoa ang modelo nga mga input (parameter) ug ang sample range alang sa matag usa.
- Aron makahimo og mga input sa modelo, padagana ang sample function.
- Timbang-timbanga ang modelo gamit ang namugna nga mga input ug i-save ang mga resulta sa modelo.
- Aron makalkula ang mga indeks sa pagkasensitibo, gamita ang function sa pag-analisar sa mga output.
Ang Sobol, Morris, ug FAST pipila lang sa mga pamaagi sa pagtuki sa pagkasensitibo nga gihatag sa SALib. Daghang mga hinungdan ang nag-impluwensya kung unsang pamaagi ang labing kaayo alang sa usa ka gihatag nga aplikasyon, sama sa atong makita sa ulahi. Sa pagkakaron, hinumdomi nga kinahanglan nimo nga gamiton ang duha ka mga function, sample ug analisa, bisan unsa pa ang pamaagi nga imong gigamit. Gigiyahan ka namo pinaagi sa usa ka sukaranan nga pananglitan aron ihulagway kung giunsa paggamit ang SALib.
Ehemplo sa SALib – Pagtuki sa Pagkasensitibo sa Sobol
Niini nga pananglitan, atong susihon ang pagkasensitibo sa Sobol sa function sa Ishigami, ingon sa gipakita sa ubos. Tungod sa taas nga nonlinearity ug nonmonotonicity niini, ang function sa Ishigami kaylap nga gigamit sa pagtimbang-timbang sa kawalay kasiguruhan ug mga pamaagi sa pagtuki sa pagkasensitibo.
Ang mga lakang moadto sama sa mosunod:
1. Pag-import sa SALib
Ang unang lakang mao ang pagdugang sa gikinahanglan nga mga librarya. Ang sampol ug pag-analisar nga mga gimbuhaton sa SALib gitipigan nga lahi sa mga module sa Python. Ang pag-import sa satellite sample ug Sobol analyzing functions, pananglitan, gipakita sa ubos.
Gigamit usab namo ang Ishigami function, nga magamit isip test function sa SALib. Sa katapusan, nag-import kami sa NumPy samtang gigamit kini sa SALib aron tipigan ang mga input ug output sa modelo sa usa ka matrix.
2. Model Input
Ang mga input sa modelo kinahanglan nga ipasabut. Ang Ishigami function nagdawat sa tulo ka mga input: x1, x2, ug x3. Sa SALib, naghimo kami usa ka dict nga nagtino sa gidaghanon sa mga input, ilang mga ngalan, ug mga limitasyon sa matag input, ingon sa makita sa ubos.
3. Paghimo og mga Sampol ug ang Modelo
Ang mga sampol dayon gihimo. Kinahanglan namon nga maghimo mga sampol gamit ang Saltelli sampler tungod kay naghimo kami usa ka pagsusi sa pagkasensitibo sa Sobol. Niini nga kaso, ang mga param value usa ka NumPy matrix. Atong maobserbahan nga ang matrix kay 8000 by 3 pinaagi sa pagpadagan sa param values.shape. 8000 ka mga sample ang gihimo gamit ang Saltelli sampler. Ang Saltelli sampler nagmugna og mga sample, diin ang N mao ang 1024 (ang parameter nga among gihatag) ug ang D mao ang 3. (ang gidaghanon sa mga input sa modelo).
Sama sa giingon kaniadto, ang SALib wala moapil sa pagtimbang-timbang sa modelo sa matematika o computational. Kung ang modelo gisulat sa Python, kasagaran imong i-loop ang matag sample input ug susihon ang modelo:
Ang mga sampol mahimong ma-save sa usa ka text file kung ang modelo wala gihimo sa Python:
Ang matag linya sa param values.txt nagrepresentar sa usa ka modelo nga input. Ang output sa modelo kinahanglan nga i-save sa lain nga file sa parehas nga istilo, nga adunay usa ka output sa matag linya. Pagkahuman niana, ang mga output mahimong ma-load sa:
Niini nga pananglitan, atong gamiton ang Ishigami function gikan sa SALib. Kini nga mga gimbuhaton sa pagsulay mahimong masusi sama sa mosunod:
4. Buhata ang Pagtuki
Sa katapusan mahimo namong kuwentahon ang mga indeks sa pagkasensitibo pagkahuman sa pagkarga sa mga resulta sa modelo sa Python. Niini nga pananglitan, atong gamiton ang sobol.analyze sa pag-compute sa una, ikaduha, ug total-order nga mga indeks.
Ang Si usa ka diksyonaryo sa Python nga adunay mga yawe nga "S1," "S2," "ST," "S1 conf," "S2 conf," ug "ST conf." Ang mga yawe sa _conf nagkupot sa kaubang mga agwat sa pagsalig, nga kasagaran gitakda sa 95 porsyento. Sa pag-output, tanan nga mga indeks, gamita ang keyword parameter print sa console=True. Sa laing paagi, ingon sa gihulagway sa ubos, mahimo natong i-print ang indibidwal nga mga kantidad gikan sa Si.
Atong makita nga ang x1 ug x2 adunay first-order sensitivity, pero ang x3 daw walay epekto sa first-order.
Kung ang mga indeks sa total-order labi ka dako kaysa sa mga indeks sa una nga han-ay, ang mga interaksyon sa mas taas nga pagkahan-ay sigurado nga mahitabo. Makita nato kining mga interaksyon nga mas taas nga han-ay pinaagi sa pagtan-aw sa mga indeks sa ikaduhang han-ay:
Atong maobserbahan nga ang x1 ug x3 adunay mahinungdanong interaksyon. Human niana, ang resulta mahimong mausab ngadto sa Pandas DataFrame alang sa dugang nga pagtuon.
5. Paglaraw
Alang sa imong kasayon, gihatag ang mga batakang pasilidad sa pag-chart. Ang plot() function naghimo og matplotlib axis nga mga butang alang sa sunod nga pagmaniobra.
Panapos
Ang SALib usa ka sopistikado nga toolkit sa pagtuki sa pagkasensitibo. Ang ubang mga teknik sa SALib naglakip sa Fourier Amplitude Sensitivity Test (FAST), Morris Method, ug Delta-Moment Independent Measure. Samtang kini usa ka librarya sa Python, gituyo kini nga magamit sa mga modelo sa bisan unsang klase.
Ang SALib nagtanyag usa ka dali gamiton nga interface sa command-line alang sa paghimo sa mga input sa modelo ug pagsusi sa mga output sa modelo. Tan-awa Dokumentasyon sa SAlib sa pagkat-on labaw pa.
Leave sa usa ka Reply