Enfoque clase: Inferencia bayesiana
¿Como cambia el riesgo con nueva evidencia?
Ver concepto general MathPlay →Inferencia Bayesiana en flotación de cobre
Cómo actualizar el riesgo de sobre-espumación cuando aparecen nuevas señales de planta.
Idea Central
Ya sabemos medir estabilidad, relaciones y frecuencia del evento. Ahora damos un paso más:
Eso es inferencia bayesiana: actualizar una probabilidad inicial cuando aparece nueva información.
1. Matemática Simple
Bayes responde una pregunta muy natural para operación:
Términos importantes
| Término | Significado simple | Ejemplo en planta |
|---|---|---|
| Prior | Probabilidad inicial | Riesgo histórico de sobre-espumación |
| Evidencia | Información nueva observada | Nivel alto, aire alto, espumante alto |
| Likelihood | Qué tan común es esa evidencia cuando ocurre el evento | Cuando hay evento, qué tan frecuente es ver nivel alto? |
| Posterior | Probabilidad actualizada | Riesgo actualizado de sobre-espumación |
Fórmula conceptual
2. Aplicación Al Caso De Sobre-Espumación
Problema: en una planta concentradora de cobre ocurre sobre-espumación en celdas de flotación. Esto desestabiliza nivel de pulpa, espuma, arrastre, ley de concentrado y recuperación.
Pregunta operativa: ¿podemos detectar condiciones que anticipan la sobre-espumación y estimar su impacto sobre la recuperación?
3. Ejemplo Intuitivo
Una sola evidencia
Ahora observamos una evidencia: nivel de celda alto.
Varias evidencias
Esto ya se parece mucho a una alerta temprana.
4. Evidencias En Los Indicadores Del PPT
| Evidencia | Cómo se define en datos | Pregunta bayesiana |
|---|---|---|
| Nivel alto | nivel_celda > P75 o P90 | Si el nivel está alto, sube el riesgo? |
| Aire alto | flujo_aire > P75 | Si el aire está alto, sube el riesgo? |
| Espumante alto | dosificacion_espumante > P75 | Si el espumante está alto, sube el riesgo? |
| P80 alto | p80 > P75 | Si el mineral está más grueso, cambia el riesgo? |
| pH bajo | ph < P25 | Si el pH cae, cambia el riesgo? |
| Recuperación baja | recuperacion_cu < P25 | Si la recuperación ya cayó, el evento probablemente ocurrió? |
5. Excel: Fórmulas Básicas
Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx
Hoja: Datos
Calcular umbrales
Crear columnas auxiliares
Probabilidad base
Probabilidad condicionada
6. Python: Mismo Cálculo, Más Automatizado
Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx
import pandas as pd
df = pd.read_excel(
"flotacion_cobre.xlsx",
sheet_name="Datos"
)
Crear evidencias
p75_nivel = df["nivel_celda"].quantile(0.75)
p75_aire = df["flujo_aire"].quantile(0.75)
p75_espumante = df["dosificacion_espumante"].quantile(0.75)
df["nivel_alto"] = (df["nivel_celda"] > p75_nivel).astype(int)
df["aire_alto"] = (df["flujo_aire"] > p75_aire).astype(int)
df["espumante_alto"] = (df["dosificacion_espumante"] > p75_espumante).astype(int)
df["condicion_riesgo"] = (
(df["nivel_alto"] == 1) &
(df["aire_alto"] == 1) &
(df["espumante_alto"] == 1)
).astype(int)
Calcular probabilidades
p_evento = df["evento_sobre_espumacion"].mean()
p_evento_nivel_alto = df.loc[
df["nivel_alto"] == 1,
"evento_sobre_espumacion"
].mean()
p_evento_aire_alto = df.loc[
df["aire_alto"] == 1,
"evento_sobre_espumacion"
].mean()
p_evento_espumante_alto = df.loc[
df["espumante_alto"] == 1,
"evento_sobre_espumacion"
].mean()
p_evento_condicion = df.loc[
df["condicion_riesgo"] == 1,
"evento_sobre_espumacion"
].mean()
Tabla resumen
resumen = pd.DataFrame({
"evidencia": [
"sin evidencia",
"nivel alto",
"aire alto",
"espumante alto",
"nivel + aire + espumante altos"
],
"prob_evento": [
p_evento,
p_evento_nivel_alto,
p_evento_aire_alto,
p_evento_espumante_alto,
p_evento_condicion
]
})
resumen["multiplicador_riesgo"] = resumen["prob_evento"] / p_evento
resumen
Ver funcionando código python
7. Puente Hacia Machine Learning
Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx
Bayes conecta muy bien con machine learning porque introduce una idea clave:
Regla simple vs probabilidad
Puente hacia regresión logística
features_ml = [
"flujo_aire",
"nivel_celda",
"dosificacion_espumante",
"p80",
"ph"
]
X = df[features_ml]
y = df["evento_sobre_espumacion"]
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
modelo = LogisticRegression(max_iter=1000)
modelo.fit(X_train, y_train)
probabilidades = modelo.predict_proba(X_test)[:, 1]
probabilidades[:10]
Umbrales de alerta
8. Cierre Conceptual
La inferencia bayesiana permite pasar de esta pregunta:
A esta otra:
Regístrate al boletín MathPlay
Datos, simulación, visualización, IA y tecnología aplicada a problemas reales de industria y minería.
Sin calendario fijo. Sin spam.
Listo. Te escribo cuando haya algo nuevo.
