A análise de sensibilidade úsase para determinar o impacto dunha colección de factores independentes sobre unha variable dependente en determinadas condicións.
É un enfoque forte para determinar como a saída do modelo se ve afectada polas entradas do modelo en termos xerais. Nesta publicación, vou dar unha visión xeral rápida da análise de sensibilidade usando SALib, un paquete gratuíto de análise de sensibilidade de Python.
Un valor numérico coñecido como índice de sensibilidade representa con frecuencia a sensibilidade de cada entrada. Hai varios tipos de índices de sensibilidade:
- Índices de primeira orde: calcula a contribución dunha única entrada do modelo á varianza de saída.
- Índices de segunda orde: calcula a contribución de dúas entradas do modelo á varianza da saída.
- Índice de orde total: cuantifica a contribución dunha entrada do modelo á varianza da saída, abarcando tanto os efectos de primeira orde (a entrada flutuando só) como as interaccións de orde superior.
Que é SALib?
SALib está baseado en Python open-source conxunto de ferramentas para facer avaliacións de sensibilidade. Ten un fluxo de traballo separado, o que significa que non interactúa directamente co modelo matemático ou computacional. Pola contra, SALib encárgase de producir as entradas do modelo (a través dunha das funcións de mostra) e de calcular os índices de sensibilidade (a través dunha das funcións de análise) a partir das saídas do modelo.
Unha análise típica de sensibilidade SALib consta de catro pasos:
- Determine as entradas do modelo (parámetros) e o rango de mostra para cada un.
- Para crear entradas de modelo, execute a función de mostra.
- Avalía o modelo utilizando as entradas xeradas e garda os resultados do modelo.
- Para calcular os índices de sensibilidade, use a función de análise nas saídas.
Sobol, Morris e FAST son só algúns dos métodos de análise de sensibilidade proporcionados por SALib. Moitos factores inflúen cal é o mellor enfoque para unha determinada aplicación, como veremos máis adiante. Polo momento, ten en conta que só precisa utilizar dúas funcións, mostra e análise, independentemente da técnica que empregue. Guiarémosche a través dun exemplo básico para ilustrar como utilizar SALib.
Exemplo SALib - Análise de sensibilidade de Sobol
Neste exemplo, examinaremos a sensibilidade de Sobol da función Ishigami, como se mostra a continuación. Debido á súa elevada non linealidade e non monotonía, a función de Ishigami úsase amplamente para avaliar as metodoloxías de análise de incerteza e sensibilidade.
Os pasos son os seguintes:
1. Importar SALib
O primeiro paso é engadir as bibliotecas necesarias. As funcións de mostra e análise de SALib mantéñense distintas nos módulos de Python. A continuación móstrase a importación da mostra de satélite e as funcións de análise de Sobol, por exemplo.
Tamén usamos a función Ishigami, que está dispoñible como función de proba en SALib. Finalmente, importamos NumPy xa que SALib o usa para almacenar entradas e saídas do modelo nunha matriz.
2. Entrada do modelo
Deben definirse entón as entradas do modelo. A función Ishigami acepta tres entradas: x1, x2 e x3. En SALib, construímos un dito que especifica o número de entradas, os seus nomes e os límites de cada entrada, como se ve a continuación.
3. Xerar Mostras e o Modelo
Despois xéranse as mostras. Necesitamos crear mostras usando o sampler Saltelli xa que estamos a facer unha análise de sensibilidade Sobol. Neste caso, os valores dos parámetros son unha matriz NumPy. Podemos observar que a matriz é 8000 por 3 executando valores de parámetro.forma. Creáronse 8000 mostras co mostrador de Saltelli. O mostrador de Saltelli crea mostras, onde N é 1024 (o parámetro que proporcionamos) e D é 3. (o número de entradas do modelo).
Como se indicou anteriormente, SALib non se dedica á avaliación de modelos matemáticos ou computacionais. Se o modelo está escrito en Python, normalmente pasará por cada entrada de mostra e avaliará o modelo:
As mostras pódense gardar nun ficheiro de texto se o modelo non está desenvolvido en Python:
Cada liña en param values.txt representa unha entrada de modelo. A saída do modelo debe gardarse noutro ficheiro cun estilo similar, cunha saída en cada liña. Despois diso, as saídas poden cargarse con:
Neste exemplo, imos usar a función Ishigami de SALib. Estas funcións de proba pódense avaliar do seguinte xeito:
4. Realizar Análise
Finalmente podemos calcular os índices de sensibilidade despois de cargar os resultados do modelo en Python. Neste exemplo, usaremos sobol.analyze para calcular o primeiro, segundo e índices de orde total.
Si é un dicionario de Python que ten as claves "S1", "S2", "ST", "S1 conf", "S2 conf" e "ST conf". As teclas _conf conteñen os intervalos de confianza asociados, que xeralmente se establecen nun 95 por cento. Para emitir todos os índices, use o parámetro de palabra clave print to console=True. Como alternativa, como se ilustra a continuación, podemos imprimir os valores individuais de Si.
Podemos ver que x1 e x2 teñen unha sensibilidade de primeira orde, pero x3 non parece ter ningún impacto de primeira orde.
Se os índices de orde total son significativamente máis grandes que os índices de primeira orde, con toda seguridade se están a producir interaccións de orde superior. Podemos ver estas interaccións de orde superior mirando os índices de segunda orde:
Podemos observar que x1 e x3 teñen interaccións significativas. Despois diso, o resultado pode ser transformado nun Pandas DataFrame para máis estudos.
5. Trazado
Para a súa comodidade, ofrécense instalacións básicas de cartografía. A función plot() produce obxectos do eixe matplotlib para a súa posterior manipulación.
Conclusión
SALib é un sofisticado conxunto de ferramentas de análise de sensibilidade. Outras técnicas en SALib inclúen a proba de sensibilidade á amplitude de Fourier (FAST), o método Morris e a medida independente do momento Delta. Aínda que é unha biblioteca de Python, está pensada para funcionar con modelos de calquera tipo.
SALib ofrece unha interface de liña de comandos fácil de usar para crear entradas de modelos e avaliar as saídas do modelo. Comprobar Documentación SALib para saber máis.
Deixe unha resposta