Ginagamit ang sensitivity analysis upang matukoy ang epekto ng isang koleksyon ng mga independiyenteng salik sa isang dependent variable sa ilalim ng ilang partikular na kundisyon.
Ito ay isang malakas na diskarte para sa pagtukoy kung paano naaapektuhan ang output ng modelo ng mga input ng modelo sa mga pangkalahatang tuntunin. Sa post na ito, magbibigay ako ng mabilis na pangkalahatang-ideya ng sensitivity analysis gamit ang SALib, isang libreng Python sensitivity analysis package.
Ang numerical value na kilala bilang sensitivity index, ay madalas na kumakatawan sa sensitivity ng bawat input. Mayroong maraming mga uri ng mga indeks ng sensitivity:
- Mga indeks ng first-order: kinakalkula ang kontribusyon ng isang input ng modelo sa pagkakaiba-iba ng output.
- Mga indeks ng pangalawang-order: kinakalkula ang kontribusyon ng dalawang input ng modelo sa pagkakaiba-iba ng output.
- Index ng kabuuang order: binibilang ang kontribusyon ng input ng modelo sa pagkakaiba-iba ng output, na sumasaklaw sa parehong mga epekto sa unang pagkakasunud-sunod (nag-iisa ang input na nagbabago-bago) at anumang mga pakikipag-ugnayan sa mas mataas na pagkakasunud-sunod.
Ano ang SAlib?
SAlib ay isang Python-based open-source toolkit para sa paggawa ng sensitivity assessments. Mayroon itong nakahiwalay na daloy ng trabaho, na nangangahulugang hindi ito direktang nakikipag-ugnayan sa modelong matematikal o computational. Sa halip, ang SALib ang namamahala sa paggawa ng mga input ng modelo (sa pamamagitan ng isa sa mga sample na function) at pag-compute ng mga indeks ng sensitivity (sa pamamagitan ng isa sa mga function ng pagsusuri) mula sa mga output ng modelo.
Ang isang tipikal na pagsusuri sa sensitivity ng SALib ay binubuo ng apat na hakbang:
- Tukuyin ang mga input ng modelo (mga parameter) at ang hanay ng sample para sa bawat isa.
- Upang lumikha ng mga input ng modelo, patakbuhin ang sample function.
- Suriin ang modelo gamit ang mga nabuong input at i-save ang mga resulta ng modelo.
- Upang kalkulahin ang mga indeks ng sensitivity, gamitin ang function ng pagsusuri sa mga output.
Ang Sobol, Morris, at FAST ay ilan lamang sa mga pamamaraan ng pagsusuri sa pagiging sensitibo na ibinigay ng SALib. Maraming salik ang nakakaimpluwensya kung aling diskarte ang pinakamainam para sa isang partikular na aplikasyon, gaya ng makikita natin sa ibang pagkakataon. Sa ngayon, tandaan na kailangan mo lang gumamit ng dalawang function, sample at pag-analisa, anuman ang pamamaraan na iyong ginagamit. Gagabayan ka namin sa isang pangunahing halimbawa upang ilarawan kung paano gamitin ang SALib.
Halimbawa ng SALib – Pagsusuri ng Sensitivity ng Sobol
Sa halimbawang ito, susuriin natin ang sensitivity ng Sobol ng function ng Ishigami, tulad ng ipinapakita sa ibaba. Dahil sa mataas na nonlinearity at nonmonotonicity nito, ang Ishigami function ay malawakang ginagamit upang suriin ang kawalan ng katiyakan at sensitivity analysis methodologies.
Ang mga hakbang ay sumusunod:
1. Pag-import ng SAlib
Ang unang hakbang ay idagdag ang mga kinakailangang aklatan. Ang sample at pagsusuri ng mga function ng SALib ay pinananatiling naiiba sa mga module ng Python. Ang pag-import ng satellite sample at Sobol analysis functions, halimbawa, ay ipinapakita sa ibaba.
Ginagamit din namin ang function na Ishigami, na magagamit bilang isang function ng pagsubok sa SALib. Sa wakas, ini-import namin ang NumPy habang ginagamit ito ng SALib upang mag-imbak ng mga input at output ng modelo sa isang matrix.
2. Model Input
Dapat na tukuyin ang mga input ng modelo. Ang Ishigami function ay tumatanggap ng tatlong input: x1, x2, at x3. Sa SALib, bumuo kami ng dict na tumutukoy sa bilang ng mga input, kanilang mga pangalan, at mga limitasyon sa bawat input, tulad ng nakikita sa ibaba.
3. Bumuo ng Mga Sample at ang Modelo
Ang mga sample ay nabuo pagkatapos. Kailangan naming gumawa ng mga sample gamit ang Saltelli sampler dahil gumagawa kami ng Sobol sensitivity analysis. Sa kasong ito, ang mga param value ay isang NumPy matrix. Mapapansin natin na ang matrix ay 8000 by 3 sa pamamagitan ng pagpapatakbo ng param values.shape. 8000 sample ang nalikha gamit ang Saltelli sampler. Ang Saltelli sampler ay lumilikha ng mga sample, kung saan ang N ay 1024 (ang parameter na ibinigay namin) at D ay 3. (ang bilang ng mga input ng modelo).
Gaya ng naunang sinabi, ang SALib ay hindi nakikibahagi sa mathematical o computational model evaluation. Kung ang modelo ay nakasulat sa Python, karaniwan mong i-loop ang bawat sample input at tasahin ang modelo:
Ang mga sample ay maaaring i-save sa isang text file kung ang modelo ay hindi binuo sa Python:
Ang bawat linya sa param values.txt ay kumakatawan sa isang modelong input. Ang output ng modelo ay dapat na i-save sa isa pang file sa isang katulad na istilo, na may isang output sa bawat linya. Pagkatapos nito, ang mga output ay maaaring mai-load ng:
Sa halimbawang ito, gagamitin namin ang function na Ishigami mula sa SALib. Ang mga function ng pagsubok na ito ay maaaring masuri tulad ng sumusunod:
4. Magsagawa ng Pagsusuri
Sa wakas ay maaari nating kalkulahin ang mga indeks ng sensitivity pagkatapos i-load ang mga resulta ng modelo sa Python. Sa halimbawang ito, gagamitin namin ang sobol.analyze upang kalkulahin ang mga indeks ng una, pangalawa, at kabuuang-order.
Ang Si ay isang diksyunaryo ng Python na mayroong mga key na "S1," "S2," "ST," "S1 conf," "S2 conf," at "ST conf." Ang mga _conf key ay nagtataglay ng mga nauugnay na agwat ng kumpiyansa, na karaniwang nakatakda sa 95 porsyento. Upang i-output, lahat ng mga indeks, gamitin ang keyword parameter print sa console=True. Bilang kahalili, gaya ng inilalarawan sa ibaba, maaari naming i-print ang mga indibidwal na halaga mula sa Si.
Makikita natin na ang x1 at x2 ay may first-order sensitivity, ngunit ang x3 ay mukhang walang anumang first-order na epekto.
Kung ang mga indeks ng kabuuang pagkakasunud-sunod ay higit na malaki kaysa sa mga indeks ng unang pagkakasunud-sunod, ang mga pakikipag-ugnayan sa mas mataas na pagkakasunud-sunod ay tiyak na nagaganap. Makikita natin ang mga mas mataas na ayos na pakikipag-ugnayan na ito sa pamamagitan ng pagtingin sa mga indeks ng pangalawang order:
Mapapansin natin na ang x1 at x3 ay may makabuluhang pakikipag-ugnayan. Pagkatapos nito, ang resulta ay maaaring mabago sa isang Pandas DataFrame para sa karagdagang pag-aaral.
5. Pagbabalangkas
Para sa iyong kaginhawahan, ibinibigay ang mga basic charting facility. Ang plot() function ay gumagawa ng matplotlib axis na mga bagay para sa kasunod na pagmamanipula.
Konklusyon
Ang SALib ay isang sopistikadong toolkit sa pagsusuri ng sensitivity. Kasama sa iba pang mga diskarte sa SALib ang Fourier Amplitude Sensitivity Test (FAST), Morris Method, at Delta-Moment Independent Measure. Bagama't ito ay isang library ng Python, ito ay inilaan upang gumana sa mga modelo ng anumang uri.
Nag-aalok ang SALib ng madaling gamitin na interface ng command-line para sa paglikha ng mga input ng modelo at pagtatasa ng mga output ng modelo. Tignan mo dokumentasyon ng SAlib para sa karagdagang kaalaman.
Mag-iwan ng Sagot