Controllo statistico di processo: il fondamento della qualità
Le carte di controllo sono la pietra angolare del controllo statistico di processo (SPC), e utilizzano la deviazione standard per monitorare la stabilità del processo nel tempo. Sviluppate da Walter Shewhart ai Bell Labs negli anni ’20, questi potenti strumenti distinguono tra variazione da cause comuni (intrinseca al processo) e variazione da cause speciali (che indica problemi da affrontare).
La genialità delle carte di controllo risiede nella loro semplicità: si tracciano le misurazioni nel tempo, si aggiungono limiti di controllo basati sulla deviazione standard e si osservano punti o pattern che segnalano problemi. Questo monitoraggio in tempo reale previene i difetti prima che si verifichino, anziché individuarli attraverso l’ispezione successiva.
La produzione moderna, la sanità e il settore dei servizi si affidano alle carte di controllo per mantenere la qualità. Dalla fabbricazione di semiconduttori che richiede precisione nanometrica ai tassi di infezione ospedaliera, l’SPC fornisce un quadro universale per il miglioramento dei processi.
Cause comuni vs cause speciali
Tipi di carte di controllo
Tipi di dati diversi richiedono carte di controllo diverse. Scegliere la carta giusta garantisce un monitoraggio accurato del processo:
| Tipo di carta | Tipo di dati | Caso d’uso |
|---|---|---|
| X̄-R (X-barra e Range) | Continui, sottogruppi n≤10 | Misurazioni di produzione |
| X̄-S (X-barra e Dev. St.) | Continui, sottogruppi n>10 | Campionamento di grandi lotti |
| I-MR (Individuali-Range Mobile) | Misurazioni individuali | Test costosi/distruttivi |
| Carta p | Proporzione difettosa | Ispezione conforme/non conforme |
| Carta c | Conteggio difetti | Difetti per unità |
Per dati continui (misurazioni come lunghezza, peso, temperatura), la carta X̄-R è la più comune. Si raccolgono sottogruppi di campioni, si traccia la media (X̄) su una carta e il range (R) su un’altra. Insieme, monitorano sia il centraggio che la variabilità del processo.
Calcolo dei limiti di controllo
I limiti di controllo definiscono i confini della variazione attesa. Sono fissati a ±3 deviazioni standard dalla linea centrale, catturando il 99,73% dei punti quando il processo è sotto controllo:
Limiti di controllo
Per una carta X̄ con il metodo del range, le formule diventano:
Limiti della carta X-barra
Dove X̅̅ è la media generale, R̄ è il range medio e A₂ è una costante che dipende dalla dimensione del sottogruppo (es. A₂ = 0,577 per n=5).
Limiti di controllo ≠ Limiti di specifica
Costanti per i limiti di controllo
| n | A₂ | D₃ | D₄ |
|---|---|---|---|
| 2 | 1,880 | 0 | 3,267 |
| 3 | 1,023 | 0 | 2,574 |
| 4 | 0,729 | 0 | 2,282 |
| 5 | 0,577 | 0 | 2,114 |
Regole Western Electric per rilevare i problemi
Un singolo punto fuori dai limiti di controllo non è l’unico segnale di problema. Le regole Western Electric rilevano pattern più sottili dividendo la carta in zone basate sulle deviazioni standard:
- Zona C:Entro 1σ dalla linea centrale
- Zona B:Tra 1σ e 2σ dal centro
- Zona A:Tra 2σ e 3σ dal centro
Le quattro regole principali
Regola 1: Punto singolo
Regola 2: Serie di 9
Regola 3: Tendenza di 6
Regola 4: Pattern di zona
Riconoscere i pattern comuni
I professionisti esperti imparano a riconoscere pattern visivi che indicano problemi specifici:
| Pattern | Aspetto | Causa probabile |
|---|---|---|
| Spostamento | Cambio improvviso di livello | Nuovo operatore, lotto di materiale, regolazione apparecchiatura |
| Tendenza | Deriva graduale verso l’alto/basso | Usura utensile, deriva termica, affaticamento |
| Cicli | Andamento ripetitivo su/giù | Cambi turno, cicli ambientali, rotazioni programmate |
| Aggrappamento | Punti raggruppati vicino al centro | Limiti errati, dati arrotondati/modificati |
| Stratificazione | Punti che evitano il centro | Flussi misti, macchine multiple |
Implementazione in Python
Creare una carta di controllo X̄-R con verifica automatica delle regole:
import numpy as np
import matplotlib.pyplot as plt
def create_xbar_chart(data, subgroup_size=5):
"""Create X-bar control chart with control limits."""
# Reshape data into subgroups
n_subgroups = len(data) // subgroup_size
subgroups = data[:n_subgroups * subgroup_size].reshape(n_subgroups, subgroup_size)
# Calculate subgroup means and ranges
xbar = subgroups.mean(axis=1)
R = subgroups.max(axis=1) - subgroups.min(axis=1)
# Control chart constants (for n=5)
A2 = 0.577
D3, D4 = 0, 2.114
# Calculate control limits
xbar_bar = xbar.mean()
R_bar = R.mean()
UCL = xbar_bar + A2 * R_bar
LCL = xbar_bar - A2 * R_bar
# Check for out-of-control points
ooc = (xbar > UCL) | (xbar < LCL)
# Plot
plt.figure(figsize=(12, 5))
plt.plot(xbar, 'b-o', markersize=4)
plt.axhline(xbar_bar, color='g', linestyle='-', label='CL')
plt.axhline(UCL, color='r', linestyle='--', label='UCL')
plt.axhline(LCL, color='r', linestyle='--', label='LCL')
plt.scatter(np.where(ooc)[0], xbar[ooc], color='red', s=100, zorder=5)
plt.xlabel('Subgroup')
plt.ylabel('X-bar')
plt.title('X-bar Control Chart')
plt.legend()
plt.show()
return {'xbar': xbar, 'UCL': UCL, 'LCL': LCL, 'ooc': ooc}
# Example: Monitor a manufacturing process
np.random.seed(42)
# Simulate 100 measurements (20 subgroups of 5)
measurements = np.random.normal(100, 2, 100)
# Add a shift at subgroup 15
measurements[75:] += 3
result = create_xbar_chart(measurements)