Controle Estatístico de Processos: Análise da Capacidade de Processos e Sistemas de Medida

Baseado no Capítulo 8 — Montgomery, D. C. (2017)

Prof. Marcelo R.P. Ferreira

DE-UFPB - Bacharelado em Estatística e Ciência de Dados

julho, 2026

Análise da Capacidade de Processos e Sistemas de Medida

Um processo sob controle nos diz que ele é estável — a capacidade nos diz se essa estabilidade basta para satisfazer o cliente.

Mapa do Capítulo 8

Capítulo 8 — Capacidade Histograma / Prob. Plot Forma, centralização Razões: Cp, Cpk, Cpm + Intervalos de Confiança Gráfico de Controle / DOE R-bar/d2, causas raiz Dados de Atributo Gage R&R Tolerâncias em Componentes Limites Naturais de Tolerância

Agenda

  • Histograma, gráfico de probabilidade e a noção de capacidade de processo
  • Razões de capacidade: \(C_p\), \(C_{pu}\)/\(C_{pl}\), \(C_{pk}\) e \(C_{pm}\) (Exemplos 8.1 e do anel de pistão)
  • Capacidade em ppm; sensibilidade à não normalidade; abordagem por quantis
  • Intervalos de confiança para \(C_p\) e \(C_{pk}\) (Exemplos 8.4 e 8.5)
  • Capacidade via gráfico de controle (\(\bar R/d_2\)), DOE e dados de atributo
  • Gage R&R: repetitividade, reprodutibilidade, razão \(P/T\) e ANOVA do medidor
  • Fixação de limites de especificação sobre componentes (empilhamento de tolerâncias)
  • Limites Naturais de Tolerância (LNT)

Configuração do Ambiente em R

library(ggplot2)
library(qcc)
library(patchwork)

pal <- c(azul   = "#7ecff7",
         verde  = "#4f9d6e",
         ambar  = "#f7c87e",
         roxo   = "#c87ef7",
         coral  = "#f07050",
         neutro = "#aab4c8")

tema_cep <- function(base_size = 13) {
  theme_minimal(base_size = base_size) +
    theme(plot.title = element_text(face = "bold"),
          panel.grid.minor = element_blank())
}

plot_carta <- function(stat, center, lic, lsc, titulo, ylab = "Estatistica") {
  df <- data.frame(t = seq_along(stat), y = stat)
  df$fora <- df$y > lsc | df$y < lic
  ggplot(df, aes(t, y)) +
    geom_line(color = pal["neutro"], linewidth = .6) +
    geom_point(aes(color = fora), size = 2.6) +
    scale_color_manual(values = c(`FALSE` = unname(pal["azul"]),
                                   `TRUE`  = unname(pal["coral"])), guide = "none") +
    geom_hline(yintercept = c(lsc, center, lic),
               color = c(pal["coral"], pal["verde"], pal["coral"]),
               linetype = c("dashed", "solid", "dashed"), linewidth = .8) +
    labs(title = titulo, x = "Amostra", y = ylab) +
    tema_cep()
}

O Que é Análise da Capacidade de um Processo?

  • É um estudo de engenharia para estimar a capacidade natural de um processo
  • Avalia a uniformidade do processo, medindo sua variabilidade inerente em relação aos requisitos do produto
  • O processo deve estar estável (sob controle estatístico) para que a análise tenha validade
  • Sem estabilidade, as estimativas de variância refletem causas atribuíveis e não a verdadeira capacidade intrínseca do processo

Ferramentas Básicas para Análise de Capacidade

  • As técnicas mais fundamentais incluem gráficos de controle, histogramas e gráficos de probabilidade
  • Um gráfico de controle deve sempre preceder a avaliação da capacidade, para garantir a ausência de causas atribuíveis
  • O histograma permite uma visualização imediata da forma da distribuição, centralização e dispersão dos dados
  • O gráfico de probabilidade ajuda a validar os pressupostos distributivos (como a Normalidade) exigidos pelos índices de capacidade

Análise da Capacidade Utilizando o Histograma

  • O histograma exibe a distribuição empírica da característica da qualidade
  • Exige uma amostra de tamanho razoável: recomenda-se pelo menos 100 observações para estabilidade visual
  • Permite observar instantaneamente se o processo está centrado entre os limites de especificação
  • Junto com a média amostral (\(\bar{x}\)) e o desvio-padrão amostral (\(s\)), fornece a base para inferências de tolerância
  • Tolerância natural estimada: \(\text{LNT} = \bar{x} \pm 3s\) (cobre cerca de 99,73% das observações, se a distribuição for Normal)

Visualização de Desempenho com Histograma

  • O histograma mapeia a frequência em classes, evidenciando o comportamento da característica da qualidade
  • Barras que ultrapassam os limites de especificação representam a fração de itens não conformes
Clique para ver o código
set.seed(42)
dados_demo <- data.frame(x = rnorm(300, mean = 50, sd = 3))
LIE_demo <- 42; LSE_demo <- 58

ggplot(dados_demo, aes(x = x)) +
  geom_histogram(aes(fill = after_stat(x) < LIE_demo | after_stat(x) > LSE_demo),
                  bins = 25, color = "black") +
  scale_fill_manual(values = c(`FALSE` = unname(pal["azul"]), `TRUE` = unname(pal["coral"])),
                     guide = "none") +
  geom_vline(xintercept = c(LIE_demo, LSE_demo), color = pal["coral"],
             linetype = "dashed", linewidth = 1) +
  labs(title = "Histograma com Limites de Especificacao (LIE / LSE)",
       x = "Caracteristica da qualidade", y = "Frequencia") +
  tema_cep()

Exemplo 8.1 — Capacidade com um Histograma

Considere a análise da resistência à ruptura de 100 garrafas de vidro. Qual é a capacidade do processo, visualizada em um histograma? Do livro, \(\bar{x} = 264{,}06\) e \(s = 32{,}02\) psi.

Clique para ver o código
set.seed(42)
dados_garrafas <- data.frame(Resistencia = rnorm(100, mean = 264.06, sd = 32.02))

ggplot(dados_garrafas, aes(x = Resistencia)) +
  geom_histogram(color = "black", fill = pal["azul"], bins = 15) +
  geom_vline(xintercept = mean(dados_garrafas$Resistencia),
             color = pal["verde"], linewidth = 1) +
  labs(title = "Histograma de Resistencia a Ruptura (Exemplo 8.1)",
       x = "Resistencia (psi)", y = "Frequencia") +
  tema_cep()

Exemplo 8.1 — Capacidade com um Histograma

cat(sprintf("x_barra = %.2f | s = %.2f | LNT = x_barra +/- 3s = [%.1f, %.1f]\n",
            mean(dados_garrafas$Resistencia), sd(dados_garrafas$Resistencia),
            mean(dados_garrafas$Resistencia) - 3*sd(dados_garrafas$Resistencia),
            mean(dados_garrafas$Resistencia) + 3*sd(dados_garrafas$Resistencia)))
x_barra = 265.10 | s = 33.34 | LNT = x_barra +/- 3s = [165.1, 365.1]

A forma do histograma sugere Normalidade: cerca de 99,73% das garrafas devem romper entre 168 e 360 psi — uma estimativa de capacidade independente de qualquer especificação do cliente.

Análise Utilizando o Gráfico de Probabilidade

  • O histograma apenas sugere a forma; o gráfico de probabilidade (Q-Q plot) é um teste visual mais rigoroso
  • Se o modelo paramétrico (ex.: Normal) for adequado, os dados plotados se alinharão aproximadamente em uma reta
  • Desvios acentuados da reta nas caudas indicam não normalidade, invalidando o uso de índices como o \(C_p\) padrão
  • Pode ser usado não só com a Normal, mas também com Lognormal, Weibull, etc.

Avaliação de Normalidade no R

Validando a premissa de distribuição Normal para a resistência das garrafas de vidro (Exemplo 8.1).

ggplot(dados_garrafas, aes(sample = Resistencia)) +
  stat_qq(color = pal["azul"]) +
  stat_qq_line(color = pal["coral"], linetype = "dashed") +
  labs(title = "Grafico de Probabilidade Normal (Q-Q Plot)",
       x = "Quantis teoricos", y = "Quantis amostrais") +
  theme_classic()

Os pontos se alinham razoavelmente bem com a reta de referência, sustentando a suposição de Normalidade usada nos índices de capacidade que seguem.

Razões da Capacidade de um Processo (\(C_p\))

  • O histograma mostra os dados; as razões de capacidade resumem o desempenho em um único número (adimensional)
  • O índice de capacidade do processo (\(C_p\)), proposto por Juran (1974), compara o corredor tolerado pelo cliente com a variação intrínseca da máquina
  • Variação intrínseca = \(6\sigma\) (largura natural da curva Normal, que abrange 99,73% da produção)

A Formulação do Índice \(C_p\)

Relaciona a Largura de Especificação (LSE − LIE), a Tolerância Especificada (TE), com o espalhamento estatístico \(6\sigma\), a Tolerância Natural (TN) do processo:

\[C_p = \frac{LSE - LIE}{6\hat{\sigma}} = \frac{TE}{TN}\]

  • \(C_p < 1\): a tolerância natural é maior que a especificada — situação preocupante
  • \(C_p = 1\): tolerância natural igual à especificada — processo no limite, precisa melhorar
  • \(C_p > 1\): tolerância natural menor que a especificada — situação desejável

Razões de Capacidade para Especificações Unilaterais

  • Muitos produtos têm apenas limite superior (ex.: tempo de falha) ou inferior (ex.: resistência à tração)
  • Nestes casos, o divisor passa a ser \(3\sigma\), medindo do centro até a única barreira existente:

\[C_{pu} = \frac{LSE - \mu}{3\hat{\sigma}} \qquad \text{(limite superior)}\]

\[C_{pl} = \frac{\mu - LIE}{3\hat{\sigma}} \qquad \text{(limite inferior)}\]

Interpretando o \(C_p\): Percentual da Faixa Utilizada

Outra interpretação útil obtida a partir de \(C_p\) é o percentual da faixa de especificação efetivamente utilizado pelo processo:

\[P_p = \left(\frac{1}{C_p}\right) \times 100\%\]

  • Quanto menor \(P_p\), mais “folga” o processo tem dentro da especificação
  • Veremos a seguir um exemplo clássico (anel de pistão) onde \(C_p = 1{,}68\) implica \(P_p \approx 59{,}5\%\)

Interpretando o \(C_p\) em Fração de Refugo (ppm)

O \(C_p\) tem um vínculo direto com Peças Por Milhão (ppm) defeituosas, assumindo Normalidade, processo sob controle e média centrada entre LSE e LIE:

\(C_p\) ppm (unilateral) ppm (bilateral)
0,50 66.807 133.614
0,70 17.865 35.729
0,90 3.467 6.934
1,00 1.350 2.700
1,20 159 318
1,33 48 96
1,50 4 7
1,60 1 2
2,00 0,0009 0,0018

Exemplo — Razão de Capacidade do Anel de Pistão

Especificação do diâmetro: \(74{,}00 \pm 0{,}05\) mm. Do gráfico \(\bar{x}\)/\(R\) do processo (sob controle), estima-se \(\hat\sigma = \bar{R}/d_2 = 0{,}0099\).

LSE_anel <- 74.05; LIE_anel <- 73.95
sigma_anel <- 0.0099

Cp_anel <- (LSE_anel - LIE_anel) / (6 * sigma_anel)
Pp_anel <- (1 / Cp_anel) * 100

cat(sprintf("Cp = %.2f\n", Cp_anel))
Cp = 1.68
cat(sprintf("Pp = %.1f%% da faixa de especificacao utilizada\n", Pp_anel))
Pp = 59.4% da faixa de especificacao utilizada

\(C_p > 1\) indica situação desejável: o processo utiliza apenas cerca de 60% da faixa de especificação disponível.

Calculando \(C_p\) no R (Caso Genérico)

Um processo possui média \(\mu=50\) e desvio-padrão estimado \(\hat{\sigma}=2\). Os limites do cliente são \(LSE=58\) e \(LIE=42\). Calcule o \(C_p\).

LSE <- 58
LIE <- 42
sigma_est <- 2

Cp <- (LSE - LIE) / (6 * sigma_est)
cat(sprintf("O indice Cp do processo e: %.2f\n", Cp))
O indice Cp do processo e: 1.33

Interpretação: \(C_p = 1{,}33\) indica um processo capaz, com folga confortável dentro dos limites especificados.

Calculando Fração Não Conforme (Refugo) no R

Com os dados do slide anterior (\(\mu=50, \sigma=2, LIE=42, LSE=58\)), encontre o percentual exato de itens fora da especificação utilizando a distribuição Normal cumulativa.

mu <- 50; sigma <- 2; LIE2 <- 42; LSE2 <- 58

p_abaixo <- pnorm(LIE2, mean = mu, sd = sigma)
p_acima  <- 1 - pnorm(LSE2, mean = mu, sd = sigma)
refugo_total <- (p_abaixo + p_acima) * 1e6

cat(sprintf("Refugo estimado: %.2f ppm\n", refugo_total))
Refugo estimado: 63.34 ppm

Esse valor é coerente com a tabela de ppm associada a \(C_p = 1{,}33\) vista anteriormente.

Processos Descentrados: O Índice \(C_{pk}\)

  • O índice \(C_p\) assume que a média do processo \(\mu\) está exatamente no meio de LSE e LIE
  • Se a máquina deslizar para o lado (descentramento), o refugo aumenta de um lado, mas o \(C_p\) bruto não se altera
  • Kane (1986) propõe uma medida que penaliza esse desvio em relação à posição central: o \(C_{pk}\)

A Formulação do Índice \(C_{pk}\)

O \(C_{pk}\) considera o pior cenário entre as distâncias unilaterais até as especificações extremas:

\[C_{pk} = \min(C_{pu}, C_{pl}) = \min \left[ \frac{LSE - \mu}{3\hat{\sigma}},\; \frac{\mu - LIE}{3\hat{\sigma}} \right]\]

  • Sempre obedece à regra \(C_{pk} \le C_p\)
  • Se \(C_p = C_{pk}\), o processo está centrado no ponto médio das especificações
  • Se a média encostar no limite da especificação, \(C_{pk} = 0\); se ultrapassar, \(C_{pk} < 0\)

Dinâmica Visual do \(C_p\) vs \(C_{pk}\)

A diferença entre \(C_p\) e \(C_{pk}\) quantifica exatamente o grau de falta de centralização da máquina (relação clássica de Montgomery, Figura 8.8):

Caso \(\sigma\) \(C_p\) \(C_{pk}\) Situação
(a) 2 2,0 2,0 Centrado
(b) 2 2,0 1,5 Levemente descentrado
(c) 2 2,0 1,0 Descentrado
(d) 2 2,0 0,0 Média no limite
(e) 2 2,0 −0,5 Média fora da especificação

Dinâmica Visual do \(C_p\) vs \(C_{pk}\)

Clique para ver o código
LIE_v <- 38; LSE_v <- 62; sigma_v <- 2
medias_v <- c(50, 53, 56, 59, 62)
casos_v <- c("(a)", "(b)", "(c)", "(d)", "(e)")
x_grid <- seq(30, 75, length.out = 400)

df_v <- do.call(rbind, lapply(seq_along(medias_v), function(i) {
  data.frame(x = x_grid, y = dnorm(x_grid, medias_v[i], sigma_v), caso = casos_v[i])
}))

ggplot(df_v, aes(x, y, color = caso)) +
  geom_line(linewidth = 1) +
  geom_vline(xintercept = c(LIE_v, LSE_v), color = pal["coral"], linetype = "dashed") +
  scale_color_manual(values = c(unname(pal["azul"]), unname(pal["verde"]), unname(pal["ambar"]),
                                 unname(pal["roxo"]), unname(pal["coral"]))) +
  labs(title = "Relacao entre Cp e Cpk para diferentes graus de descentramento",
       x = "Caracteristica da qualidade", y = "Densidade", color = "Caso") +
  tema_cep()

Computando o \(C_{pk}\) no R usando qcc — Simulação

Simulando um processo descentrado (média \(\approx 54\)) num corredor (42 a 58) com desvio \(\approx 2\).

set.seed(9)
dados_descentrados <- matrix(rnorm(100, mean = 54, sd = 2), ncol = 5)
q_desc <- qcc(dados_descentrados, type = "xbar", plot = FALSE)
  • O processo foi gerado com média deslocada para 54, dentro do corredor (42, 58), mas próxima do limite superior
  • A primeira etapa é sempre obter o objeto qcc (Fase I), que armazena a média geral, o desvio-padrão estimado e os limites de controle do gráfico \(\bar{x}\)
  • Esse objeto será passado para process.capability(), que calcula a penalidade automaticamente

Computando o \(C_{pk}\) no R usando qcc — Resultado

cap_desc <- process.capability(q_desc, spec.limits = c(42, 58))

Process Capability Analysis

Call:
process.capability(object = q_desc, spec.limits = c(42, 58))

Number of obs = 100          Target = 50
       Center = 53.89           LSL = 42
       StdDev = 1.958           USL = 58

Capability indices:

       Value    2.5%   97.5%
Cp    1.3618  1.1723  1.5510
Cp_l  2.0245  1.7816  2.2674
Cp_u  0.6991  0.6007  0.7975
Cp_k  0.6991  0.5819  0.8164
Cpm   0.6119  0.4984  0.7252

Exp<LSL 0%   Obs<LSL 0%
Exp>USL 1.8%     Obs>USL 2%
cat(sprintf("Cp = %.2f | Cpk = %.2f\n",
            cap_desc$indices["Cp", "Value"], cap_desc$indices["Cp_k", "Value"]))
Cp = 1.36 | Cpk = 0.70

O \(C_{pk}\) tende a cair bem abaixo do \(C_p\), revelando o problema de descentramento (média próxima ao limite superior).

Sensibilidade à Não Normalidade

  • O uso de \(C_p\) e \(C_{pk}\) é fundamentado na integração das caudas da distribuição Normal
  • Se a característica subjacente for fortemente assimétrica (ex.: distribuição Lognormal de partículas), as frações de ppm assumidas estarão erradas
  • Somerville e Montgomery (1996) investigaram justamente o impacto da não normalidade sobre os valores tabelados de ppm
  • O cientista de dados deve transformar a variável (Box-Cox) ou utilizar índices baseados nos verdadeiros quantis da distribuição subjacente

Abordagem de Quantis para Dados Não Normais

Se a distribuição é assimétrica, abandonamos o multiplicador fixo \(6\sigma\) e lemos as distâncias diretas dos percentis 0,135% e 99,865%:

\[C_p(q) = \frac{LSE - LIE}{x_{0,99865} - x_{0,00135}}\]

  • Se a distribuição fosse exatamente Normal, esse denominador resultaria em \(6\sigma\) de qualquer forma

Calculando \(C_p\) por Quantis no R

Uma contagem de contaminações gera dados Exponenciais (\(\lambda=0{,}1\)). LSE é 40 e LIE é 0. Avalie a capacidade verdadeira sem assumir Normalidade.

taxa <- 0.1
LSE_q <- 40; LIE_q <- 0

q_superior <- qexp(0.99865, rate = taxa)
q_inferior <- qexp(0.00135, rate = taxa)

Cp_quantil <- (LSE_q - LIE_q) / (q_superior - q_inferior)
cat(sprintf("Cp verdadeiro via quantis: %.3f\n", Cp_quantil))
Cp verdadeiro via quantis: 0.605

Use sempre essa abordagem quando o gráfico de probabilidade indicar desvio sério de Normalidade.

Foco Absoluto no Alvo: O Índice \(C_{pm}\)

  • A filosofia de Taguchi sugere que a perda econômica não começa apenas quando a peça ultrapassa LSE/LIE
  • A perda aumenta quadraticamente à medida que o processo se afasta do Alvo (\(T\))
  • \(C_{pk}\) tenta punir desvios de alvo, mas foca nas barreiras, não no centro ideal
  • Chan, Cheng e Spiring (1988) propõem o \(C_{pm}\), que incorpora diretamente esse afastamento

Formulação do \(C_{pm}\)

\[C_{pm} = \frac{LSE - LIE}{6\sqrt{\sigma^2 + (\mu - T)^2}}\]

  • O denominador incorpora \(E\left[(X-T)^2\right] = \sigma^2 + (\mu - T)^2\)
  • Se a média colapsar no alvo puro (\(\mu = T\)), o termo \((\mu - T)\) desaparece e \(C_{pm}\) se reduz ao clássico \(C_p\)
  • Estimador prático: \(\hat{C}_{pm} = \dfrac{\hat{C}_p}{\sqrt{1 + V^2}}\), em que \(V = (\bar{x} - T)/\hat\sigma\)

Calculando \(C_{pm}\) via Funções no R

Máquina tem média 52 e \(\sigma=2\). A engenharia definiu o alvo \(T=50\). Especificações: 40 e 60. Compare \(C_p\) com \(C_{pm}\).

mu_pm <- 52; sigma_pm <- 2; alvo_T <- 50
LSE_pm <- 60; LIE_pm <- 40

Cp_pm <- (LSE_pm - LIE_pm) / (6 * sigma_pm)
tau_estimado <- sqrt(sigma_pm^2 + (mu_pm - alvo_T)^2)
Cpm_pm <- (LSE_pm - LIE_pm) / (6 * tau_estimado)

cat(sprintf("Cp = %.2f | Cpm (penalizado pelo alvo) = %.2f\n", Cp_pm, Cpm_pm))
Cp = 1.67 | Cpm (penalizado pelo alvo) = 1.18

Propriedades do \(C_{pm}\) (Boyles, 1991)

  • \(C_{pk}\) depende inversamente de \(\sigma\) e cresce quando \(\sigma \to 0\), mesmo que a média esteja longe do alvo — isso o torna inadequado sozinho como medida de centralização
  • Boyles (1991) demonstra formalmente que:
    • \(C_{pm} = C_{pk} = C_p\), quando \(\mu = T\)
    • \(C_{pm} \to 0\), quando \(|\mu - T| \to \infty\)
  • Recomendação prática: interpretar \(C_p\), \(C_{pk}\) e \(C_{pm}\) em conjunto, nunca isoladamente

Intervalos de Confiança para a Capacidade

  • Em Ciência de Dados, o \(C_p\) relatado é apenas uma estimativa pontual amostral \(\hat{C}_p\), sujeita a flutuação estatística
  • Deve-se prover aos gestores um Intervalo de Confiança (IC), evidenciando o quanto a métrica pode variar de verdade
  • Requer que a variável siga distribuição estritamente Normal para utilizar as aproximações assintóticas das caudas paramétricas

Intervalo de Confiança para \(C_p\)

Se a característica da qualidade segue distribuição Normal, um IC de nível \(100(1-\alpha)\%\) para \(C_p\) é obtido a partir da distribuição qui-quadrado com \(n-1\) graus de liberdade:

\[\hat{C}_p\sqrt{\frac{\chi^2_{1-\alpha/2,\,n-1}}{n-1}} \;\le\; C_p \;\le\; \hat{C}_p\sqrt{\frac{\chi^2_{\alpha/2,\,n-1}}{n-1}}\]

Exemplo 8.4: \(LSE=62\), \(LIE=38\), \(n=20\), \(s=1{,}75\). Ache um IC de 95% para \(C_p\).

Resolução do IC para \(C_p\) no R

LSE_84 <- 62; LIE_84 <- 38
n_84 <- 20; s_84 <- 1.75
alfa_84 <- 0.05

Cp_84 <- (LSE_84 - LIE_84) / (6 * s_84)

qui_inf <- qchisq(alfa_84/2, df = n_84 - 1)
qui_sup <- qchisq(1 - alfa_84/2, df = n_84 - 1)

li_84 <- Cp_84 * sqrt(qui_inf / (n_84 - 1))
ls_84 <- Cp_84 * sqrt(qui_sup / (n_84 - 1))

cat(sprintf("Cp estimado = %.2f\n", Cp_84))
Cp estimado = 2.29
cat(sprintf("IC 95%% para Cp: [%.2f, %.2f]\n", li_84, ls_84))
IC 95% para Cp: [1.56, 3.01]

O intervalo é relativamente amplo: amostras pequenas/moderadas geram considerável flutuação em \(s\), refletida em ICs largos para \(C_p\).

A Fórmula do Intervalo de Confiança para \(C_{pk}\)

A aproximação pelo Método Delta (Bissell, 1990; Zhang, Stenback e Wardrop, 1990; Kushler e Hurley, 1992) gera o IC aproximado de nível \(100(1-\alpha)\%\) (Montgomery, Eq. 8.21):

\[\hat{C}_{pk} \pm Z_{\alpha/2} \sqrt{\frac{1}{9n} + \frac{\hat{C}_{pk}^2}{2(n-1)}}\]

  • Mostra que um \(C_{pk}\) estimado de amostras pequenas é pouco informativo isoladamente

Exemplo 8.5 — Um Intervalo de Confiança para \(C_{pk}\)

Utiliza-se uma amostra de tamanho \(n = 20\) de um processo estável para estimar \(C_{pk}\), com resultado \(\hat{C}_{pk} = 1{,}33\). Ache um IC aproximado de 95% para a métrica.

  • Esse exemplo evidenciará o quanto a estimativa pontual de 1,33 pode ser enganosa isoladamente

Resolução do IC para \(C_{pk}\) no R

cpk_est <- 1.33
n_85 <- 20
z_critico <- qnorm(0.975)

erro_padr <- sqrt((1 / (9 * n_85)) + (cpk_est^2 / (2 * (n_85 - 1))))
limite_inferior <- cpk_est - z_critico * erro_padr
limite_superior <- cpk_est + z_critico * erro_padr

cat(sprintf("IC 95%% para Cpk: [%.3f, %.3f]\n", limite_inferior, limite_superior))
IC 95% para Cpk: [0.883, 1.777]

Como o limite inferior cai abaixo de 1, o processo não tem garantia de operar como Seis Sigma com base em apenas \(n=20\) amostras — a razão é o tamanho de amostra pequeno.

Análise de Capacidade por Gráfico de Controle

  • Para reportar \(C_p\) com confiança, os dados precisam ser contínuos no eixo do tempo e o processo sob Controle Estatístico
  • Gráficos \(\bar{x}\) e \(R\) resolvem isso: extraem os dados, comprovam a estabilidade do processo e fornecem a estimativa de desvio-padrão \(\bar{R}/d_2\)

Vantagens de Estimar via \(\bar{R}/d_2\)

  • O uso direto do desvio-padrão total \(s\) confunde ruído momentâneo e quebras de máquina em uma única estimativa enviesada
  • Quando usamos \(\hat{\sigma} = \bar{R}/d_2\), estamos estimando a capacidade de curto prazo, calculada a partir da variação dentro de subgrupos
  • Mostra o que a máquina faria se nenhuma causa atribuível externa a perturbasse

Capacidade no R: Dados de Anéis de Pistão — Preparação

Usando o conjunto de dados pistonrings, incluído no pacote qcc, que reproduz o exemplo clássico de Montgomery sobre o diâmetro de anéis de pistão.

data(pistonrings)
diametro <- qcc.groups(pistonrings$diameter, pistonrings$sample)
painel_anel <- qcc(diametro[1:25, ], type = "xbar", plot = FALSE)
  • qcc.groups() reorganiza os dados longos (diameter, sample) em uma matriz, com uma linha por subgrupo
  • Usamos apenas os 25 primeiros subgrupos (Fase I), garantindo que o painel represente um processo já confirmado como estável
  • O objeto painel_anel armazena a média geral, o desvio-padrão \(\bar{R}/d_2\) e os limites de controle do gráfico \(\bar{x}\)

Capacidade no R: Dados de Anéis de Pistão — Relatório

relatorio_anel <- process.capability(painel_anel, spec.limits = c(73.95, 74.05))

Process Capability Analysis

Call:
process.capability(object = painel_anel, spec.limits = c(73.95,     74.05))

Number of obs = 125          Target = 74
       Center = 74              LSL = 73.95
       StdDev = 0.009785        USL = 74.05

Capability indices:

      Value   2.5%  97.5%
Cp    1.703  1.491  1.915
Cp_l  1.743  1.555  1.932
Cp_u  1.663  1.483  1.844
Cp_k  1.663  1.448  1.878
Cpm   1.691  1.480  1.902

Exp<LSL 0%   Obs<LSL 0%
Exp>USL 0%   Obs>USL 0%
cat(sprintf("Cp = %.2f | Cpk = %.2f\n",
            relatorio_anel$indices["Cp", "Value"], relatorio_anel$indices["Cp_k", "Value"]))
Cp = 1.70 | Cpk = 1.66

Com a especificação \(74{,}00 \pm 0{,}05\) mm, o processo dos anéis de pistão apresenta capacidade elevada — consistente com o exemplo do anel de pistão visto anteriormente (\(C_p \approx 1{,}68\)).

Relatório com Alvo Definido — Cálculo

Reaproveitando o painel painel_anel (Fase I, anéis de pistão), agora informando um alvo explícito \(T=74{,}02\) mm.

relatorio_alvo <- process.capability(painel_anel, spec.limits = c(73.95, 74.05),
                                      target = 74.02)

Process Capability Analysis

Call:
process.capability(object = painel_anel, spec.limits = c(73.95,     74.05), target = 74.02)

Number of obs = 125          Target = 74.02
       Center = 74              LSL = 73.95
       StdDev = 0.009785        USL = 74.05

Capability indices:

       Value    2.5%   97.5%
Cp    1.7033  1.4914  1.9148
Cp_l  1.7433  1.5548  1.9319
Cp_u  1.6632  1.4827  1.8437
Cp_k  1.6632  1.4481  1.8783
Cpm   0.7856  0.6556  0.9154

Exp<LSL 0%   Obs<LSL 0%
Exp>USL 0%   Obs>USL 0%
  • Sem target, a função assume que o alvo é o ponto médio entre LSE e LIE
  • Ao informar target = 74.02, o alvo deixa de coincidir com o centro da especificação (\(74{,}00\))
  • Essa diferença entre alvo e centro é exatamente o que o \(C_{pm}\) penaliza

Relatório com Alvo Definido — Resultado

cat(sprintf("Cp = %.2f | Cpk = %.2f | Cpm = %.2f\n",
            relatorio_alvo$indices["Cp", "Value"], relatorio_alvo$indices["Cp_k", "Value"],
            relatorio_alvo$indices["Cpm", "Value"]))
Cp = 1.70 | Cpk = 1.66 | Cpm = 0.79

Repare como a inclusão de um alvo explícito (\(T=74{,}02\)) ativa o cálculo do \(C_{pm}\) dentro do mesmo relatório — e como ele cai em relação ao \(C_p\), refletindo o afastamento entre o alvo e o centro da especificação.

O Perigo da Máquina Fora de Controle

  • Às vezes a carta revela pontos fora dos limites \(3\sigma\) no gráfico \(\bar{x}\) ou \(R\)
  • É estatisticamente inválido estimar índices de capacidade (\(C_{pk}\)) de um processo fora de controle
  • Nestes casos, o trabalho prioritário não é calcular o índice para a diretoria, mas investigar e eliminar as causas atribuíveis (ciclo DMAIC — etapa Melhorar)

Capacidade Utilizando Experimentos Planejados (DOE)

  • Se a máquina apresenta variação alta (\(C_p < 1\)), o gráfico de controle por si só não corrige a falha estrutural
  • Para encontrar a raiz do ruído, recorre-se ao Delineamento de Experimentos (DOE)
  • Em vez de observar passivamente, o estatístico força mudanças nas variáveis do processo (pressão, temperatura) e lê os reflexos em matrizes fatoriais balanceadas

Isolando Fatores via ANOVA

Em vez de uma variância total confusa \(\sigma^2_{Total}\), o DOE e a Análise de Variância (ANOVA) decompõem o erro:

\[\sigma^2_{Total} = \sigma^2_{Temperatura} + \sigma^2_{Pressao} + \sigma^2_{ErroAleatorio}\]

  • O investimento financeiro pode então ser direcionado à variável de maior contribuição (ex.: trocar o controlador térmico) para recuperar o \(C_{pk}\)

Análise de Capacidade com Dados de Atributo

  • Quando não há régua decimal (variáveis contínuas), o setor monitora Passa/Falha (atributos), via Binomial ou Poisson
  • Não há curva de sino para encaixar limites LSE/LIE de engenharia fina
  • A capacidade é diretamente a taxa média de refugo gerada (\(\bar{p}\)) ou de defeitos (\(\bar{c}\)), extraída das cartas \(p\) ou \(c\) (vistas no Capítulo 7)

Relatório de DPMO no R (Atributos)

Um call center processou 10.000 requisições e 150 tiveram falhas ao longo do mês, com o processo estável. Extraia a capacidade Binomial.

total_inspecionado <- 10000
total_falhas <- 150

p_barra <- total_falhas / total_inspecionado
dpmo <- p_barra * 1e6

cat(sprintf("Taxa empirica p_barra = %.4f\n", p_barra))
Taxa empirica p_barra = 0.0150
cat(sprintf("Capacidade em DPMO (Defeitos por Milhao): %.0f ppm\n", dpmo))
Capacidade em DPMO (Defeitos por Milhao): 15000 ppm

Capacidade do Sistema de Medidas (Gage R&R)

  • E se a variação observada no histograma não vier do processo de fabricação, mas do instrumento de medição estar descalibrado?
  • Surge a necessidade dos estudos de Repetitividade e Reprodutibilidade do medidor (Gage R&R)
  • Auditoria estatística direta sobre o instrumento de medição e os operadores da linha

A Decomposição da Variância

Sob independência entre o sistema produtivo e o sistema de medição:

\[\sigma^2_{Total} = \sigma^2_{Produto} + \sigma^2_{Medidor}\]

  • Se o medidor (\(\sigma_{Medidor}\)) for muito ruidoso, o cientista pode rejeitar equivocadamente lotes de produtos geometricamente perfeitos

Repetitividade vs. Reprodutibilidade

O termo \(\sigma^2_{Medidor}\) é decomposto em duas frentes:

  1. Repetitividade: variação causada pelo próprio instrumento ao medir repetidamente a mesma peça
  2. Reprodutibilidade: variação causada pela diferença entre operadores que medem a mesma unidade

Gráficos de Controle para Estudos de Medidor

  • Engenheiros avaliam o instrumento extraindo \(\bar{x}\) e \(R\) de medições repetidas, feitas por múltiplos operadores, sobre as mesmas dez peças de referência
  • O gráfico \(R\) atesta a repetitividade: se a amplitude de medição sobre a mesma peça ultrapassar o LSC, o equipamento precisa de calibração
Clique para ver o código
set.seed(11)
medicoes_medidor <- matrix(rnorm(60, mean = 10, sd = 0.3), ncol = 3)
g_medidor <- qcc(medicoes_medidor, type = "R", plot = FALSE)
plot_carta(g_medidor$statistics, g_medidor$center,
           g_medidor$limits[1, "LCL"], g_medidor$limits[1, "UCL"],
           "Grafico R - Repetitividade do Medidor", ylab = "Amplitude")

Razão Precisão-para-Tolerância (P/T)

Métrica que mede quanta margem da tolerância do cliente (LSE − LIE) o medidor consome sozinho:

\[P/T = \frac{k \hat{\sigma}_{Medidor}}{LSE - LIE}\]

  • Escolhas usuais de \(k\): \(k=5{,}15\) (intervalo de tolerância de 95%/99%) ou \(k=6\) (limites naturais de tolerância)
  • Regra prática: o sistema de medição é considerado aceitável se \(P/T \le 0{,}1\) (10%) da amplitude especificada

Calculando \(P/T\) no R

LSE_pt <- 60; LIE_pt <- 18
sigma_medidor <- 0.7
k_pt <- 6

PT <- (k_pt * sigma_medidor) / (LSE_pt - LIE_pt)
cat(sprintf("Razao P/T = %.3f\n", PT))
Razao P/T = 0.100
cat(ifelse(PT <= 0.1, "Medidor adequado (P/T <= 0,1)\n",
           "Medidor inadequado: revisar instrumento ou treinamento\n"))
Medidor adequado (P/T <= 0,1)

O Avanço Computacional: A ANOVA do Medidor

  • O método clássico \(\bar{x}\)/\(R\) embute simplificações nas correlações via \(d_2\)
  • O método contemporâneo é o Modelo ANOVA de Efeitos Aleatórios multifatorial:

\[y_{ijk} = \mu + P_i + O_j + (PO)_{ij} + \epsilon_{ijk}\]

  • Isola a Peça (\(P\)), o Operador (\(O\)), a Interação (\(PO\)) e o Erro de Repetitividade (\(\epsilon\))

Implementando a Decomposição ANOVA no R — Modelo

Simulando uma avaliação cruzada do equipamento (10 peças, 3 operadores, 2 réplicas) para isolar a variância do erro de medição.

set.seed(42)
Peca <- factor(rep(1:10, each = 6))
Operador <- factor(rep(rep(1:3, each = 2), 10))
Medicao <- rnorm(60, mean = 10, sd = 2) + as.numeric(Peca) * 0.5

modelo_gage <- aov(Medicao ~ Peca + Operador + Peca:Operador)
quadro_anova <- summary(modelo_gage)[[1]]
print(round(quadro_anova, 3))
              Df  Sum Sq Mean Sq F value Pr(>F)  
Peca           9 135.902  15.100   2.649  0.022 *
Operador       2   2.210   1.105   0.194  0.825  
Peca:Operador 18  73.757   4.098   0.719  0.766  
Residuals     30 171.005   5.700                 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
  • Peca: variação entre peças — deveria ser grande (é o sinal de interesse do processo)
  • Operador: variação entre operadores — parte da reprodutibilidade
  • Peca:Operador: indica se algum operador mede peças específicas de forma diferenciada
  • Residuals: variação ao medir a mesma peça, mesmo operador, repetidamente — a repetitividade pura

Implementando a Decomposição ANOVA no R — Componentes de Variância

a <- nlevels(Peca)      # numero de pecas
b <- nlevels(Operador)  # numero de operadores
n <- 2                  # numero de replicas por celula

MS_peca     <- quadro_anova["Peca", "Mean Sq"]
MS_operador <- quadro_anova["Operador", "Mean Sq"]
MS_inter    <- quadro_anova["Peca:Operador", "Mean Sq"]
MS_erro     <- quadro_anova["Residuals", "Mean Sq"]

var_repetitividade   <- MS_erro
var_interacao        <- max(0, (MS_inter - MS_erro) / n)
var_reprodutibilidade <- max(0, (MS_operador - MS_inter) / (a * n)) + var_interacao
var_peca             <- max(0, (MS_peca - MS_inter) / (b * n))

var_medidor <- var_repetitividade + var_reprodutibilidade
var_total   <- var_medidor + var_peca

cat(sprintf("Repetitividade        = %.2f (%.1f%% do total)\n",
            var_repetitividade, 100 * var_repetitividade / var_total))
Repetitividade        = 5.70 (NA% do total)
cat(sprintf("Reprodutibilidade     = %.2f (%.1f%% do total)\n",
            var_reprodutibilidade, 100 * var_reprodutibilidade / var_total))
Reprodutibilidade     = 0.00 (NA% do total)
cat(sprintf("Variabilidade do produto (Peca) = %.2f (%.1f%% do total)\n",
            var_peca, 100 * var_peca / var_total))
Variabilidade do produto (Peca) = NA (NA% do total)
cat(sprintf("Variancia total do medidor (R&R) = %.2f (%.1f%% do total)\n",
            var_medidor, 100 * var_medidor / var_total))
Variancia total do medidor (R&R) = 5.70 (NA% do total)

Se a fração do medidor (R&R) for elevada em relação à variabilidade do produto, o instrumento — não o processo — pode estar mascarando a verdadeira capacidade.

Falsas Falhas e Falhas que Passam (Riscos)

Um medidor ruidoso distorce as decisões de qualidade:

  • Falsa falha (risco do produtor): a peça era boa (\(x\) dentro da especificação), mas o medidor reportou (\(y\)) fora — a fábrica descarta produto bom
  • Falha que passa (risco do consumidor): a peça era ruim, mas o medidor reportou dentro do túnel — um produto defeituoso chega ao cliente
  • Avaliados geometricamente integrando regiões de densidade Normal bivariada entre \(x\) (valor real) e \(y\) (valor medido)

Fixação de Limites de Especificação em Componentes

  • Concluída a avaliação do sistema de medição, passamos às interações dos componentes na montagem
  • Uma peça é fabricada em um setor e precisa se encaixar em outra peça fabricada em outro setor, formando o produto final
  • Como assinalar especificações que garantam o encaixe estatístico global, sabendo que cada peça tem variação própria e independente?

Combinações Lineares (Empilhamento de Tolerâncias)

As tolerâncias são aditivas, mas seguem a lei de propagação de variâncias (não de tolerâncias diretamente). Para uma montagem \(y = x_1 + x_2 + \dots + x_n\), com \(x_i\) independentes:

\[\mu_y = \mu_1 + \mu_2 + \dots + \mu_n\]

\[\sigma^2_y = \sigma^2_1 + \sigma^2_2 + \dots + \sigma^2_n\]

  • Erro comum: somar tolerâncias (desvios-padrão) diretamente, em vez de somar variâncias

Exemplo 8.8 — Satisfazendo o Cliente (Parte 1)

Uma montagem em cadeia consiste em quatro componentes \(x_1, x_2, x_3, x_4\), independentes:

\(x_1 \sim N(2{,}0;\ 0{,}0004)\), \(x_2 \sim N(4{,}5;\ 0{,}0009)\), \(x_3 \sim N(3{,}0;\ 0{,}0004)\), \(x_4 \sim N(2{,}5;\ 0{,}0001)\) (polegadas).

O cliente exige que a montagem total obedeça à especificação \(12{,}00 \pm 0{,}10\).

Exemplo 8.8 — Solução no R (Parte 2)

medias_88 <- c(2.0, 4.5, 3.0, 2.5)
vars_88 <- c(0.0004, 0.0009, 0.0004, 0.0001)

mu_y_88 <- sum(medias_88)
sigma_y_88 <- sqrt(sum(vars_88))

p_sucesso_88 <- pnorm(12.10, mean = mu_y_88, sd = sigma_y_88) -
                pnorm(11.90, mean = mu_y_88, sd = sigma_y_88)

cat(sprintf("mu_y = %.2f | sigma_y = %.4f\n", mu_y_88, sigma_y_88))
mu_y = 12.00 | sigma_y = 0.0424
cat(sprintf("Percentual de montagens dentro da especificacao: %.3f%%\n", p_sucesso_88 * 100))
Percentual de montagens dentro da especificacao: 98.158%

Apenas cerca de 98,17% das montagens atendem ao cliente — não é um produto Seis Sigma.

Combinações Não Lineares de Tolerâncias

  • Quando a dimensão final é uma função não linear dos componentes (ex.: folga em um conjunto eixo-mancal), usa-se uma expansão de série de Taylor de primeira ordem em torno das médias:

\[\sigma^2_y \approx \sum_{i=1}^{n} \left(\frac{\partial f}{\partial x_i}\right)^2 \sigma^2_i\]

  • Avaliada nos valores médios \(\mu_1, \mu_2, \dots, \mu_n\)
  • É a base do Exemplo 8.10 (Montgomery): montagem de eixo e mancal, em que a folga é o produto/razão de duas dimensões, não uma soma simples

Estimando Limites Naturais de Tolerância (LNT)

  • Não confundir Limite de Controle (\(\bar{x}\)), que julga o equipamento ao longo do tempo, com Limite de Tolerância Natural, que expressa a faixa de variação esperada para 1 unidade individual
  • LNT Paramétrico Normal: traçado com \(100(1-\alpha)\%\) de confiança, usando \(\bar{x} \pm Ks\), com \(K\) extraído de tabelas de fatores de tolerância
  • LNT Não Paramétrico: se a variável falha no teste de Normalidade (Box-Cox), utilizam-se ordens estatísticas de distribuição livre, exigindo tipicamente \(n > 500\)

Conclusão do Capítulo 8 e LNT no R

media_processo <- 100
s_estimado <- 2

LNT_superior <- media_processo + 3 * s_estimado
LNT_inferior <- media_processo - 3 * s_estimado

cat(sprintf("O processo produzira pecas tipicamente entre %.0f e %.0f\n",
            LNT_inferior, LNT_superior))
O processo produzira pecas tipicamente entre 94 e 106
  • Este capítulo fecha o intervalo entre o que o processo faz, estatisticamente, e o que o cliente exige
  • Sem o balizamento de métricas como \(C_p\), \(C_{pk}\), \(C_{pm}\) e Gage R&R, os gráficos de controle (Capítulos 6 e 7) operam sem referência clara de adequação ao uso

Resumo de Fórmulas — Capítulo 8

Índice Fórmula Uso
\(C_p\) \(\dfrac{LSE-LIE}{6\hat\sigma}\) Capacidade potencial (bilateral)
\(C_{pu}/C_{pl}\) \(\dfrac{LSE-\mu}{3\hat\sigma}\) / \(\dfrac{\mu-LIE}{3\hat\sigma}\) Especificação unilateral
\(C_{pk}\) \(\min(C_{pu}, C_{pl})\) Capacidade efetiva (descentramento)
\(C_{pm}\) \(\dfrac{LSE-LIE}{6\sqrt{\sigma^2+(\mu-T)^2}}\) Penaliza afastamento do alvo \(T\)
\(P/T\) \(\dfrac{k\hat\sigma_{Medidor}}{LSE-LIE}\) Capacidade do sistema de medição

Glossário Rápido de Siglas

Sigla Significado
RCP Razão da Capacidade do Processo
LSE / LIE Limite Superior/Inferior de Especificação
LNT Limite Natural de Tolerância
ppm Partes por milhão
Gage R&R Repetitividade e Reprodutibilidade do medidor
P/T Razão Precisão-para-Tolerância
DOE Delineamento de Experimentos

Exercício 8.22 — Estimativa Pontual e IC para \(C_p\)

Exercício 8.22 — Montgomery, Cap. 8

Um processo normalmente distribuído tem especificações \(LIE = 75\) e \(LSE = 85\). Uma amostra de 25 partes indica que o processo está centrado no meio da faixa de especificação e o desvio-padrão é \(s = 1{,}5\).

  1. Encontre uma estimativa pontual para \(C_p\). O processo é capaz?
  2. Encontre um intervalo de confiança de 95% para \(C_p\). Comente sobre a amplitude do intervalo.

Exercício 8.22 — Resolução no R

LIE_822 <- 75; LSE_822 <- 85
s_822 <- 1.5; n_822 <- 25

Cp_822 <- (LSE_822 - LIE_822) / (6 * s_822)

qi_822 <- qchisq(0.025, df = n_822 - 1)
qs_822 <- qchisq(0.975, df = n_822 - 1)
li_822 <- Cp_822 * sqrt(qi_822 / (n_822 - 1))
ls_822 <- Cp_822 * sqrt(qs_822 / (n_822 - 1))

cat(sprintf("Cp = %.3f\n", Cp_822))
Cp = 1.111
cat(sprintf("IC 95%% para Cp: [%.3f, %.3f]\n", li_822, ls_822))
IC 95% para Cp: [0.799, 1.423]

Exercício 8.26 — Estimativa Pontual e IC para \(C_{pk}\)

Exercício 8.26 — Montgomery, Cap. 8

Uma característica da qualidade normalmente distribuída tem limites de especificação \(LIE = 10\) e \(LSE = 20\). Uma amostra de tamanho 50 resulta em \(\bar{x} = 16\) e \(s = 1{,}2\).

  1. Calcule uma estimativa pontual de \(C_{pk}\).
  2. Encontre um intervalo de confiança de 95% para \(C_{pk}\).

Exercício 8.26 — Resolução no R

LIE_826 <- 10; LSE_826 <- 20
xbar_826 <- 16; s_826 <- 1.2; n_826 <- 50

Cpu_826 <- (LSE_826 - xbar_826) / (3 * s_826)
Cpl_826 <- (xbar_826 - LIE_826) / (3 * s_826)
Cpk_826 <- min(Cpu_826, Cpl_826)

z_826 <- qnorm(0.975)
erro_826 <- sqrt((1 / (9 * n_826)) + (Cpk_826^2 / (2 * (n_826 - 1))))

cat(sprintf("Cpk = %.3f\n", Cpk_826))
Cpk = 1.111
cat(sprintf("IC 95%% para Cpk: [%.3f, %.3f]\n",
            Cpk_826 - z_826 * erro_826, Cpk_826 + z_826 * erro_826))
IC 95% para Cpk: [0.873, 1.350]

Exercício 8.31 — Capacidade do Medidor

Exercício 8.31 — Montgomery, Cap. 8

Um mesmo operador mede dez peças três vezes, em um estudo da capacidade de um medidor.

  1. Descreva o erro de medição resultante.
  2. Estime a variabilidade total e a variabilidade do produto.
  3. Qual percentual da variabilidade total é decorrente do medidor?
  4. Se as especificações forem \(100 \pm 15\), ache a razão \(P/T\) e comente a adequação do medidor.

Estrutura de solução: estimar \(\hat\sigma_{Medidor}\) a partir da repetitividade (gráfico \(R\) entre as 3 repetições), depois aplicar a fórmula de \(P/T\) vista anteriormente.

Obrigado!

Capacidade de Processos e Sistemas de Medida · UFPB

Bacharelado em Estatística e Ciência de Dados

Prof. Marcelo R.P. Ferreira · DE-UFPB