Índice del contenido[Esconder][Espectáculo]
El análisis de sensibilidad se usa para determinar el impacto de una colección de factores independientes en una variable dependiente bajo ciertas condiciones.
Es un enfoque fuerte para determinar cómo la salida del modelo se ve afectada por las entradas del modelo en términos generales. En esta publicación, daré una descripción general rápida del análisis de sensibilidad usando SALib, un paquete gratuito de análisis de sensibilidad de Python.
Un valor numérico conocido como índice de sensibilidad, frecuentemente representa la sensibilidad de cada entrada. Existen numerosos tipos de índices de sensibilidad:
- Índices de primer orden: calcula la contribución de una sola entrada del modelo a la varianza de la salida.
- Índices de segundo orden: calcula la contribución de dos entradas del modelo a la varianza de la salida.
- Índice de orden total: cuantifica la contribución de la entrada de un modelo a la varianza de la salida, que abarca tanto los efectos de primer orden (la entrada que fluctúa sola) como cualquier interacción de orden superior.
¿Qué es SALib?
SALib es un basado en Python De código abierto kit de herramientas para hacer evaluaciones de sensibilidad. Tiene un flujo de trabajo separado, lo que significa que no interactúa directamente con el modelo matemático o computacional. En cambio, SALib está a cargo de producir las entradas del modelo (a través de una de las funciones de muestra) y calcular los índices de sensibilidad (a través de una de las funciones de análisis) a partir de las salidas del modelo.
Un análisis de sensibilidad típico de SALib consta de cuatro pasos:
- Determine las entradas del modelo (parámetros) y el rango de muestra para cada uno.
- Para crear entradas de modelo, ejecute la función de ejemplo.
- Evalúe el modelo utilizando las entradas generadas y guarde los resultados del modelo.
- Para calcular los índices de sensibilidad, utilice la función de análisis en las salidas.
Sobol, Morris y FAST son solo algunos de los métodos de análisis de sensibilidad proporcionados por SALib. Muchos factores influyen en qué enfoque es mejor para una aplicación determinada, como veremos más adelante. Por el momento, tenga en cuenta que solo necesita utilizar dos funciones, muestrear y analizar, independientemente de la técnica que emplee. Lo guiaremos a través de un ejemplo básico para ilustrar cómo utilizar SALib.
Ejemplo de SALib: análisis de sensibilidad de Sobol
En este ejemplo, examinaremos la sensibilidad Sobol' de la función Ishigami, como se muestra a continuación. Debido a su alta no linealidad y no monotonicidad, la función Ishigami se usa ampliamente para evaluar metodologías de análisis de incertidumbre y sensibilidad.
Los pasos son los siguientes:
1. Importación de SALib
El primer paso es agregar las bibliotecas necesarias. Las funciones de muestreo y análisis de SALib se mantienen distintas en los módulos de Python. A continuación se muestra, por ejemplo, la importación de la muestra de satélite y las funciones de análisis de Sobol.
También usamos la función Ishigami, que está disponible como función de prueba en SALib. Finalmente, importamos NumPy ya que SALib lo usa para almacenar entradas y salidas del modelo en una matriz.
2. Entrada del modelo
A continuación, se deben definir las entradas del modelo. La función Ishigami acepta tres entradas: x1, x2 y x3. En SALib, construimos un dict que especifica el número de entradas, sus nombres y los límites de cada entrada, como se ve a continuación.
3. Generar Muestras y el Modelo
A continuación, se generan las muestras. Necesitamos crear muestras usando el muestreador Saltelli ya que estamos haciendo un análisis de sensibilidad Sobol. En este caso, los valores de parámetro son una matriz NumPy. Podemos observar que la matriz es 8000 por 3 ejecutando param valores.forma. Se crearon 8000 muestras con el muestreador Saltelli. El muestreador Saltelli crea muestras, donde N es 1024 (el parámetro que proporcionamos) y D es 3 (el número de entradas del modelo).
Como se indicó anteriormente, SALib no se dedica a la evaluación de modelos matemáticos o computacionales. Si el modelo está escrito en Python, normalmente recorrerá cada entrada de muestra y evaluará el modelo:
Las muestras se pueden guardar en un archivo de texto si el modelo no está desarrollado en Python:
Cada línea en param valores.txt representa una entrada de modelo. La salida del modelo debe guardarse en otro archivo con un estilo similar, con una salida en cada línea. Después de eso, las salidas pueden cargarse con:
En este ejemplo, vamos a utilizar la función Ishigami de SALib. Estas funciones de prueba se pueden evaluar de la siguiente manera:
4. Realizar análisis
Finalmente podemos calcular los índices de sensibilidad después de cargar los resultados del modelo en Python. En este ejemplo, usaremos sobol.analyze para calcular los índices de primer, segundo y orden total.
Si es un diccionario de Python que tiene las claves "S1", "S2", "ST", "S1 conf", "S2 conf" y "ST conf". Las claves _conf contienen los intervalos de confianza asociados, que generalmente se establecen en 95 por ciento. Para generar todos los índices, use el parámetro de palabra clave print to console=True. Alternativamente, como se ilustra a continuación, podemos imprimir los valores individuales de Si.
Podemos ver que x1 y x2 tienen una sensibilidad de primer orden, pero x3 no parece tener ningún impacto de primer orden.
Si los índices de orden total son significativamente mayores que los índices de primer orden, lo más seguro es que se produzcan interacciones de orden superior. Podemos ver estas interacciones de orden superior observando los índices de segundo orden:
Podemos observar que x1 y x3 tienen interacciones significativas. Después de eso, el resultado puede transformarse en un Pandas DataFrame para su posterior estudio.
5. Trazado
Para su comodidad, se proporcionan servicios básicos de gráficos. La función plot() produce objetos de eje matplotlib para su posterior manipulación.
Conclusión
SALib es un sofisticado conjunto de herramientas de análisis de sensibilidad. Otras técnicas en SALib incluyen la prueba de sensibilidad de amplitud de Fourier (FAST), el método de Morris y la medida independiente del momento delta. Si bien es una biblioteca de Python, está diseñada para operar con modelos de cualquier tipo.
SALib ofrece una interfaz de línea de comandos fácil de usar para crear entradas de modelos y evaluar salidas de modelos. Verificar Documentación SALib para obtener más información.
Deje un comentario