viernes, 27 de marzo de 2026

Que es PyMc y para que sirve?

 



PyMC es una biblioteca de programación probabilística para Python que permite a los usuarios construir modelos bayesianos con una API de Python simple y ajustarlos utilizando algoritmos de última generación como los métodos Monte Carlo de cadena de Markov (MCMC) y la inferencia variacional.

Características

PyMC se esfuerza por hacer que el modelado bayesiano sea lo más simple e indoloro posible, permitiendo a los usuarios centrarse en su problema en lugar de en los métodos.

Esto es lo que lo distingue:

  • Moderno: Incluye algoritmos de inferencia de última generación, incluidos MCMC (NUTS) e inferencia variacional (ADVI).

  • Fácil de usar: Escribe tus modelos utilizando una sintaxis amigable de Python. Aprenda modelado bayesiano de los muchos cuadernos de ejemplo.

  • Rápido: Usos PyTensor como su backend computacional para compilar a través de C, Numba o JAX, ejecuta tus modelos en la GPU, y beneficiarse de optimizaciones gráficas complejas.

  • Baterías incluidas: Incluye distribuciones de probabilidad, procesos gaussianos, ABC, SMC y mucho más. Se integra muy bien con ArviZ para visualizaciones y diagnósticos, así como Bambi para modelos de efectos mixtos de alto nivel.

  • Centrado en la comunidad: Haz preguntas sobre discurso, únete Eventos MeetUp, síguenos en Twitter, y empezar contribuyendo.

Empezar

Ejemplo de regresión lineal

Este ejemplo demuestra cómo realizar inferencia bayesiana para un modelo de regresión lineal para predecir el crecimiento de las plantas en función de factores ambientales.

El crecimiento de las plantas puede verse influenciado por múltiples factores y comprender estas relaciones es crucial para optimizar las prácticas agrícolas.

Variables independientes:

  • Horas de luz solar: Número de horas que la planta está expuesta a la luz solar diariamente.

  • Cantidad de agua: Cantidad diaria de agua suministrada a la planta (en mililitros).

  • Contenido de nitrógeno del suelo: Porcentaje del contenido de nitrógeno en el suelo.

Variable dependiente:

  • Crecimiento de la planta (y): Medido como el aumento de la altura de la planta (en centímetros) durante un período determinado.


Ejercicio de Mississippi

Escenario Mississippi

¿Sabes lo que es Mississippi? Bueno, es el nombre de uno de los estados y ríos en los Estados Unidos. El río Mississippi tiene aproximadamente 2,340 millas de largo, lo que lo convierte en el segundo río más largo de los Estados Unidos (el más largo es el río Missouri). ¡Es tan largo que una sola gota de agua necesita 90 días para recorrer toda su longitud!

La palabra Mississippi también se usa para un propósito ligeramente diferente: para contar mississippily (mississippimente).

Si no estás familiarizado con la frase, estamos aquí para explicarte lo que significa: se utiliza para contar segundos.

La idea detrás de esto es que agregar la palabra Mississippi a un número al contar los segundos en voz alta hace que suene más cercano al reloj, y por lo tanto "un Mississippi, dos Mississippi, tres Mississippi" tomará aproximadamente unos tres segundos reales de tiempo. A menudo lo usan los niños que juegan al escondite para asegurarse de que el buscador haga un conteo honesto.

Tu tarea es muy simple aquí: escribe un programa que use un bucle for para "contar de forma mississippi" hasta cinco. Habiendo contado hasta cinco, el programa debería imprimir en la pantalla el mensaje final "¡Listos o no, ahí voy!"

Utiliza el esqueleto que hemos proporcionado en el editor.

  INFO EXTRA  

Ten en cuenta que el código en el editor contiene dos elementos que pueden no ser del todo claros en este momento: la sentencia import time y el método sleep(). Vamos a hablar de ellos pronto.

Por el momento, nos gustaría que supieras que hemos importado el módulo time y hemos utilizado el método sleep() para suspender la ejecución de cada función posterior de print() dentro del bucle for durante un segundo, de modo que el mensaje enviado a la consola se parezca a un conteo real. No te preocupes - pronto aprenderás más sobre módulos y métodos.


>>import time

>># Escribe un bucle for que cuente hasta cinco.

>>for i in range(1,6,1):

   >> # Cuerpo del bucle: imprime el número de iteración del bucle y la palabra "Mississippi".

    >>print(i, " Mississippi" )

    >># Cuerpo del bucle, emplea : time.sleep(1)

    >>time.sleep(1)

>># Escribe una función print con el mensaje final.

print("Lista o no, aqui vengo!")


Análisis de confiabilidad de activos físicos

Fuente: Gemini.

¡De una! Esto es lo que separa a un analista de datos de un Consultor Senior en Confiabilidad. Mientras que el promedio solo calcula un número (MTBF), tú vas a realizar un Análisis de Weibull para diagnosticar la salud de la flota de activos.

Como estamos en Google Colab, primero debemos instalar la librería, ya que no viene por defecto.


🛠️ Script Profesional: Análisis de Weibull con reliability

Copia este bloque en una celda de Colab. Vamos a simular datos de una bomba que está empezando a mostrar signos de desgaste (envejecimiento).

Python
# 1. Instalar la librería especializada
!pip install reliability -q

import matplotlib.pyplot as plt
from reliability.Fitters import Fit_Weibull_2P
from reliability.Probability_plotting import Weibull_probability_plot

# 2. Datos reales de campo: Horas de operación hasta la falla (TTF)
# Imagina que estos son datos de 10 motores iguales
datos_fallas = [1150, 1820, 2400, 1950, 2100, 2800, 1600, 2250, 2150, 1900]

print("--- Análisis de Ciclo de Vida del Activo ---")

# 3. Ajustar los datos a una Distribución de Weibull de 2 parámetros
# Esto calculará automáticamente Beta (forma) y Eta (vida característica)
modelo = Fit_Weibull_2P(failures=datos_fallas)

# 4. Extraer los parámetros para el diagnóstico
beta = modelo.beta
eta = modelo.alpha  # En esta librería, Eta se llama 'alpha'

print(f"\nRESULTADOS TÉCNICOS:")
print(f"Factor de Forma (Beta): {beta:.2f}")
print(f"Vida Característica (Eta): {eta:.2f} horas")

# 5. Generar las gráficas profesionales automáticamente
modelo.plot()
plt.show()

🧠 ¿Cómo interpretar esto como un experto?

Aquí es donde entra tu criterio de ingeniero. Mira el valor de Beta ($\beta$) que arrojó el script:

Caso A: $\beta < 1$ (Mortalidad Infantil)

  • Diagnóstico: Las máquinas fallan apenas se instalan o después de un mantenimiento.

  • Acción: Revisa la calidad de los repuestos, los procedimientos de instalación o busca errores humanos. El mantenimiento preventivo aquí es un error, ¡solo causarás más fallas!

Caso B: $\beta \approx 1$ (Fallas Aleatorias)

  • Diagnóstico: La máquina falla por "mala suerte" (sobrecargas, golpes, errores de operación). No hay un patrón de desgaste claro.

  • Acción: No sirve de nada cambiar la pieza por tiempo. Lo mejor es monitoreo de condición (vibraciones) o simplemente tener stock para reparar cuando pase.

Caso C: $\beta > 1$ (Desgaste / Envejecimiento)

  • Diagnóstico: (Es lo que suele dar el script arriba). Las piezas se están agotando por uso. A mayor $\beta$, más predecible es la falla.

  • Acción: ¡Perfecto para mantenimiento preventivo! Puedes programar el cambio justo antes de que la curva de probabilidad se dispare.


📊 Aplicación en tu Blog o Trabajo

Si publicas esto en tu entrada de Blogger, puedes explicar que la Vida Característica ($\eta$) es el tiempo en el que el 63.2% de tus activos ya habrán fallado. Es un dato mucho más preciso que el simple promedio (MTBF) para planificar compras de repuestos.

Tip de Pro: La fórmula de confiabilidad de Weibull que acabas de graficar es:

$$R(t) = e^{-(t/\eta)^\beta}$$

¿Te gustaría que te ayude a crear una función que reciba estos datos y te genere automáticamente una recomendación de "Estrategia de Mantenimiento" (si debes hacer Preventivo, Correctivo o Predictivo)? Sería el cierre perfecto para tu tutorial de ingeniería.

Entradas recientes

Que es PyMc y para que sirve?

  PyMC  es una biblioteca de programación probabilística para Python que permite a los usuarios construir modelos bayesianos con una API de ...

Entradas Populares