Uchambuzi wa unyeti hutumiwa kubainisha athari ya mkusanyiko wa vipengele huru kwenye kigezo tegemezi chini ya hali fulani.
Ni mbinu dhabiti ya kuamua jinsi matokeo ya modeli yanavyoathiriwa na pembejeo za modeli kwa jumla. Katika chapisho hili, nitatoa muhtasari wa haraka wa uchambuzi wa unyeti kwa kutumia SALib, kifurushi cha uchambuzi wa unyeti wa Python.
Thamani ya nambari inayojulikana kama faharasa ya unyeti, mara nyingi huwakilisha unyeti wa kila ingizo. Kuna aina nyingi za fahirisi za unyeti:
- Fahirisi za mpangilio wa kwanza: hukokotoa mchango wa ingizo la muundo mmoja kwa tofauti ya matokeo.
- Fahirisi za mpangilio wa pili: hukokotoa mchango wa miundo miwili ya pembejeo kwa tofauti za matokeo.
- Faharasa ya mpangilio wa jumla: hubainisha mchango wa ingizo la kielelezo kwa tofauti ya matokeo, inayojumuisha madoido ya mpangilio wa kwanza (ingizo linabadilikabadilika pekee) na mwingiliano wowote wa hali ya juu.
SALib ni nini?
SALib ni msingi wa Python wazi chanzo zana za kufanya tathmini za unyeti. Ina mtiririko wa kazi uliojitenga, ambayo inamaanisha haiingiliani moja kwa moja na muundo wa hisabati au wa hesabu. Badala yake, SALib inasimamia kuzalisha vipengee vya miundo (kupitia mojawapo ya vitendaji vya sampuli) na kukokotoa fahirisi za unyeti (kupitia mojawapo ya chaguo za kukokotoa) kutoka kwa matokeo ya muundo.
Uchambuzi wa kawaida wa unyeti wa SALib una hatua nne:
- Amua ingizo za modeli (vigezo) na safu ya sampuli kwa kila moja.
- Ili kuunda pembejeo za mfano, endesha kitendakazi cha sampuli.
- Tathmini mfano kwa kutumia pembejeo zinazozalishwa na uhifadhi matokeo ya mfano.
- Ili kukokotoa fahirisi za unyeti, tumia chaguo za kukokotoa kwenye matokeo.
Sobol, Morris, na FAST ni baadhi tu ya mbinu za uchanganuzi wa unyeti zinazotolewa na SALib. Sababu nyingi huathiri mbinu ambayo ni bora kwa programu fulani, kama tutakavyoona baadaye. Kwa sasa, kumbuka kwamba unahitaji tu kutumia vipengele viwili, sampuli na kuchanganua, bila kujali mbinu yoyote unayotumia. Tutakuongoza kupitia mfano wa kimsingi ili kuonyesha jinsi ya kutumia SALib.
Mfano wa SALib - Uchambuzi wa Unyeti wa Sobol'
Katika mfano huu, tutachunguza unyeti wa Sobol wa kazi ya Ishigami, kama inavyoonyeshwa hapa chini. Kwa sababu ya kutokuwa na mstari wa juu na kutokuwa na monotonicity, chaguo za kukokotoa za Ishigami hutumiwa sana kutathmini kutokuwa na uhakika na mbinu za uchanganuzi wa unyeti.
Hatua zinakwenda kama ifuatavyo:
1. Kuagiza SALib
Hatua ya kwanza ni kuongeza maktaba zinazohitajika. Sampuli na utendakazi wa uchanganuzi wa SALib huwekwa tofauti katika moduli za Python. Kuagiza sampuli ya satelaiti na kazi za kuchambua za Sobol, kwa mfano, zimeonyeshwa hapa chini.
Pia tunatumia chaguo za kukokotoa za Ishigami, ambacho kinapatikana kama kipengele cha majaribio katika SALib. Hatimaye, tunaingiza NumPy kama SALib huitumia kuhifadhi viingizo na matokeo ya kielelezo kwenye matrix.
2. Uingizaji wa Mfano
Ingizo la mfano lazima lifafanuliwe. Chaguo za kukokotoa za Ishigami hukubali pembejeo tatu: x1, x2, na x3. Katika SALib, tunaunda amri inayobainisha idadi ya ingizo, majina yao, na mipaka ya kila ingizo, kama inavyoonekana hapa chini.
3. Tengeneza Sampuli na Mfano
Kisha sampuli hutolewa. Tunahitaji kuunda sampuli kwa kutumia sampuli ya Saltelli kwa kuwa tunafanya uchanganuzi wa unyeti wa Sobol. Katika kesi hii, maadili ya param ni matrix ya NumPy. Tunaweza kuona kwamba matrix ni 8000 kwa 3 kwa kuendesha param values.shape. Sampuli 8000 ziliundwa na sampuli ya Saltelli. Sampuli ya Saltelli huunda sampuli, ambapo N ni 1024 (parameter tuliyotoa) na D ni 3. (idadi ya pembejeo za mfano).
Kama ilivyoelezwa hapo awali, SALib haishirikishwi katika tathmini ya modeli ya hisabati au ya kimahesabu. Ikiwa mfano umeandikwa katika Python, kwa kawaida utapitia kila pembejeo ya sampuli na kutathmini mfano:
Sampuli zinaweza kuhifadhiwa kwa faili ya maandishi ikiwa mfano haujatengenezwa katika Python:
Kila mstari katika param values.txt inawakilisha ingizo la muundo mmoja. Matokeo ya mfano yanapaswa kuhifadhiwa kwa faili nyingine kwa mtindo sawa, na pato moja kwenye kila mstari. Baada ya hayo, matokeo yanaweza kupakiwa na:
Katika mfano huu, tutatumia kitendakazi cha Ishigami kutoka SALib. Vitendo hivi vya majaribio vinaweza kutathminiwa kama ifuatavyo:
4. Fanya Uchambuzi
Hatimaye tunaweza kuhesabu fahirisi za usikivu baada ya kupakia matokeo ya mfano kwenye Python. Katika mfano huu, tutatumia sobol.analyze kukokotoa fahirisi za mpangilio wa kwanza, wa pili na wa jumla.
Si ni kamusi ya Python iliyo na funguo "S1," "S2," "ST," "S1 conf," "S2 conf," na "ST conf." Vifunguo vya _conf hushikilia vipindi vinavyohusiana vya kujiamini, ambavyo kwa ujumla vimewekwa kuwa asilimia 95. Ili kutoa, fahirisi zote, tumia kigezo cha kigezo cha neno kuu ili console=Kweli. Vinginevyo, kama ilivyoonyeshwa hapa chini, tunaweza kuchapisha maadili ya kibinafsi kutoka kwa Si.
Tunaweza kuona kwamba x1 na x2 zina unyeti wa mpangilio wa kwanza, lakini x3 haionekani kuwa na athari za mpangilio wa kwanza.
Ikiwa fahirisi za mpangilio wa jumla ni kubwa zaidi kuliko fahirisi za mpangilio wa kwanza, mwingiliano wa mpangilio wa juu unafanyika kwa hakika. Tunaweza kuona mwingiliano huu wa hali ya juu kwa kuangalia fahirisi za mpangilio wa pili:
Tunaweza kuona kwamba x1 na x3 zina mwingiliano muhimu. Baada ya hapo, matokeo yanaweza kubadilishwa kuwa Pandas DataFrame kwa masomo zaidi.
5. Kupanga njama
Kwa urahisi wako, vifaa vya msingi vya kuorodhesha vinatolewa. Kitendaji cha plot() hutoa vitu vya mhimili wa matplotlib kwa upotoshaji unaofuata.
Hitimisho
SALib ni zana ya kisasa ya uchambuzi wa unyeti. Mbinu zingine katika SALib ni pamoja na Jaribio la Unyeti wa Ukubwa wa Fourier (FAST), Mbinu ya Morris, na Kipimo Huru cha Delta-Moment. Ingawa ni maktaba ya Python, imekusudiwa kufanya kazi na mifano ya aina yoyote.
SALib inatoa kiolesura cha mstari wa amri ambacho ni rahisi kutumia kwa ajili ya kuunda pembejeo za modeli na kutathmini matokeo ya modeli. Angalia Nyaraka za SALib kujifunza zaidi.
Acha Reply