1 puntos por GN⁺ 2025-11-28 | 1 comentarios | Compartir por WhatsApp
  • Introducción a cómo implementar control estadístico de procesos (SPC) en Python para identificar la variación temporal de la calidad del producto y los momentos de intervención
  • Uso de pandas, plotnine y scipy para procesamiento de datos, visualización y cálculos estadísticos
  • Con datos de aguas termales de la prefectura de Kagoshima, Japón, se analizan temperatura, pH y contenido de azufre como indicadores de control de calidad
  • Uso de estadísticas de subgrupos y gráficos de control (X-bar, S y rango móvil) para evaluar la estabilidad del proceso y detectar valores atípicos
  • Se presenta un procedimiento para diagnosticar visualmente el estado del proceso y apoyar decisiones de mejora basadas en datos

Resumen del control estadístico de procesos con Python

  • El control estadístico de procesos (SPC) es un enfoque estadístico para medir la variación de la calidad del producto y decidir cuándo intervenir
    • En Python, se usa plotnine para visualización, pandas para manipulación de datos y scipy para cálculos estadísticos
  • En la práctica, se aplican los conceptos de SPC mediante un caso de control de calidad de aguas termales
    • Se establecen como principales indicadores de calidad la temperatura, el pH y el contenido de azufre de las aguas termales

Paquetes y funciones definidas por el usuario

  • Paquetes necesarios: pandas, plotnine, scipy
  • Las funciones definidas por el usuario se importan desde el directorio functions/ del repositorio de GitHub
    • functions_distributions.py: funciones de confiabilidad y distribuciones
    • functions_process_control.py: funciones para control de procesos
  • Se agrega el directorio de funciones a la ruta de Python con sys.path.append('functions') y luego se hace import

Caso: control de calidad de aguas termales en Japón

  • Los onsen de Japón son un recurso turístico clave para la economía regional, y la temperatura, el pH y el contenido de azufre son criterios de calidad
    • Criterio de temperatura: Extra Hot(>42°C), Hot(41~34°C), Warm(33~25°C)
    • Criterio de pH: Acidic(pH<3) ~ Alkaline(pH>8.5)
    • Criterio de azufre: se clasifica como aguas termales sulfurosas cuando es de 1mg/kg o más
  • Se analizan variaciones de calidad con datos de aguas termales de la prefectura de Kagoshima muestreados 20 veces al mes durante 15 meses

Carga de datos y estadísticas básicas

  • Se carga el archivo onsen.csv para revisar los datos de temperatura, pH y contenido de azufre
  • Con la función describe() se calculan la media (mean) y la desviación estándar (sd)
    • Resultado de ejemplo: media de 44.85°C, desviación estándar de 1.99°C
  • Estos valores estadísticos son indicadores básicos para entender el centro y la variabilidad del proceso

Visualización general del proceso

  • Con plotnine se visualiza la distribución de temperatura en el tiempo mediante diagramas de caja (boxplot) y distribución de puntos
    • La línea central representa la media total y permite comparar la distribución en cada momento
  • Un histograma muestra la distribución total de la temperatura para verificar el centro del proceso y el rango de variación

Cálculo de estadísticas de subgrupos

  • Agrupando cada momento (time) como subgrupo, se calculan la media (xbar), el rango (r) y la desviación estándar (sd)
    • Ejemplo: media del primer grupo de 44.635°C, rango de 4.2°C
  • Se calculan σₛ (desviación estándar dentro del subgrupo) y el error estándar (se) para establecer límites superior e inferior (±3σ)
  • Con ello se evalúa la estabilidad temporal del proceso

Estadísticas del proceso completo

  • Integrando todos los grupos, se calculan la media total (xbbar), el rango promedio (rbar) y la desviación estándar promedio (sdbar)
    • Ejemplo: xbbar 44.85, rbar 7.26, sdbar 1.94
  • Comparándolo con σₜ (desviación estándar total), se puede identificar la variabilidad dentro y entre procesos

Gráficos de control (X-bar y S)

  • Gráfico X-bar: muestra la media de cada subgrupo sobre el eje temporal
    • Línea central: media total; límites superior e inferior: ±3σ
    • El área sombreada representa el rango de límites de control
  • Si se superan los límites de control o aparecen patrones no aleatorios, existe posibilidad de anomalías en el proceso

Revisión de aprendizaje: visualización del proceso de pH

  • Con la misma función ggprocess() se genera un gráfico general del proceso para los datos de pH
    • Se comparan visualmente la línea de la media y la distribución en cada momento

Gráfico de rango móvil (n=1)

  • Cuando solo hay mediciones individuales, se usa el rango móvil (Moving Range)
    • Se calcula la diferencia absoluta entre mediciones consecutivas para estimar la variabilidad
  • Se calculan el rango móvil promedio (mrbar), el límite superior (upper) y el límite inferior (lower=0)
  • El gráfico de rango móvil es útil para monitorear la variación del proceso con base en datos individuales

Conclusión

  • Con Python se generan una vista general del proceso, estadísticas de subgrupos y gráficos de rango móvil
  • Con herramientas de SPC es posible diagnosticar visualmente la estabilidad y la presencia de anomalías del proceso
  • Este tipo de análisis puede aprovecharse para la mejora de la calidad y la toma de decisiones basada en datos

1 comentarios

 
GN⁺ 2025-11-28
Opiniones en Hacker News
  • Me recordó a un proyecto anterior
    En una empresa FANG, reemplazamos con éxito miles de detectores de anomalías de series temporales basados en deep learning por modelos de control estadístico de procesos (no paramétricos y semiparamétricos)
    El nuevo modelo tenía entre 3 y 4 órdenes de magnitud menos parámetros de entrenamiento, y era lo bastante simple como para que un equipo de 3 o 4 personas pudiera administrar miles de flujos
    Los modelos de deep learning eran opacos para depurar e interpretar, así que eran demasiado difíciles de mantener
    Si tienes un equipo pequeño, sigo recomendando fuertemente un enfoque basado en estadística
    Eso sí, por razones políticas, quizá no sea una buena decisión para tu carrera. A quienes hicieron apuestas enormes no les gusta que aparezca evidencia en contra

    • Gracias por compartir una experiencia tan genial
      Por eso soy escéptico con el actual ambiente de hype por la IA
      En muchos casos, los métodos clásicos existentes son mucho más estables y eficientes, así que no entiendo por qué las empresas eligen a propósito métodos complejos e inestables
    • Mi primer cambio de carrera fue parecido
      La empresa presumía modelos de ML muy vistosos para conferencias, pero los operadores reales se quejaban mucho por la falta de precisión e interpretabilidad
      Así que reescribí el código basándome en las reglas matemáticas simples que los operadores usaban de verdad, y obtuvimos resultados mucho mejores
    • Como ingeniero de visión artificial en la industria de semiconductores, he visto mucho humo publicitario alrededor del deep learning y la IA
      Funciona bien para OCR, pero es menos efectivo para tareas de clasificación
      Muchas veces se obtienen mejores resultados si te enfocas en buena iluminación y en técnicas tradicionales de visión por computadora
      También me identifico con el problema político de adoptar tecnología. Por eso suelo proponer un enfoque híbrido que combine deep learning con visión tradicional
    • Lo confuso del deep learning es que la cantidad de señal disponible para aprender es insuficiente, pero el número de parámetros es demasiado grande
      Supongo que la mayoría de los parámetros serán inestables o estarán correlacionados entre sí
    • Me pregunto si también usaron algo como Matrix Profile. Si fue así, me gustaría saber si eso también lo reemplazaron
  • Hace tiempo obtuve la certificación Lean Six Sigma Green Belt e hice un proyecto de control estadístico de procesos con Minitab para procesos de back office en banca de inversión
    Hoy parece que nadie se acuerda de Minitab. Todos usan Python

    • Yo también obtuve el Six Sigma Green Belt con Minitab, por ahí de 2018
      Todavía se sigue actualizando y también tiene interfaz para Python → paquete mtbpy
    • El Minitab de antes tenía una caja de herramientas de SPC realmente excelente
      Las herramientas open source solo llegaban hasta x-bar/S/R, y les faltaban funciones avanzadas como análisis multivariado
    • Trabajé en una empresa que usaba JMP. Todavía me quedan recuerdos entrañables de esa época
    • Solo recuerdo que la biblioteca de mi universidad tenía un manual de Minitab
  • Hace unos años escribí una guía práctica para principiantes de SPC
    Puede servir de referencia → Statistical Process Control: A Practitioner’s Guide

  • En conjuntos de datos pequeños, como los datos clínicos, la estadística clásica sigue siendo fundamental
    Es difícil recolectar y alinear metadatos, y en estudios de enfermedades raras muchas veces incluso el machine learning o la regresión resultan complicados

  • Los datos del mundo real nunca están limpios
    La mayor parte del tiempo se va en gestión de calidad de datos
    Los valores atípicos pueden deberse a errores de medición o a cambios en el proceso, y para entenderlos hace falta intuición sobre el proceso mismo
    Por eso son importantes las herramientas maduras que permiten visualización y exploración rápidas
    Hacer directamente en código gráficos SPC de Cpk es ineficiente

  • SPC es una herramienta realmente excelente
    Es mucho más simple y funciona mejor que otros conjuntos de herramientas más complejos

  • Hay muchos errores tipográficos

  • Me gusta muchísimo el diseño y la atmósfera de la página