1 pontos por GN⁺ 2025-11-28 | 1 comentários | Compartilhar no WhatsApp
  • Introdução a como implementar controle estatístico de processos (SPC) em Python para identificar a variação temporal da qualidade do produto e os momentos de intervenção
  • Uso de pandas, plotnine e scipy para processamento de dados, visualização e cálculos estatísticos
  • Com dados de águas termais da província de Kagoshima, no Japão, análise de temperatura, pH e teor de enxofre como indicadores de controle de qualidade
  • Uso de estatísticas de subgrupos e cartas de controle (X-bar, S e amplitude móvel) para avaliar a estabilidade do processo e detectar outliers
  • Apresentação de um procedimento para diagnosticar visualmente o estado do processo e apoiar decisões de melhoria com base em dados

Visão geral do controle estatístico de processos com Python

  • O controle estatístico de processos (SPC) é uma abordagem estatística para medir a variação da qualidade do produto e decidir quando intervir
    • Em Python, plotnine é usado para visualização, pandas para manipulação de dados e scipy para cálculos estatísticos
  • Na prática, os conceitos de SPC são aplicados a um caso de controle de qualidade de água termal
    • Temperatura, pH e teor de enxofre são definidos como os principais indicadores de qualidade da fonte termal

Pacotes e funções definidas pelo usuário

  • Pacotes necessários: pandas, plotnine, scipy
  • As funções definidas pelo usuário são importadas do diretório functions/ no repositório do GitHub
    • functions_distributions.py: funções de confiabilidade e distribuições
    • functions_process_control.py: funções para controle de processos
  • O diretório de funções é adicionado ao caminho do Python com sys.path.append('functions'), e depois as funções são importadas

Caso: controle de qualidade de águas termais no Japão

  • As águas termais japonesas (onsen) são um recurso turístico central para a economia regional, e temperatura, pH e teor de enxofre são critérios de qualidade
    • Critério de temperatura: Extra Hot(>42°C), Hot(41~34°C), Warm(33~25°C)
    • Critério de pH: Acidic(pH<3) ~ Alkaline(pH>8.5)
    • Critério de enxofre: classificado como fonte termal sulfurosa quando há 1mg/kg ou mais
  • Os dados de águas termais da província de Kagoshima são amostrados 20 vezes por mês ao longo de 15 meses para analisar a variação da qualidade

Carregamento dos dados e estatísticas básicas

  • O arquivo onsen.csv é carregado para verificar os dados de temperatura, pH e teor de enxofre
  • A função describe() é usada para calcular a média (mean) e o desvio padrão (sd)
    • Exemplo de resultado: média de 44.85°C, desvio padrão de 1.99°C
  • Esses valores estatísticos são indicadores básicos para entender o centro e a variabilidade do processo

Visualização geral do processo

  • Com plotnine, a distribuição da temperatura ao longo do tempo é visualizada com boxplots e distribuição de pontos
    • A linha central mostra a média geral, permitindo comparar a distribuição em cada momento
  • Um histograma exibe a distribuição total da temperatura para verificar o centro do processo e a amplitude da variação

Cálculo das estatísticas de subgrupos

  • Cada ponto no tempo (time) é agrupado como um subgrupo para calcular média (xbar), amplitude (r) e desvio padrão (sd)
    • Exemplo: média do primeiro grupo de 44.635°C, amplitude de 4.2°C
  • σₛ (desvio padrão dentro do subgrupo) e o erro padrão (se) são calculados para definir os limites superior e inferior (±3σ)
  • Isso permite avaliar a estabilidade temporal do processo

Estatísticas do processo como um todo

  • Integrando todos os grupos, são calculados média global (xbbar), amplitude média (rbar) e desvio padrão médio (sdbar)
    • Exemplo: xbbar 44.85, rbar 7.26, sdbar 1.94
  • A comparação com σₜ (desvio padrão total) permite entender a variabilidade dentro e entre os processos

Cartas de controle (X-bar e S)

  • Carta X-bar: exibe as médias de cada subgrupo no eixo do tempo
    • Linha central: média global; limites superior e inferior: ±3σ
    • A área sombreada representa a faixa dos limites de controle
  • Se houver pontos fora dos limites de controle ou padrões não aleatórios, há possibilidade de anomalias no processo

Verificação do aprendizado: visualização do processo de pH

  • Com a mesma função ggprocess(), é gerado um gráfico de visão geral do processo para os dados de pH
    • A linha da média e as distribuições por momento são comparadas visualmente

Carta de amplitude móvel (n=1)

  • Quando há apenas medições individuais, usa-se a amplitude móvel (Moving Range)
    • A diferença absoluta entre medições consecutivas é calculada para estimar a variabilidade
  • São calculados a amplitude móvel média (mrbar), o limite superior (upper) e o limite inferior (lower=0)
  • A carta de amplitude móvel é útil para monitorar a variação do processo com base em dados individuais

Conclusão

  • Com Python, é possível gerar visão geral do processo, estatísticas de subgrupos e carta de amplitude móvel
  • As ferramentas de SPC permitem diagnosticar visualmente a estabilidade do processo e a presença de anomalias
  • Esse tipo de análise pode ser aplicado à melhoria da qualidade e à tomada de decisão com base em dados

1 comentários

 
GN⁺ 2025-11-28
Comentários no Hacker News
  • Isso me lembrou de um projeto antigo
    Conseguimos substituir milhares de detectores complexos de anomalia em séries temporais baseados em deep learning em uma empresa FANG por modelos de controle estatístico de processo (não paramétricos e semiparamétricos)
    Os novos modelos tinham de 3 a 4 ordens de magnitude menos parâmetros de treinamento e eram simples o bastante para que uma equipe de 3 a 4 pessoas gerenciasse milhares de fluxos
    Os modelos de deep learning eram opacos para depuração e interpretação, então eram difíceis demais de manter
    Para equipes pequenas, eu ainda recomendo fortemente uma abordagem baseada em estatística
    Dito isso, por motivos políticos, esse tipo de escolha talvez não seja bom para a carreira. Quem fez apostas enormes não gosta quando aparecem evidências contrárias

    • Obrigado por compartilhar uma experiência tão bacana
      É por isso que sou cético em relação ao atual clima de euforia com IA
      Em muitos casos, os métodos clássicos existentes são muito mais estáveis e eficientes, então não entendo por que as empresas insistem em escolher métodos complexos e instáveis
    • Minha primeira mudança de carreira também foi parecida
      A empresa exibiu modelos de ML impressionantes para conferências, mas os operadores reais reclamavam muito da falta de precisão e interpretabilidade
      Então reescrevi o código com base em regras matemáticas simples que os operadores realmente usavam, e obtive resultados muito melhores
    • Como engenheiro de visão computacional no setor de semicondutores, já vi muito hype em torno de deep learning e IA
      Funciona bem para OCR, mas é menos eficaz em tarefas de classificação
      Muitas vezes, focar em boa iluminação e em técnicas tradicionais de visão computacional produz resultados melhores
      Também me identifico com a questão política da adoção de tecnologia. Por isso, costumo propor uma abordagem híbrida que combina deep learning com visão tradicional
    • O que torna deep learning confuso é que há pouco sinal para aprender, mas parâmetros demais
      Parece que a maioria dos parâmetros é instável ou correlacionada entre si
    • Fiquei curioso se vocês também usaram algo como Matrix Profile. Se sim, queria saber se isso também foi substituído
  • Antigamente tirei a certificação Lean Six Sigma Green Belt e fiz um projeto de controle estatístico de processo com Minitab para processos de back office de banco de investimento
    Hoje em dia parece que ninguém mais se lembra do Minitab. Todo mundo só usa Python

    • Eu também tirei o Six Sigma Green Belt com Minitab por volta de 2018
      Ele ainda é atualizado e também tem interface com Python → mtbpy package
    • O Minitab antigo tinha uma caixa de ferramentas de SPC realmente excelente
      As ferramentas open source só iam até x-bar/S/R, e faltavam recursos avançados como análise multivariada
    • Já trabalhei em uma empresa que usava JMP. Ainda guardo boas lembranças daquela época
    • Só me lembro de haver um manual do Minitab na biblioteca da nossa universidade
  • Escrevi um guia prático para iniciantes em SPC alguns anos atrás
    Pode ser útil → Statistical Process Control: A Practitioner’s Guide

  • Em conjuntos de dados pequenos, como dados clínicos, a estatística clássica continua sendo essencial
    É difícil coletar e harmonizar metadados, e em pesquisas sobre doenças raras muitas vezes até machine learning ou regressão se tornam inviáveis

  • Dados do mundo real nunca são limpos
    A maior parte do tempo é gasta em controle de qualidade dos dados
    Outliers podem vir de erro de medição ou de mudança no processo, e para entender isso é preciso ter intuição sobre o próprio processo
    Por isso, ferramentas maduras que permitam visualização e exploração rápidas são importantes
    Criar manualmente em código um gráfico SPC Cpk é ineficiente

  • SPC é realmente uma ferramenta excelente
    É muito mais simples e funciona muito melhor do que outros conjuntos de ferramentas mais complexos

  • Tem muitos erros de digitação

  • Gosto muito do design e da atmosfera da página