X-Bar-S图和X-Bar-R图是统计质量控制中常用的两种控制图,用于监测过程的稳定性和一致性。它们的主要区别在于如何计算和呈现数据的变化以及所关注的问题类型。
-
X-Bar-S图(平均值与标准偏差图):
- X-Bar代表样本均值,S代表样本标准偏差。
- X-Bar-S图用于监测过程的平均值和变异性。
- 过程中的每个样本都会测量,并计算出该样本的平均值(X-Bar)和标准偏差(S)。
- 控制图上通常有两条中心线:一条代表平均值,另一条代表标准偏差。
- X-Bar-S图适用于对过程均值和过程标准偏差都有关注的情况,例如,需要确保产品的尺寸和质量稳定。
-
X-Bar-R图(平均值与范围图):
- X-Bar代表样本均值,R代表样本范围。
- X-Bar-R图主要用于监测过程的平均值和范围,而不是标准偏差。
- 对每个样本进行测量,并计算出该样本的平均值(X-Bar)和范围(R,即最大值与最小值之差)。
- 控制图上通常有两条中心线:一条代表平均值,另一条代表范围。
- X-Bar-R图适用于关注过程的平均值,但不太关注过程的标准偏差的情况,例如,需要确保生产过程的平均值在目标值附近。
总之,X-Bar-S图和X-Bar-R图都用于监测过程的稳定性,但它们关注的参数不同。X-Bar-S图同时关注平均值和标准偏差,而X-Bar-R图关注平均值和样本范围。选择使用哪种图表取决于你对过程的关注点和需要监测的参数。
下面是X-Bar-S图和X-Bar-R图的各自控制限计算公式:
X-Bar-S图的控制限计算公式:
-
上控制限(UCL)和下控制限(LCL)用于X-Bar图(平均值图):
- UCL(X-Bar) = X-Double Bar + A2 * S-Bar
- LCL(X-Bar) = X-Double Bar - A2 * S-Bar
其中,X-Double Bar是所有样本平均值的平均值,A2是与样本容量相关的常数,S-Bar是所有样本标准偏差的平均值。
-
上控制限(UCL)和下控制限(LCL)用于S图(标准偏差图):
- UCL(S) = B3 * S-Bar
- LCL(S) = B4 * S-Bar
其中,B3和B4是与样本容量相关的常数,S-Bar是所有样本标准偏差的平均值。
X-Bar-R图的控制限计算公式:
-
上控制限(UCL)和下控制限(LCL)用于X-Bar图(平均值图):
- UCL(X-Bar) = X-Double Bar + A2 * R-Bar
- LCL(X-Bar) = X-Double Bar - A2 * R-Bar 其中,X-Double Bar是所有样本平均值的平均值,A2是与样本容量相关的常数,R-Bar是所有样本范围的平均值。
-
上控制限(UCL)和下控制限(LCL)用于R图(范围图):
- UCL(R) = D4 * R-Bar
- LCL(R) = D3 * R-Bar
其中,D3和D4是与样本容量相关的常数,R-Bar是所有样本范围的平均值。
这些常数(如A2、B3、B4、D3和D4)取决于样本容量和所选的控制图类型,通常可以在统计参考表中找到相应的值。控制限的目标是帮助检测过程中任何异常或变化,以便及时采取纠正措施来维持过程的稳定性。
两种X-Bar控制图(X-Bar-S图和X-Bar-R图)的平均值图计算方法不同,是因为它们关注的参数和控制图的目的不同,这导致了不同的控制限计算方法。
-
X-Bar-S图的平均值图(X-Bar图):
- X-Bar-S图用于监测过程的平均值和标准偏差。它关注的是过程的整体平均水平以及过程中的变异性。
- 平均值图的上控制限(UCL)和下控制限(LCL)计算方法包括平均值(X-Bar)和标准偏差(S-Bar)的组合,因为在X-Bar-S图中,两者都是关注的参数。
- 控制限的目的是确保过程的平均值和标准偏差保持在可接受的范围内。
-
X-Bar-R图的平均值图(X-Bar图):
- X-Bar-R图用于监测过程的平均值和范围(即最大值与最小值之差)。它关注的是过程的平均水平和过程的范围变化。
- 平均值图的上控制限(UCL)和下控制限(LCL)计算方法包括平均值(X-Bar)和范围(R-Bar)的组合,因为在X-Bar-R图中,这两个参数是关注的。
- 控制限的目的是确保过程的平均值和范围保持在可接受的范围内。
因此,不同的控制图类型具有不同的控制限计算方法,以反映它们关注的参数和过程监测的目的。选择使用哪种图表取决于你对过程的关注点,例如,是更关注标准偏差还是范围的变化。
import numpy as np
import matplotlib.pyplot as plt
# 生成10组每组10个数据的示例数据(总共100个数据)
np.random.seed(0)
data = np.random.randn(10, 10)
# 计算每组的平均值(X-Bar)
x_bar = np.mean(data, axis=1)
# 计算每组的样本标准差(S)
s = np.std(data, axis=1, ddof=1)
# 固定的A2、B3、B4值
A2 = 0.308
B3 = 0.284
B4 = 1.716
# 计算X-Bar控制图的控制限
X_Double_Bar = np.mean(x_bar)
S_Bar = np.mean(s)
UCL_X_Bar = X_Double_Bar + A2 * S_Bar
LCL_X_Bar = X_Double_Bar - A2 * S_Bar
# 计算S控制图的控制限
UCL_S = B4 * S_Bar
LCL_S = B3 * S_Bar
# 创建X-Bar 控制图,添加上下控制限
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(x_bar, marker='o')
plt.axhline(X_Double_Bar, color='r', linestyle='--', label='Overall Mean')
plt.axhline(UCL_X_Bar, color='g', linestyle='--', label='UCL')
plt.axhline(LCL_X_Bar, color='b', linestyle='--', label='LCL')
plt.title('X-Bar Control Chart')
plt.xlabel('Sample Group')
plt.ylabel('X-Bar')
plt.legend()
# 创建S 控制图,添加上下控制限
plt.subplot(2, 1, 2)
plt.plot(s, marker='o')
plt.axhline(S_Bar, color='r', linestyle='--', label='Overall Mean')
plt.axhline(UCL_S, color='g', linestyle='--', label='UCL')
plt.axhline(LCL_S, color='b', linestyle='--', label='LCL')
plt.title('S Control Chart')
plt.xlabel('Sample Group')
plt.ylabel('S')
plt.legend()
plt.tight_layout()
plt.show()
import numpy as np
import matplotlib.pyplot as plt
# 生成10组每组10个数据的示例数据(总共100个数据)
np.random.seed(0)
data = np.random.randn(10, 10)
# 计算每组的平均值(X-Bar)
x_bar = np.mean(data, axis=1)
# 计算每组的极差(R)
r = np.ptp(data, axis=1)
# 固定的A2、D4、D3值
A2 = 0.308
D4 = 1.777
D3 = 0.223
# 计算X-Bar控制图的控制限
X_Double_Bar = np.mean(x_bar)
R_Bar = np.mean(r)
UCL_X_Bar = X_Double_Bar + A2 * R_Bar
LCL_X_Bar = X_Double_Bar - A2 * R_Bar
# 计算R控制图的控制限
UCL_R = D4 * R_Bar
LCL_R = D3 * R_Bar
# 创建X-Bar 控制图,添加上下控制限
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(x_bar, marker='o')
plt.axhline(X_Double_Bar, color='r', linestyle='--', label='Overall Mean')
plt.axhline(UCL_X_Bar, color='g', linestyle='--', label='UCL')
plt.axhline(LCL_X_Bar, color='b', linestyle='--', label='LCL')
plt.title('X-Bar Control Chart')
plt.xlabel('Sample Group')
plt.ylabel('X-Bar')
plt.legend()
# 创建R 控制图,添加上下控制限
plt.subplot(2, 1, 2)
plt.plot(r, marker='o')
plt.axhline(R_Bar, color='r', linestyle='--', label='Overall Mean')
plt.axhline(UCL_R, color='g', linestyle='--', label='UCL')
plt.axhline(LCL_R, color='b', linestyle='--', label='LCL')
plt.title('R Control Chart')
plt.xlabel('Sample Group')
plt.ylabel('R')
plt.legend()
plt.tight_layout()
plt.show()