Næmnigreining er notuð til að ákvarða áhrif safns óháðra þátta á háða breytu við ákveðnar aðstæður.
Það er sterk nálgun til að ákvarða hvernig framleiðsla líkansins hefur áhrif á aðföng líkansins almennt séð. Í þessari færslu mun ég gefa fljótt yfirlit yfir næmnigreiningu með því að nota SALib, ókeypis Python næmnigreiningarpakka.
Tölugildi sem kallast næmisvísitalan, táknar oft næmni hvers inntaks. Það eru fjölmargar tegundir af næmisvísitölum:
- Fyrstu stigs vísitölur: reiknar framlag eins inntaks líkans til framleiðslufráviksins.
- Önnur stigs vísitölur: reiknar framlag tveggja líkanainntaka til framleiðslufráviks.
- Heildarröðunarvísitala: mælir framlag líkansinntaks til úttaksfráviks, nær yfir bæði fyrstu-gráðu áhrif (inntakið sveiflast eitt og sér) og hvers kyns milliverkanir af hærri röð.
Hvað er SALib?
SALib er Python byggt opinn-uppspretta verkfærakista til að gera næmismat. Það hefur aðskilið verkflæði, sem þýðir að það hefur ekki bein samskipti við stærðfræði- eða reiknilíkanið. Þess í stað sér SALib um að framleiða líkaninntak (í gegnum eina af sýnishornsaðgerðunum) og reikna út næmnivísitölur (með einni af greiningaraðgerðunum) úr líkanúttakunum.
Dæmigerð SALib næmisgreining samanstendur af fjórum skrefum:
- Ákvarðu líkaninntak (færibreytur) og sýnisvið fyrir hvern.
- Til að búa til líkaninntak skaltu keyra sýnishornsaðgerðina.
- Metið líkanið með því að nota myndað inntak og vistið niðurstöður líkansins.
- Til að reikna út næmnivísitölurnar, notaðu greiningaraðgerðina á úttakinu.
Sobol, Morris og FAST eru aðeins nokkrar af næmnigreiningaraðferðunum sem SALib býður upp á. Margir þættir hafa áhrif á hvaða aðferð er best fyrir tiltekið forrit, eins og við munum sjá síðar. Í bili, hafðu í huga að þú þarft aðeins að nota tvær aðgerðir, sýna og greina, óháð hvaða tækni þú notar. Við munum leiða þig í gegnum grunndæmi til að sýna hvernig á að nota SALib.
SALib dæmi – Sobol' næmnigreining
Í þessu dæmi munum við skoða Sobol' næmni Ishigami fallsins, eins og sýnt er hér að neðan. Vegna mikils ólínuleika og óeinótónleika er Ishigami aðgerðin mikið notuð til að meta aðferðafræði óvissu og næmnigreiningar.
Skrefin eru sem hér segir:
1. Innflutningur SALib
Fyrsta skrefið er að bæta við nauðsynlegum bókasöfnum. Sýnis- og greiningaraðgerðum SALib er haldið aðgreindum í Python einingum. Innflutningur á gervihnattasýninu og Sobol greiningaraðgerðum, til dæmis, er sýnd hér að neðan.
Við notum líka Ishigami aðgerðina sem er fáanleg sem prófunaraðgerð í SALib. Að lokum flytjum við inn NumPy þar sem SALib notar það til að geyma inntak og úttak líkana í fylki.
2. Model Input
Þá verður að skilgreina líkaninntak. Ishigami fallið tekur við þremur inntakum: x1, x2 og x3. Í SALib smíðum við dict sem tilgreinir fjölda inntak, nöfn þeirra og takmörk á hverju inntaki, eins og sést hér að neðan.
3. Búðu til sýnishorn og líkanið
Sýnin eru síðan búin til. Við þurfum að búa til sýni með því að nota Saltelli sýnatökuna þar sem við erum að gera Sobol næmisgreiningu. Í þessu tilviki eru param gildi NumPy fylki. Við getum séð að fylkið er 8000 sinnum 3 með því að keyra param values.shape. 8000 sýni voru búin til með Saltelli sýnatökutækinu. Saltelli sýnishornið býr til sýni, þar sem N er 1024 (breytan sem við gáfum upp) og D er 3. (fjöldi líkaninntakanna).
Eins og áður hefur komið fram tekur SALib ekki þátt í stærðfræðilegu eða reiknilíkönum. Ef líkanið er skrifað í Python muntu venjulega fara í gegnum hvert sýnisinntak og meta líkanið:
Hægt er að vista sýnin í textaskrá ef líkanið er ekki þróað í Python:
Hver lína í param values.txt táknar eitt líkaninntak. Úttak líkansins ætti að vista í aðra skrá í svipuðum stíl, með einum útgangi á hverri línu. Eftir það er hægt að hlaða úttakunum með:
Í þessu dæmi ætlum við að nota Ishigami aðgerðina frá SALib. Þessar prófunaraðgerðir er hægt að meta sem hér segir:
4. Framkvæma greiningu
Við getum loksins reiknað út næmnivísitölurnar eftir að líkanniðurstöðurnar eru hlaðnar inn í Python. Í þessu dæmi munum við nota sobol.analyze til að reikna fyrstu, aðra og heildarröðunarvísitölur.
Si er Python orðabók með lyklana "S1," "S2," "ST," "S1 conf," "S2 conf," og "ST conf." _conf lyklarnir halda tilheyrandi öryggisbili, sem eru almennt stillt á 95 prósent. Til að gefa út allar vísitölur, notaðu lykilorðabreytuna print to console=True. Að öðrum kosti, eins og sýnt er hér að neðan, getum við prentað einstök gildi úr Si.
Við getum séð að x1 og x2 hafa fyrsta stigs næmi, en x3 virðist ekki hafa nein fyrsta stigs áhrif.
Ef heildarreglur vísitölur eru verulega stærri en fyrstu gráðu vísitölur, eru víxlverkanir af hærri röð örugglega að eiga sér stað. Við getum séð þessar víxlverkanir af hærri röð með því að skoða annars stigs vísitölur:
Við getum séð að x1 og x3 hafa marktæk víxlverkun. Eftir það gæti niðurstöðunni verið breytt í Pandas DataFrame til frekari rannsókna.
5. Söguþráður
Til þæginda er boðið upp á grunnkortaaðstöðu. Plot() fallið framleiðir matplotlib ás hluti til síðari meðhöndlunar.
Niðurstaða
SALib er háþróuð verkfærasett fyrir næmnigreiningu. Aðrar aðferðir í SALib eru Fourier Amplitude Sensitivity Test (FAST), Morris Method og Delta-Moment Independent Measure. Þó að það sé Python bókasafn er því ætlað að starfa með hvers kyns gerðum.
SALib býður upp á auðvelt í notkun skipanalínuviðmót til að búa til líkaninntak og meta líkanúttak. Athuga SALib skjöl til að læra meira.
Skildu eftir skilaboð