A análise de sensibilidade é usada para determinar o impacto de uma coleção de fatores independentes em uma variável dependente sob certas condições.
É uma abordagem forte para determinar como a saída do modelo é impactada pelas entradas do modelo em termos gerais. Neste post, darei uma rápida visão geral da análise de sensibilidade usando o SALib, um pacote gratuito de análise de sensibilidade do Python.
Um valor numérico conhecido como índice de sensibilidade, frequentemente representa a sensibilidade de cada entrada. Existem vários tipos de índices de sensibilidade:
- Índices de primeira ordem: calcula a contribuição de uma única entrada do modelo para a variância da saída.
- Índices de segunda ordem: calcula a contribuição de duas entradas do modelo para a variância do produto.
- Índice de ordem total: quantifica a contribuição de uma entrada do modelo para a variação de saída, abrangendo tanto efeitos de primeira ordem (a entrada flutuando sozinha) quanto quaisquer interações de ordem superior.
O que é SALIB?
SALib é baseado em Python de código aberto kit de ferramentas para fazer avaliações de sensibilidade. Possui um fluxo de trabalho independente, o que significa que não interage diretamente com o modelo matemático ou computacional. Em vez disso, o SALib é responsável por produzir as entradas do modelo (por meio de uma das funções de amostra) e calcular os índices de sensibilidade (por meio de uma das funções de análise) das saídas do modelo.
Uma análise de sensibilidade SALib típica consiste em quatro etapas:
- Determine as entradas do modelo (parâmetros) e o intervalo de amostra para cada um.
- Para criar entradas de modelo, execute a função de amostra.
- Avalie o modelo usando as entradas geradas e salve os resultados do modelo.
- Para calcular os índices de sensibilidade, use a função de análise nas saídas.
Sobol, Morris e FAST são apenas alguns dos métodos de análise de sensibilidade fornecidos pela SALib. Muitos fatores influenciam qual abordagem é melhor para uma determinada aplicação, como veremos mais adiante. Por enquanto, lembre-se de que você só precisa utilizar duas funções, amostrar e analisar, independentemente da técnica empregada. Vamos guiá-lo através de um exemplo básico para ilustrar como utilizar o SALib.
Exemplo SALib - Análise de Sensibilidade Sobol'
Neste exemplo, examinaremos a sensibilidade de Sobol da função Ishigami, conforme mostrado abaixo. Devido à sua alta não-linearidade e não-monotonicidade, a função Ishigami é amplamente utilizada para avaliar metodologias de incerteza e análise de sensibilidade.
Os passos são os seguintes:
1. Importando SALib
A primeira etapa é adicionar as bibliotecas necessárias. As funções de amostra e análise do SALib são mantidas distintas nos módulos Python. A importação da amostra de satélite e das funções de análise Sobol, por exemplo, é mostrada abaixo.
Também usamos a função Ishigami, que está disponível como função de teste no SALib. Por fim, importamos o NumPy, pois o SALib o usa para armazenar entradas e saídas do modelo em uma matriz.
2. Entrada do Modelo
As entradas do modelo devem então ser definidas. A função Ishigami aceita três entradas: x1, x2 e x3. No SALib, construímos um dict que especifica o número de entradas, seus nomes e os limites de cada entrada, conforme visto abaixo.
3. Gere Amostras e o Modelo
As amostras são então geradas. Precisamos criar amostras usando o amostrador Saltelli, pois estamos fazendo uma análise de sensibilidade Sobol. Nesse caso, os valores de parâmetro são uma matriz NumPy. Podemos observar que a matriz é 8000 por 3 executando param values.shape. 8000 amostras foram criadas com o amostrador Saltelli. O amostrador Saltelli cria amostras, onde N é 1024 (o parâmetro que fornecemos) e D é 3. (o número de entradas do modelo).
Conforme mencionado anteriormente, a SALib não está envolvida na avaliação de modelos matemáticos ou computacionais. Se o modelo for escrito em Python, você normalmente percorrerá cada entrada de amostra e avaliará o modelo:
As amostras podem ser salvas em um arquivo de texto se o modelo não for desenvolvido em Python:
Cada linha em valores de parâmetro.txt representa uma entrada de modelo. A saída do modelo deve ser salva em outro arquivo em um estilo semelhante, com uma saída em cada linha. Depois disso, as saídas podem ser carregadas com:
Neste exemplo, vamos usar a função Ishigami do SALib. Essas funções de teste podem ser avaliadas da seguinte forma:
4. Realizar Análise
Podemos finalmente calcular os índices de sensibilidade depois de carregar os resultados do modelo no Python. Neste exemplo, usaremos sobol.analyze para calcular o primeiro, o segundo e os índices de ordem total.
Si é um dicionário Python com as chaves “S1”, “S2”, “ST”, “S1 conf”, “S2 conf” e “ST conf”. As chaves _conf mantêm os intervalos de confiança associados, que geralmente são definidos como 95%. Para produzir todos os índices, use o parâmetro de palavra-chave print para console=True. Alternativamente, conforme ilustrado abaixo, podemos imprimir os valores individuais de Si.
Podemos ver que x1 e x2 têm sensibilidade de primeira ordem, mas x3 não parece ter nenhum impacto de primeira ordem.
Se os índices de ordem total são significativamente maiores do que os índices de primeira ordem, certamente estão ocorrendo interações de ordem superior. Podemos ver essas interações de ordem superior observando os índices de segunda ordem:
Podemos observar que x1 e x3 têm interações significativas. Depois disso, o resultado pode ser transformado em um Pandas DataFrame para estudo posterior.
5. Plotagem
Para sua conveniência, são fornecidos recursos básicos de gráficos. A função plot() produz objetos de eixo matplotlib para manipulação subsequente.
Conclusão
SALib é um kit de ferramentas de análise de sensibilidade sofisticado. Outras técnicas no SALib incluem o teste de sensibilidade de amplitude de Fourier (FAST), o método de Morris e a medida independente do momento delta. Embora seja uma biblioteca Python, destina-se a operar com modelos de qualquer tipo.
O SALib oferece uma interface de linha de comando fácil de usar para criar entradas de modelo e avaliar saídas de modelo. Verificação de saída Documentação SALib para saber mais.
Deixe um comentário