【万能代码+案例】详解SPC相关控制图原理及逻辑代码 您所在的位置:网站首页 spc管控线制定 【万能代码+案例】详解SPC相关控制图原理及逻辑代码

【万能代码+案例】详解SPC相关控制图原理及逻辑代码

2024-06-12 07:30| 来源: 网络整理| 查看: 265

Xbar-R图:用于监控样本均值和范围,适合小样本量。Xbar-S图:类似Xbar-R图,但适用于大样本量。p图:用于监控一定时间或样本量内的缺陷比率。np图:类似p图,但用于固定样本量。u图:用于监控单位内的缺陷数。c图:监控特定时间或样本量内的缺陷数。

每一种控制图都有其特定的用途和解读方式。比如,如果控制图显示数据点大多在控制限以内,这表明过程是稳定的。如果数据点超出控制限或呈现非随机模式,这可能表示过程有异常。

在这里插入图片描述 在这里插入图片描述

代码及案例 I-MR图 import matplotlib.pyplot as plt import numpy as np # 模拟数据 np.random.seed(0) data = np.random.normal(loc=10, scale=1, size=30) # 计算控制限 mean = np.mean(data) std_dev = np.std(data) upper_control_limit = mean + 3*std_dev lower_control_limit = mean - 3*std_dev # 绘制I-MR图 plt.figure(figsize=(10, 5)) # 绘制I图 (Individuals) plt.subplot(1, 2, 1) plt.plot(data, marker='o', linestyle='-') plt.axhline(mean, color='green', linestyle='--') plt.axhline(upper_control_limit, color='red', linestyle='--') plt.axhline(lower_control_limit, color='red', linestyle='--') plt.title('I图') plt.xlabel('样本') plt.ylabel('值') # 绘制MR图 (Moving Range) moving_ranges = [abs(data[i] - data[i-1]) for i in range(1, len(data))] mean_mr = np.mean(moving_ranges) plt.subplot(1, 2, 2) plt.plot(moving_ranges, marker='o', linestyle='-') plt.axhline(mean_mr, color='green', linestyle='--') plt.title('MR图') plt.xlabel('样本') plt.ylabel('移动范围') plt.tight_layout() plt.show()

在这里插入图片描述

代码解释

数据模拟:生成了30个服从正态分布的随机数据点。 计算控制限:计算了数据的平均值和标准差,并据此确定上下控制限。 绘制I图(Individuals Chart):显示了每个数据点的变化情况,并绘制了平均线和控制限。 绘制MR图(Moving Range Chart):显示了相邻数据点之间的变化(移动范围),并绘制了其平均线。

图表解读

I图:如果大多数数据点都在控制限内,则过程被认为是稳定的。如果出现连续的点在控制限外,或者呈现特定的模式(如连续上升或下降),则可能表明过程存在异常。 MR图:主要用于监控过程的变异性。如果移动范围在控制限内且没有非随机模式,说明过程变异性稳定。

Xbar-R图 import pandas as pd # 创建模拟数据(5个样本,每个样本包含5个数据点) np.random.seed(0) data = np.random.normal(loc=20, scale=2, size=(5, 5)) # 将数据转换为DataFrame,便于处理 df = pd.DataFrame(data) # 计算样本均值和样本范围 sample_means = df.mean(axis=1) sample_ranges = df.max(axis=1) - df.min(axis=1) # 计算Xbar-R图的控制限 grand_mean = sample_means.mean() # 总体均值 mean_range = sample_ranges.mean() # 平均范围 # R图的控制限 r_chart_upper = mean_range * 2.114 # D4因子 r_chart_lower = mean_range * 0 # D3因子 # Xbar图的控制限 xbar_chart_upper = grand_mean + (r_chart_upper * 0.577) / np.sqrt(5) # A2因子 xbar_chart_lower = grand_mean - (r_chart_upper * 0.577) / np.sqrt(5) # 绘制Xbar-R图 plt.figure(figsize=(10, 5)) # 绘制Xbar图 plt.subplot(1, 2, 1) plt.plot(sample_means, marker='o', linestyle='-') plt.axhline(grand_mean, color='green', linestyle='--') plt.axhline(xbar_chart_upper, color='red', linestyle='--') plt.axhline(xbar_chart_lower, color='red', linestyle='--') plt.title('Xbar图') plt.xlabel('样本') plt.ylabel('均值') # 绘制R图 plt.subplot(1, 2, 2) plt.plot(sample_ranges, marker='o', linestyle='-') plt.axhline(mean_range, color='green', linestyle='--') plt.axhline(r_chart_upper, color='red', linestyle='--') plt.axhline(r_chart_lower, color='red', linestyle='--') plt.title('R图') plt.xlabel('样本') plt.ylabel('范围') plt.tight_layout() plt.show()

在这里插入图片描述

代码解释

数据模拟:创建了5组样本,每组包含5个数据点,这些数据点服从正态分布。 计算样本均值和范围:对每个样本计算了平均值和范围(最大值与最小值之差)。 计算控制限: R图(范围图):基于样本范围的平均值和D4、D3因子计算上下控制限。 Xbar图(均值图):基于样本均值的总体均值和A2因子计算上下控制限。 绘制Xbar-R图: Xbar图:展示了各样本均值,并标出了控制限。 R图:展示了各样本范围,并标出了控制限。

图表解读

Xbar图:监控样本均值的变化。如果均值大多在控制限内,表明过程均值稳定。超出控制限或呈现特定模式表明可能存在问题。 R图:监控样本范围的变化。范围的稳定性指示过程变异性的控制水平。

Xbar-S图 # 创建模拟数据(5个样本,每个样本包含10个数据点) np.random.seed(0) data = np.random.normal(loc=15, scale=3, size=(5, 10)) # 将数据转换为DataFrame df = pd.DataFrame(data) # 计算样本均值和标准差 sample_means = df.mean(axis=1) sample_stds = df.std(axis=1, ddof=1) # 计算Xbar-S图的控制限 grand_mean = sample_means.mean() # 总体均值 mean_std = sample_stds.mean() # 平均标准差 # S图的控制限 s_chart_upper = mean_std * 2.089 # B4因子 s_chart_lower = mean_std * 0.000 # B3因子 # Xbar图的控制限 xbar_chart_upper = grand_mean + (s_chart_upper / np.sqrt(10)) * 0.308 # A3因子 xbar_chart_lower = grand_mean - (s_chart_upper / np.sqrt(10)) * 0.308 # 绘制Xbar-S图 plt.figure(figsize=(10, 5)) # 绘制Xbar图 plt.subplot(1, 2, 1) plt.plot(sample_means, marker='o', linestyle='-') plt.axhline(grand_mean, color='green', linestyle='--') plt.axhline(xbar_chart_upper, color='red', linestyle='--') plt.axhline(xbar_chart_lower, color='red', linestyle='--') plt.title('Xbar图') plt.xlabel('样本') plt.ylabel('均值') # 绘制S图 plt.subplot(1, 2, 2) plt.plot(sample_stds, marker='o', linestyle='-') plt.axhline(mean_std, color='green', linestyle='--') plt.axhline(s_chart_upper, color='red', linestyle='--') plt.axhline(s_chart_lower, color='red', linestyle='--') plt.title('S图') plt.xlabel('样本') plt.ylabel('标准差') plt.tight_layout() plt.show()

代码解释

数据模拟:创建了5组样本,每组包含10个数据点,这些数据点服从正态分布。 计算样本均值和标准差:对每个样本计算了平均值和标准差。 计算控制限: S图(标准差图):基于样本标准差的平均值和B4、B3因子计算上下控制限。 Xbar图(均值图):基于样本均值的总体均值和A3因子计算上下控制限。 绘制Xbar-S图: Xbar图:展示了各样本均值,并标出了控制限。 S图:展示了各样本标准差,并标出了控制限。

图表解读

Xbar图:监控样本均值的变化。均值的稳定性表明过程的中心趋势受控。 S图:监控样本标准差的变化。标准差的稳定性指示过程变异性的控制水平。

在这里插入图片描述

P图 # 模拟数据 - p图(缺陷比率图) np.random.seed(0) # 假设有20个样本,每个样本包含100个单元 n_samples = 20 sample_size = 100 # 模拟数据:随机生成每个样本中的缺陷数(0到10之间) defective_units = np.random.randint(0, 11, size=n_samples) # 计算缺陷比率 p = defective_units / sample_size # 计算p图的控制限 p_bar = np.mean(p) # 平均缺陷比率 p_chart_upper = p_bar + 3 * np.sqrt(p_bar * (1 - p_bar) / sample_size) p_chart_lower = p_bar - 3 * np.sqrt(p_bar * (1 - p_bar) / sample_size) p_chart_lower = np.clip(p_chart_lower, 0, 1) # 确保下限不小于0 # 绘制p图 plt.figure(figsize=(10, 5)) plt.plot(p, marker='o', linestyle='-') plt.axhline(p_bar, color='green', linestyle='--') plt.axhline(p_chart_upper, color='red', linestyle='--') plt.axhline(p_chart_lower, color='red', linestyle='--') plt.title('p图') plt.xlabel('样本') plt.ylabel('缺陷比率') plt.ylim(0, 0.15) plt.show()

在这里插入图片描述

代码解释

数据模拟:生成了20个样本的数据,每个样本含有100个单元,并随机生成每个样本中的缺陷数(0到10之间)。 计算缺陷比率:对每个样本计算了缺陷比率。 计算控制限:基于缺陷比率的平均值计算上下控制限,确保下限不小于0。 绘制p图:展示了每个样本的缺陷比率,并标出了平均缺陷比率及控制限。

图表解读

p图:用于监控不同样本中缺陷比率的变化。如果大部分数据点在控制限内,表明缺陷率稳定。数据点超出控制限或呈现特定模式则可能指示过程质量变化。

np控制图 # 模拟数据 - np图(固定样本量的缺陷数量图) np.random.seed(0) # 假设有20个样本,每个样本包含固定的50个单元 n_samples = 20 sample_size = 50 # 模拟数据:随机生成每个样本中的缺陷数(0到10之间) defective_units = np.random.randint(0, 11, size=n_samples) # 计算缺陷数量 np_values = defective_units # 计算np图的控制限 np_bar = np.mean(np_values) # 平均缺陷数量 np_chart_upper = np_bar + 3 * np.sqrt(np_bar * (1 - np_bar / sample_size)) np_chart_lower = np_bar - 3 * np.sqrt(np_bar * (1 - np_bar / sample_size)) np_chart_lower = np.clip(np_chart_lower, 0, np.inf) # 确保下限不小于0 # 绘制np图 plt.figure(figsize=(10, 5)) plt.plot(np_values, marker='o', linestyle='-') plt.axhline(np_bar, color='green', linestyle='--') plt.axhline(np_chart_upper, color='red', linestyle='--') plt.axhline(np_chart_lower, color='red', linestyle='--') plt.title('np图') plt.xlabel('样本') plt.ylabel('缺陷数量') plt.ylim(0, max(np_chart_upper, max(np_values)) + 1) plt.show()

在这里插入图片描述

代码解释

数据模拟:生成了20个样本的数据,每个样本含有固定的50个单元,并随机生成每个样本中的缺陷数(0到10之间)。 计算缺陷数量:记录每个样本的缺陷数量。 计算控制限:基于缺陷数量的平均值计算上下控制限,确保下限不小于0。 绘制np图:展示了每个样本的缺陷数量,并标出了平均缺陷数量及控制限。

图表解读

np图:用于监控不同样本中的固定数量单元的缺陷数量。如果大部分数据点在控制限内,表明缺陷数量稳定。数据点超出控制限或呈现特定模式则可能指示过程质量变化。

U图 # 模拟数据 - u图(单位内的缺陷数图) np.random.seed(0) # 假设有20个样本,每个样本的单元数量不固定 sample_sizes = np.random.randint(40, 61, size=n_samples) # 单元数在40到60之间 # 模拟数据:随机生成每个样本中的缺陷数 defective_units = np.random.randint(0, 11, size=n_samples) # 计算单位内的缺陷数 u_values = defective_units / sample_sizes # u图的控制限计算和绘图 u_chart_upper = [u_bar + 3 * np.sqrt(u_bar / n) for n in sample_sizes] u_chart_lower = [u_bar - 3 * np.sqrt(u_bar / n) for n in sample_sizes] u_chart_lower = np.clip(u_chart_lower, 0, np.inf) # 确保下限不小于0 # 绘制u图 plt.figure(figsize=(10, 5)) plt.plot(u_values, marker='o', linestyle='-') plt.axhline(u_bar, color='green', linestyle='--') # 由于控制限是变量,需要逐点绘制 for i in range(n_samples): plt.plot([i, i], [u_chart_lower[i], u_chart_upper[i]], color='red', linestyle='--') plt.title('u图') plt.xlabel('样本') plt.ylabel('单位内缺陷数') plt.ylim(0, max(u_chart_upper) + 0.01) plt.show()

在这里插入图片描述

代码解释

数据模拟:生成了20个样本的数据,每个样本含有不固定数量的单元(40到60之间),并随机生成每个样本中的缺陷数。 计算单位内的缺陷数:计算了每个样本的单位内缺陷数。 计算控制限:基于单位内缺陷数的平均值计算上下控制限,考虑到样本大小的变化。 绘制u图:展示了每个样本的单位内缺陷数,并标出了平均单位内缺陷数及控制限。

图表解读

u图:用于监控不同样本中单位内的缺陷数量。如果大部分数据点在控制限内,表明单位内缺陷数量稳定。数据点超出控制限或呈现特定模式则可能指示过程质量变化。

C图 # 模拟数据 - c图(特定时间或样本量内的缺陷数图) np.random.seed(0) # 假设有20个样本 # 模拟数据:随机生成每个样本中的缺陷数 defective_units = np.random.poisson(lam=5, size=n_samples) # 使用泊松分布模拟缺陷数 # 计算c图的控制限 c_bar = np.mean(defective_units) # 平均缺陷数量 c_chart_upper = c_bar + 3 * np.sqrt(c_bar) c_chart_lower = c_bar - 3 * np.sqrt(c_bar) c_chart_lower = np.clip(c_chart_lower, 0, np.inf) # 确保下限不小于0 plt.figure(figsize=(10, 5)) plt.plot(defective_units, marker='o', linestyle='-') plt.axhline(c_bar, color='green', linestyle='--') plt.axhline(c_chart_upper, color='red', linestyle='--') plt.axhline(c_chart_lower, color='red', linestyle='--') plt.title('c图') plt.xlabel('样本') plt.ylabel('缺陷数量') plt.ylim(0, max(c_chart_upper, max(defective_units)) + 1) plt.show()

在这里插入图片描述

代码解释

数据模拟:生成了20个样本的数据,使用泊松分布随机生成每个样本中的缺陷数。 计算c图的控制限:基于缺陷数量的平均值计算上下控制限。 绘制c图:展示了每个样本的缺陷数量,并标出了平均缺陷数量及控制限。

图表解读

c图:用于监控特定时间或样本量内的缺陷数量。如果大部分数据点在控制限内,表明缺陷数量稳定。数据点超出控制限或呈现特定模式则可能指示过程质量变化。

如何从SPC控制图中判段异常

当我们使用SPC进行过程控制的时候,绘图是根本,发现问题才是目的,就会涉及到SPC判异原则,通过SPC控制图中点的变化情况判断生产是否出现了问题,来监测生产过程是否处于控制状态。

简单的说,控制图中出现下面的8种点位分布的时候,我们就认为过程出现了特殊原因,我们必须找出点位分布异常的特殊原因,将其消除,从而提前遏制不良品的产生,保证产品质量。

为了更容易理解八大判异原则,用图表方式进行描述,先来看一下图表说明:上下A/B/C六个区间,分别代表样本值的3倍、2倍、1倍标准差区间。

在这里插入图片描述

SPC控制图中点的变化情况判断

判异准则1:任何 1个点落在3个标准差以外

可能原因:一般认为是新员工,工艺方法错误,机器故障,原材料不合格,测量错误,计算错误,检验方法或标准变化。

手把手教你SPC控制图怎么做以及SPC控制图分类

判异准则2:连续9点落在中心线同一侧

可能原因:一般认为是新员工,工艺方法错误,机器故障,原材料不合格,测量错误,计算错误,检验方法或标准变化。

手把手教你SPC控制图怎么做以及SPC控制图分类

判异准则3:连续6点递增或递减,即连成一串

可能原因:模具等工具的磨损,维护保养水平降低,操作工的技能越来越熟练。

手把手教你SPC控制图怎么做以及SPC控制图分类

判异准则4:连续14点相邻点交替上下

可能原因:轮流使用两台设备或两个操作工操作,数据分层不够。

手把手教你SPC控制图怎么做以及SPC控制图分类

判异准则5:连续3点中有2点在中心线同一侧且大于2倍标准差

可能原因:一般认为是新员工,工艺方法错误,机器故障,原材料不合格,测量错误,计算错误,检验方法或标准变化。

手把手教你SPC控制图怎么做以及SPC控制图分类

判异准则6:连续5点中有4点在中心线同一侧且大于1个标准差

可能原因:一般认为是新员工,工艺方法错误,机器故障,原材料不合格,测量错误,计算错误,检验方法或标准变化。

手把手教你SPC控制图怎么做以及SPC控制图分类

判异准则7:连续15点在距离中心线1个标准差内

可能原因:数据造假,控制限计算错误,数据分层不够。

手把手教你SPC控制图怎么做以及SPC控制图分类

判异准则8:连续8点在中心线任一侧且没有一点在1个标准差内

可能原因:数据分层不够。

手把手教你SPC控制图怎么做以及SPC控制图分类

SPC控制图异常的处理:当我们发现SPC控制异常时,应首先自我检查是否严格按作业标准(SOP)作业,并与质量管控专业人员进行问题分析处理。

参考链接:https://www.infinityqs.cn/Aboutus/zixun/2955.html

万能SPC模板

目前已开发了一个基于数据的SPC模板,只需要导入数据即可出大屏图片

有需要文末私信博主,获取代码

在这里插入图片描述 在这里插入图片描述

每文一语

学习永无止境



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有