sábado, 26 de julio de 2025

Analisis de confiabilidad usando modelo weibull en Python

 

Análisis de confiabilidad utilizando un modelo de distribución de Weibull

Modelar la vida útil del producto y evaluar las tasas de falla con Python.

Este script de Python es solo un ejemplo de lo que puede hacer con la biblioteca de confiabilidad a la que hacemos referencia en una publicación anterior: 

 Realiza un análisis de confiabilidad utilizando un modelo de distribución de Weibull de dos parámetros en un conjunto simulado de datos de vida útil del producto. El propósito del análisis es obtener información sobre la confiabilidad y la tasa de fracaso del producto con el tiempo.

El proceso comienza generando un conjunto de datos sintético que representa las vidas de un lote de productos, basado en una distribución de Weibull que a menudo se usa en el análisis de confiabilidad debido a su versatilidad. 

 

 

El script luego impone una censura derecha en los datos. La censura derecha es un tipo de censura de datos que ocurre cuando el tiempo de falla de una unidad no se conoce con precisión, pero se sabe que excede un cierto valor. En este caso, cualquier producto que no fallara en la marca de 15 unidades de tiempo se considera censuradas, lo que indica que la prueba se detuvo antes de que pudieran fallar.

Usando estos datos censurados, el script se ajusta a una distribución de Weibull de dos parámetros. La distribución de Weibull se usa en estudios de confiabilidad y análisis de supervivencia para representar el tiempo hasta la ocurrencia de un evento (como una falla), dados dos parámetros: un parámetro de forma y un parámetro de escala. 

 

 

Una vez que se instala el modelo Weibull, el script calcula e imprime dos métricas clave en un punto de tiempo especificado (10 unidades en este caso):

  • Confiabilidad (función de supervivencia) : esta es la probabilidad de que un producto sobrevive más allá del tiempo especificado.

  • Tasa de falla (función de peligro) : esta es la tasa a la que ocurren fallas en el momento especificado.

Por último, el script genera un gráfico que muestra la función de densidad de probabilidad (PDF) de la distribución de Weibull ajustada, proporcionando una representación visual de la distribución de falla a lo largo del tiempo. También traza los tiempos de falla observados y los tiempos censurados. La gráfica generada se guarda como un archivo PNG.

En conclusión, este script es una herramienta para realizar un análisis de confiabilidad en los datos de la vida útil del producto, lo que permite la evaluación estadística y visual de la confiabilidad del producto y la tasa de fracaso a lo largo del tiempo. 

Paso 1: Instalación de Python

Para Windows:

  1. Descargue la última versión de Python 3 del sitio oficial https://www.python.org/downloads/windows/

  2. Ejecute el archivo del instalador y siga el asistente de configuración.

  3. Asegúrese de que el cuadro que diga "Agregue Python 3.x a la ruta" está marcado. Esto agregará Python a sus variables de entorno, para que pueda ejecutar Python desde cualquier símbolo del sistema.

  4. Haga clic en Instalar, luego finalice.

Para macOS:

  1. Descargue la última versión de Python 3 del sitio oficial https://www.python.org/downloads/mac-osx/

  2. Abra el paquete descargado y siga el asistente de configuración.

  3. Después de la instalación, abra una ventana de terminal y escriba python3 Para verificar la instalación.

Para Linux (distribuciones basadas en Debian como Ubuntu):

  1. Abra una ventana de terminal.

  2. Actualizar listas de paquetes para actualizaciones e nuevas instalaciones de paquetes: sudo apt-get update

  3. Instale Python 3: sudo apt-get install python3

Paso 2: Instalación de PIP

pip es el instalador de paquetes para Python y normalmente está instalado durante la instalación de Python.

Comprobar si pip ya está instalado:

pip3 --version

Si pip no está instalado, siga estos pasos:

Para Windows y macOS:

Descargar el get-pip.py Archivo desde https://bootstrap.pypa.io/get-pip.py , luego ejecutarlo con python:

python3 get-pip.py

Para Linux:

En el terminal, ejecute el siguiente comando:

sudo apt-get install python3-pip

Paso 3: Instalación de bibliotecas de Python

Utilizaremos PIP para instalar las bibliotecas de Python requeridas para su código, que son numpy, matplotliby reliability:

pip3 install numpy matplotlib reliability

Paso 4: Ejemplo del script

Creemos el script y guardemos como weibull_analysis.py:

>># Import the necessary libraries and modules
>>from reliability.Fitters import Fit_Weibull_2P
>>from reliability.Other_functions import make_right_censored_data
>>from reliability.Probability_plotting import plot_points
>>import matplotlib.pyplot as plt
>>import numpy as np

>># Generate 100 data points from a Weibull distribution with a shape parameter of 2, then scale by a factor of 10
>>original_data = np.random.weibull(a=2, size=100) * 10

>># Define the test time beyond which data are right-censored
>>test_time = 15

>># Apply right censoring to the data based on the test time
>>data = make_right_censored_data(original_data, threshold=test_time)

>># Fit a 2-parameter Weibull distribution to the failure data and right-censored data
>># Also generate a probability plot and print the results
>>wb = Fit_Weibull_2P(failures=data.failures, right_censored=data.right_censored, show_probability_plot=True, print_results=True)

>># Define the specific time at which to calculate reliability and failure rate
>>time = 10

>># Calculate and print the reliability at the given time
>>reliability = wb.distribution.SF(time)
>>print(f"Reliability at t={time}: {reliability}")

>># Calculate and print the failure rate at the given time
>>failure_rate = wb.distribution.HF(time)
>>print(f"Failure rate at t={time}: {failure_rate}")

>># Set up the figure for plotting
>>plt.figure(figsize=(10,6))

>># Generate an array of x values from 0 to 1.5 times the test time
>>x = np.linspace(0, test_time*1.5, 1000)

>># Plot the PDF of the fitted Weibull distribution
>>plt.plot(x, wb.distribution.PDF(x), label='Fitted Weibull distribution')

>># Get the failure and right-censored data from the censored data object
>>failures = data.failures
>>right_censored = data.right_censored

>># Plot the failure and right-censored points on the PDF
>>plot_points(failures=failures, right_censored=right_censored, func='PDF')

>># Add a title and labels to the plot
>>plt.title('Weibull distribution PDF')
>>plt.xlabel('Time')
>>plt.ylabel('Density')

>># Add a legend to the plot
>>plt.legend()

>># Add gridlines to the plot
>>plt.grid(True)

>># Save the figure as a PNG file
>>plt.savefig('Weibull_distribution_PDF.png')

>># Display the plot
>>plt.show()

Paso 5: Ejecutar el código

  1. Guarde el script de Python dado en un archivo, digamos weibull_analysis.py.

  2. Abra un símbolo de terminal/sistema y navegue al directorio que contiene el weibull_analysis.pyexpediente.

  3. Ejecute el script con Python ingresando el siguiente comando:

python3 weibull_analysis.py

El programa ahora debe ejecutarse, y la trama debe mostrarse en su pantalla. Una imagen PNG de la gráfica llamada 'Weibull_Distribution_Pdf.png' también se guardará en el mismo directorio.

Nota

Estamos utilizando una semilla aleatoria, debe reemplazar esto con sus propios datos.

Además, asegúrese de tener los permisos necesarios para instalar software en su máquina. Si encuentra algún problema durante la instalación, consulte la documentación oficial o busque el mensaje de error en línea para obtener más información. Este código ha sido probado en MacOS con Python 3.7.

Ejecutando en google Colab obtenemos:

Results from Fit_Weibull_2P (95% CI):
Analysis method: Maximum Likelihood Estimation (MLE)
Optimizer: TNC
Failures / Right censored: 91/9 (9% right censored) 

Parameter  Point Estimate  Standard Error  Lower CI  Upper CI
    Alpha          9.6168        0.587326   8.53189   10.8397
     Beta         1.75081        0.154285   1.47309   2.08089 

Goodness of fit    Value
 Log-likelihood -275.702
           AICc  555.527
            BIC  560.614
             AD  20.4916 

 

[<matplotlib.lines.Line2D at 0x7ad6aa231390>]

 

/tmp/ipython-input-15-1864309422.py:7: UserWarning: No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
  plt.legend()

 

 

 

 

No hay comentarios.:

Publicar un comentario

Entradas recientes

Thinkcspy 7.7 Condicionales encadenados

  7.7. Condicionales encadenados Python proporciona una forma alternativa de escribir una selección anidada, como la que se muestra en la s...

Entradas Populares