Статистическое управление процессами: основа качества
Контрольные карты — краеугольный камень статистического управления процессами (SPC), использующий стандартное отклонение для мониторинга стабильности процесса. Разработанные Уолтером Шухартом в Bell Labs в 1920-х годах, эти инструменты позволяют различать общую причину вариации (присущую процессу) и особую причину вариации (указывающую на проблемы, требующие внимания).
Гениальность контрольных карт — в их простоте: нанесите измерения на график по времени, добавьте контрольные пределы на основе стандартного отклонения и следите за точками или паттернами, сигнализирующими о неполадках. Такой мониторинг в реальном времени предотвращает дефекты до их появления, а не выявляет их при инспекции.
Современное производство, здравоохранение и сфера услуг опираются на контрольные карты для поддержания качества. От полупроводниковых фабрик, требующих нанометровой точности, до мониторинга уровня госпитальных инфекций — SPC предоставляет универсальный инструмент улучшения процессов.
Общая и особая причины
Типы контрольных карт
Разные типы данных требуют разных контрольных карт. Правильный выбор карты обеспечивает точный мониторинг процесса:
| Тип карты | Тип данных | Область применения |
|---|---|---|
| X̄-R (X-среднее и размах) | Непрерывные, подгруппы n≤10 | Производственные измерения |
| X̄-S (X-среднее и СО) | Непрерывные, подгруппы n>10 | Контроль крупных партий |
| I-MR (индивидуальные-скользящий размах) | Индивидуальные измерения | Дорогостоящие/разрушающие испытания |
| p-карта | Доля дефектных | Контроль по принципу годен/не годен |
| c-карта | Число дефектов | Дефекты на единицу продукции |
Для непрерывных данных (измерения длины, массы, температуры) наиболее распространена карта X̄-R. Вы собираете подгруппы образцов, наносите среднее (X̄) на одну карту и размах (R) на другую. Вместе они контролируют как центрирование процесса, так и его вариабельность.
Расчёт контрольных пределов
Контрольные пределы определяют границы ожидаемой вариации. Они устанавливаются на уровне ±3 стандартных отклонений от центральной линии, охватывая 99,73% точек, когда процесс стабилен:
Контрольные пределы
Для карты X̄ с использованием метода размахов формулы принимают вид:
Пределы карты X-среднее
Где X̿ — общее среднее, R̄ — средний размах, а A₂ — константа, зависящая от объёма подгруппы (например, A₂ = 0,577 для n=5).
Контрольные пределы ≠ Пределы допуска
Константы контрольных пределов
| 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 |
Правила Western Electric для обнаружения проблем
Выход одной точки за контрольные пределы — не единственный сигнал неполадок. Правила Western Electric выявляют более тонкие паттерны, разделяя карту на зоны по стандартным отклонениям:
- Зона C:В пределах 1σ от центральной линии
- Зона B:Между 1σ и 2σ от центра
- Зона A:Между 2σ и 3σ от центра
Четыре основных правила
Правило 1: Одна точка
Правило 2: Серия из 9
Правило 3: Тренд из 6
Правило 4: Паттерн зон
Распознавание типичных паттернов
Опытные специалисты учатся распознавать визуальные паттерны, указывающие на конкретные проблемы:
| Паттерн | Внешний вид | Вероятная причина |
|---|---|---|
| Сдвиг | Резкое изменение уровня | Новый оператор, партия материала, настройка оборудования |
| Тренд | Постепенный дрейф вверх/вниз | Износ инструмента, температурный дрейф, утомление |
| Циклы | Повторяющийся паттерн вверх/вниз | Смена операторов, циклы среды, графики ротации |
| Прижимание | Точки группируются у центра | Неправильные пределы, данные округлены/отредактированы |
| Расслоение | Точки избегают центра | Смешанные потоки, несколько станков |
Реализация на Python
Создание контрольной карты X̄-R с автоматической проверкой правил:
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)