Innholdsfortegnelse[Gjemme seg][Forestilling]
Sensitivitetsanalyse brukes til å bestemme virkningen av en samling uavhengige faktorer på en avhengig variabel under visse forhold.
Det er en sterk tilnærming for å bestemme hvordan modellens produksjon påvirkes av modellens input i generelle termer. I dette innlegget vil jeg gi en rask oversikt over sensitivitetsanalyse ved bruk av SALib, en gratis Python-sensitivitetsanalysepakke.
En numerisk verdi kjent som sensitivitetsindeksen, representerer ofte hver inngangs følsomhet. Det finnes mange typer følsomhetsindekser:
- Førsteordens indekser: beregner bidraget fra en enkelt modellinndata til utdatavariansen.
- Andreordens indekser: beregner bidraget fra to modellinndata til produksjonsvarians.
- Totalordensindeks: kvantifiserer en modellinndatas bidrag til utdatavarians, og omfatter både førsteordenseffekter (inndataene fluktuerer alene) og eventuelle interaksjoner av høyere orden.
Hva er SALib?
SALib er en Python-basert åpen kildekode verktøysett for å gjøre sensitivitetsvurderinger. Den har en løsrevet arbeidsflyt, noe som betyr at den ikke samhandler direkte med den matematiske eller beregningsmodellen. I stedet er SALib ansvarlig for å produsere modellinndataene (gjennom en av prøvefunksjonene) og beregne sensitivitetsindeksene (via en av analysefunksjonene) fra modellutdataene.
En typisk SALib-sensitivitetsanalyse består av fire trinn:
- Bestem modellinndataene (parametrene) og prøveområdet for hver.
- For å lage modellinndata, kjør eksempelfunksjonen.
- Evaluer modellen ved å bruke de genererte inngangene og lagre modellresultatene.
- For å beregne sensitivitetsindeksene, bruk analysefunksjonen på utgangene.
Sobol, Morris og FAST er bare noen av metodene for sensitivitetsanalyse levert av SALib. Mange faktorer påvirker hvilken tilnærming som er best for en gitt applikasjon, som vi skal se senere. Foreløpig, husk at du bare trenger å bruke to funksjoner, prøve og analysere, uansett hvilken teknikk du bruker. Vi vil lede deg gjennom et grunnleggende eksempel for å illustrere hvordan du bruker SALib.
SALib Eksempel – Sobol' Sensitivitetsanalyse
I dette eksemplet vil vi undersøke Sobol'-sensitiviteten til Ishigami-funksjonen, som vist nedenfor. På grunn av sin høye ikke-linearitet og ikke-monotonicitet, er Ishigami-funksjonen mye brukt for å evaluere metoder for usikkerhet og sensitivitetsanalyse.
Trinnene går som følger:
1. Importere SALib
Det første trinnet er å legge til de nødvendige bibliotekene. Prøve- og analysefunksjonene til SALib holdes forskjellige i Python-moduler. Import av satellittprøven og Sobol-analysefunksjoner, for eksempel, er vist nedenfor.
Vi bruker også Ishigami-funksjonen, som er tilgjengelig som testfunksjon i SALib. Til slutt importerer vi NumPy ettersom SALib bruker den til å lagre modellinndata og -utganger i en matrise.
2. Modellinngang
Modellinngangene må da defineres. Ishigami-funksjonen godtar tre innganger: x1, x2 og x3. I SALib konstruerer vi en diktat som spesifiserer antall innganger, navnene deres og grensene for hver inngang, som vist nedenfor.
3. Generer prøver og modellen
Prøvene blir deretter generert. Vi må lage prøver ved å bruke Saltelli-prøvetakeren siden vi gjør en Sobol-sensitivitetsanalyse. I dette tilfellet er param-verdier en NumPy-matrise. Vi kan observere at matrisen er 8000 x 3 ved å kjøre param values.shape. 8000 prøver ble laget med Saltelli-prøvetakeren. Saltelli-sampleren lager prøver, der N er 1024 (parameteren vi ga) og D er 3. (antall modellinndata).
Som tidligere nevnt, er ikke SALib engasjert i matematisk eller beregningsmessig modellevaluering. Hvis modellen er skrevet i Python, vil du vanligvis gå gjennom hvert eksempelinndata og vurdere modellen:
Eksemplene kan lagres i en tekstfil hvis modellen ikke er utviklet i Python:
Hver linje i param values.txt representerer én modellinndata. Modellens utdata bør lagres til en annen fil i lignende stil, med én utgang på hver linje. Etter det kan utgangene lastes med:
I dette eksemplet skal vi bruke Ishigami-funksjonen fra SALib. Disse testfunksjonene kan evalueres som følger:
4. Utfør analyse
Vi kan endelig beregne sensitivitetsindeksene etter å ha lastet modellresultatene inn i Python. I dette eksemplet vil vi bruke sobol.analyze for å beregne første-, andre- og totalordensindeksene.
Si er en Python-ordbok som har nøklene "S1", "S2", "ST", "S1 conf," "S2 conf," og "ST conf." _conf-tastene holder de tilknyttede konfidensintervallene, som vanligvis er satt til 95 prosent. For å skrive ut alle indekser, bruk nøkkelordparameteren print til console=True. Alternativt, som illustrert nedenfor, kan vi skrive ut de individuelle verdiene fra Si.
Vi kan se at x1 og x2 har førsteordens følsomhet, men x3 ser ikke ut til å ha noen førsteordens innvirkning.
Hvis totalordensindeksene er betydelig større enn førsteordensindeksene, finner det helt sikkert interaksjoner av høyere orden sted. Vi kan se disse interaksjonene av høyere orden ved å se på andreordens indeksene:
Vi kan observere at x1 og x3 har betydelige interaksjoner. Etter det kan resultatet bli transformert til en Pandas DataFrame for videre studier.
5. Plotte
For enkelhets skyld tilbys grunnleggende kartleggingsfasiliteter. Plot()-funksjonen produserer matplotlib-akseobjekter for påfølgende manipulering.
konklusjonen
SALib er et sofistikert verktøysett for sensitivitetsanalyse. Andre teknikker i SALib inkluderer Fourier Amplitude Sensitivity Test (FAST), Morris Method og Delta-Moment Independent Measure. Selv om det er et Python-bibliotek, er det ment å fungere med modeller av noe slag.
SALib tilbyr et brukervennlig kommandolinjegrensesnitt for å lage modellinndata og vurdere modellutdata. Sjekk ut SALib dokumentasjon for å lære mer.
Legg igjen en kommentar