Enfoque clase: Probabilidad y distribucion
¿Que tan frecuente es el evento y donde aparece?
Ver concepto general MathPlay →Probabilidad y distribución en flotación de cobre
Cómo medir qué tan frecuente es la sobre-espumación y qué valores del proceso son normales, altos o raros.
Idea Central
Ya vimos si la planta está estable y qué variables se mueven juntas. Ahora necesitamos una pregunta clave para construir alertas:
Antes de predecir un evento, necesitamos saber si ocurre mucho, poco o casi nunca. También necesitamos saber qué valores son normales y cuáles ya son poco frecuentes.
1. Matemática Simple
¿Qué tan posible es un evento?
Si en 100 horas hubo 12 horas con sobre-espumación, la probabilidad base es 12 %.
¿Cómo se reparten los valores?
La distribución ayuda a distinguir operación normal, valores raros y zonas de alerta.
Ejemplo visual de distribución
Percentiles
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. Preguntas De Planta Que Responde
| Pregunta | Herramienta | Interpretación |
|---|---|---|
| Qué tan frecuente es la sobre-espumación? | Probabilidad base | Riesgo histórico del evento |
| La recuperación baja es común o rara? | Histograma / percentiles | Distingue operación normal vs anormal |
| Qué nivel de celda se considera alto? | Percentil 75 o 90 | Define umbral de alerta |
| Los eventos ocurren en una zona específica? | Distribución condicionada | Compara evento vs no evento |
| Hay pocos eventos críticos? | Conteo de clases | Advierte problema de clase desbalanceada en ML |
4. Ejercicio En Clase
La pregunta de trabajo será:
Luego compararemos:
| Indicador | Sin evento | Con evento | Diferencia | Lectura |
|---|---|---|---|---|
| Recuperación | fórmula | fórmula | con - sin | Impacto en KPI |
| Nivel de celda | fórmula | fórmula | con - sin | Señal operativa |
| Flujo de aire | fórmula | fórmula | con - sin | Condición de control |
| Espumante | fórmula | fórmula | con - sin | Posible causa |
Lectura esperada: si el evento ocurre en pocas horas, pero cuando ocurre cambia la recuperación, nivel, aire y espumante, entonces el evento tiene una huella estadística.
5. Excel: Fórmulas Básicas
Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx
Hoja: Datos
Probabilidad base del evento
Frecuencia por severidad
Percentiles para umbrales
Promedios condicionados por evento
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"
)
Probabilidad base
prob_evento = df["evento_sobre_espumacion"].mean()
prob_evento
Frecuencia por severidad
df["severidad_sobre_espumacion"].value_counts(normalize=True)
Percentiles
df[[
"nivel_celda",
"flujo_aire",
"dosificacion_espumante",
"recuperacion_cu"
]].quantile([0.25, 0.50, 0.75, 0.90])
Distribución condicionada por evento
df.groupby("evento_sobre_espumacion")[
[
"recuperacion_cu",
"nivel_celda",
"flujo_aire",
"dosificacion_espumante",
"ley_relave_cu"
]
].mean()
Ver funcionando código python
7. Puente Hacia Machine Learning
Archivo de trabajo: Abre o descargue flotacion_cobre.xlsx
La probabilidad y la distribución son claves antes de entrenar un modelo.
Crear banderas basadas en percentiles
p90_nivel = df["nivel_celda"].quantile(0.90)
p75_espumante = df["dosificacion_espumante"].quantile(0.75)
df["nivel_muy_alto"] = (df["nivel_celda"] > p90_nivel).astype(int)
df["espumante_alto"] = (df["dosificacion_espumante"] > p75_espumante).astype(int)
Preparar variables para ML
features_ml = [
"flujo_aire",
"nivel_celda",
"dosificacion_espumante",
"nivel_muy_alto",
"espumante_alto"
]
X = df[features_ml]
y = df["evento_sobre_espumacion"]
Clasificador posterior
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, confusion_matrix
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)
pred = modelo.predict(X_test)
print(confusion_matrix(y_test, pred))
print(classification_report(y_test, pred))
Ver funcionando código python
8. Cierre Conceptual
La probabilidad y la distribución permiten 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.
