L'anàlisi de sensibilitat s'utilitza per determinar l'impacte d'una col·lecció de factors independents sobre una variable dependent en determinades condicions.
És un enfocament fort per determinar com la sortida del model es veu afectada per les entrades del model en termes generals. En aquesta publicació, donaré una visió general ràpida de l'anàlisi de sensibilitat mitjançant SALib, un paquet d'anàlisi de sensibilitat de Python gratuït.
Un valor numèric conegut com a índex de sensibilitat representa sovint la sensibilitat de cada entrada. Hi ha molts tipus d'índexs de sensibilitat:
- Índexs de primer ordre: calcula la contribució d'una única entrada del model a la variància de sortida.
- Índexs de segon ordre: calcula la contribució de dues entrades del model a la variància de sortida.
- Índex d'ordre total: quantifica la contribució d'un model d'entrada a la variància de sortida, abastant tant els efectes de primer ordre (l'entrada que fluctua sola) com qualsevol interacció d'ordre superior.
Què és SALib?
SALib està basat en Python de codi obert conjunt d'eines per fer avaluacions de sensibilitat. Té un flux de treball independent, el que significa que no interactua directament amb el model matemàtic o computacional. En canvi, SALib s'encarrega de produir les entrades del model (a través d'una de les funcions de mostra) i de calcular els índexs de sensibilitat (mitjançant una de les funcions d'anàlisi) a partir de les sortides del model.
Una anàlisi típica de sensibilitat SALib consta de quatre passos:
- Determineu les entrades del model (paràmetres) i el rang de mostra per a cadascun.
- Per crear entrades de model, executeu la funció de mostra.
- Avalueu el model utilitzant les entrades generades i deseu els resultats del model.
- Per calcular els índexs de sensibilitat, utilitzeu la funció d'anàlisi de les sortides.
Sobol, Morris i FAST són només alguns dels mètodes d'anàlisi de sensibilitat proporcionats per SALib. Molts factors influeixen en quin enfocament és millor per a una aplicació determinada, com veurem més endavant. De moment, tingueu en compte que només heu d'utilitzar dues funcions, mostrejar i analitzar, independentment de la tècnica que utilitzeu. Us guiarem a través d'un exemple bàsic per il·lustrar com utilitzar SALib.
Exemple SALib: anàlisi de sensibilitat de Sobol
En aquest exemple, examinarem la sensibilitat de Sobol de la funció Ishigami, tal com es mostra a continuació. A causa de la seva alta no linealitat i no monotonia, la funció Ishigami s'utilitza àmpliament per avaluar metodologies d'anàlisi d'incertesa i sensibilitat.
Els passos són els següents:
1. Importació de SALib
El primer pas és afegir les biblioteques necessàries. Les funcions de mostra i anàlisi de SALib es mantenen diferents als mòduls de Python. A continuació es mostra la importació de la mostra de satèl·lit i les funcions d'anàlisi de Sobol, per exemple.
També fem servir la funció Ishigami, que està disponible com a funció de prova a SALib. Finalment, importem NumPy ja que SALib l'utilitza per emmagatzemar entrades i sortides del model en una matriu.
2. Entrada del model
Aleshores s'han de definir les entrades del model. La funció Ishigami accepta tres entrades: x1, x2 i x3. A SALib, construïm un dictat que especifica el nombre d'entrades, els seus noms i els límits de cada entrada, com es veu a continuació.
3. Generar mostres i el model
Aleshores es generen les mostres. Hem de crear mostres amb el sampler Saltelli ja que estem fent una anàlisi de sensibilitat Sobol. En aquest cas, els valors dels paràmetres són una matriu NumPy. Podem observar que la matriu és de 8000 per 3 executant param values.shape. Es van crear 8000 mostres amb el sampler Saltelli. El mostrador de Saltelli crea mostres, on N és 1024 (el paràmetre que hem proporcionat) i D és 3. (el nombre d'entrades del model).
Com s'ha dit anteriorment, SALib no es dedica a l'avaluació de models matemàtics o computacionals. Si el model està escrit en Python, normalment passareu a través de cada entrada de mostra i avaluareu el model:
Les mostres es poden desar en un fitxer de text si el model no està desenvolupat en Python:
Cada línia de param values.txt representa una entrada de model. La sortida del model s'ha de desar en un altre fitxer amb un estil similar, amb una sortida a cada línia. Després d'això, les sortides es poden carregar amb:
En aquest exemple, farem servir la funció Ishigami de SALib. Aquestes funcions de prova es poden avaluar de la següent manera:
4. Realitzar anàlisis
Finalment podem calcular els índexs de sensibilitat després de carregar els resultats del model a Python. En aquest exemple, utilitzarem sobol.analyze per calcular el primer, el segon i els índexs d'ordre total.
Si és un diccionari de Python que té les tecles "S1", "S2", "ST", "S1 conf", "S2 conf" i "ST conf". Les tecles _conf contenen els intervals de confiança associats, que generalment s'estableixen al 95 per cent. Per generar tots els índexs, utilitzeu el paràmetre de paraula clau print to console=True. Alternativament, com s'il·lustra a continuació, podem imprimir els valors individuals de Si.
Podem veure que x1 i x2 tenen una sensibilitat de primer ordre, però x3 no sembla tenir cap impacte de primer ordre.
Si els índexs d'ordre total són significativament més grans que els índexs de primer ordre, segurament s'estan produint interaccions d'ordre superior. Podem veure aquestes interaccions d'ordre superior mirant els índexs de segon ordre:
Podem observar que x1 i x3 tenen interaccions significatives. Després d'això, el resultat es pot transformar en un Pandas DataFrame per a un estudi posterior.
5. Traçat
Per a la vostra comoditat, s'ofereixen les instal·lacions bàsiques de cartografia. La funció plot() produeix objectes de l'eix matplotlib per a la seva manipulació posterior.
Conclusió
SALib és un conjunt d'eines d'anàlisi de sensibilitat sofisticat. Altres tècniques de SALib inclouen la prova de sensibilitat a l'amplitud de Fourier (FAST), el mètode Morris i la mesura independent del moment delta. Tot i que és una biblioteca de Python, està pensada per funcionar amb models de qualsevol tipus.
SALib ofereix una interfície de línia d'ordres fàcil d'utilitzar per crear entrades de model i avaluar les sortides del model. Fes una ullada Documentació SALib per a més informació.
Deixa un comentari