python科研绘图:绘制X-bar图

目录

1.X-bar 图的基本概念

2.X-bar 图的绘制过程

3.X-bar 图的优势

4.X-bar 图的绘制


1.X-bar 图的基本概念

X-bar控制图是一种统计工具,用于监控和控制生产过程中的质量变量。它是过程能力分析和统计过程控制(SPC,Statistical Process Control)的重要组成部分。X-bar控制图主要用于追踪过程平均值的变化,帮助识别过程是否处于受控状态。

X-bar控制图包括中心线(CL,Central Line),上限控制线(UCL,Upper Control Limit)和下限控制线(LCL,Lower Control Limit)。中心线通常是过程平均值的估计值,上限控制线和下限控制线是根据中心线和标准差计算得出的。

在X-bar控制图中,每个点表示一个样本的平均值。随着时间的推移,这些点应该会围绕中心线上下波动。如果点在控制限内,说明过程是受控的。如果点超出控制限,则说明过程可能失控,需要采取措施来调整和改进过程。

除了X-bar控制图外,还有其他类型的控制图,如均值-极差控制图(X-R图)和不合格品率控制图(P图)等。这些控制图都有各自的特点和用途,可以根据需要选择适合的控制图来监控生产过程的质量。

2.X-bar 图的绘制过程

收集数据:从生产过程中连续抽取样本,并记录每个样本的平均值。

计算平均值和范围:对每个样本计算平均值(X-bar)和范围(R)。

绘制图表:使用统计软件或手动绘制X-bar 图。图表上通常包括X-bar 和R 两个子图。

确定控制限:根据样本数据计算上限和下限,这有助于确定过程是否处于控制状态。

解读图表:监测X-bar 图以识别任何趋势、偏移或异常点。超出控制限的数据可能表明需要调整或改进生产过程。

3.X-bar 图的优势

实时监测:提供对生产过程实时性能的监控。

识别变异:有助于迅速识别过程中的变异,从而采取纠正措施。

持续改进: 通过识别问题,推动持续改进和质量管理。

4.X-bar 图的绘制

import numpy as np
import matplotlib.pyplot as plt
​
# 示例数据,包含10个子组的样本数据,每个子组有5个样本
data = np.array([
    [10, 12, 11, 9, 17],
    [14, 15, 13, 11, 12],
    [10, 9, 11, 12, 10],
    [12, 11, 10, 12, 11],
    [9, 11, 22, 4, 12],
    [11, 10, 15, 10, 11],
    [13, 12, 11, 12, 14],
    [10, 9, 11, 12, 10],
    [12, 4, 34, 12, 11],
    [9, 11, 10, 9, 12]
])
​
# 计算每个子组的平均值和范围
subgroup_Xmeans = np.mean(data, axis=1)  # 计算每个子组的平均值
subgroup_Rranges = np.ptp(data, axis=1)  # 计算每个子组的范围(即极差)
​
# 计算总体平均值
overall_Xmean = np.mean(subgroup_Xmeans)  # 所有子组平均值的平均值,表示整体过程的中心位置。它是X-bar图中的中心线。
overall_Rmean = np.mean(subgroup_Rranges)  # 所有子组的极差的平均值,表示整体过程的离散程度
​
# 计算A2、D3和D4常数(这里假设样本大小为5,您可以根据实际情况修改)
A2 = 0.577
D3 = 0
D4 = 2.114
​
# 计算控制限
UCL_X = overall_Xmean + A2 * overall_Rmean
LCL_X = overall_Xmean - A2 * overall_Rmean
​
UCLR = D4 * overall_Rmean
LCLR = D3 * overall_Rmean
​
# 计算R控制图的控制限(使用D4常数)
UCL_R = UCLR
LCL_R = LCLR
​
# 计算每个子组的Z分数
z_scores = (subgroup_Xmeans - overall_Xmean) / (overall_Rmean / np.sqrt(data.shape[1]))
​
# 设置阈值,通常选择2或3作为阈值
threshold = 3
​
# 异常检测并标记异常点
plt.figure(figsize=(9, 6))
plt.subplot(1, 2, 1)
plt.plot(subgroup_Xmeans, marker='o', linestyle='-')
plt.axhline(y=overall_Xmean, color='r', linestyle='--', label='Overall Xmean')
plt.axhline(y=UCL_X, color='g', linestyle='--', label='UCL')
plt.axhline(y=LCL_X, color='g', linestyle='--', label='LCL')
plt.legend()
plt.title('X-bar')
plt.xlabel('Subgroup')
plt.ylabel('Subgroup Mean')
​
# 异常检测 - 使用Z分数
outliers = np.where(np.abs(z_scores) > threshold)[0]
for o in outliers:
    plt.annotate(f'Outlier (Subgroup {o + 1})', (o, subgroup_Xmeans[o]), textcoords="offset points", xytext=(0, 10),
                 ha='center')
​
# 绘制R控制图
plt.subplot(1, 2, 2)
plt.plot(subgroup_Rranges, marker='o', linestyle='-')
plt.axhline(y=overall_Rmean, color='r', linestyle='--', label='Overall Rmean')
plt.axhline(y=UCL_R, color='g', linestyle='--', label='UCL')
plt.axhline(y=LCL_R, color='g', linestyle='--', label='LCL')
plt.legend()
plt.title('R Chart')
plt.xlabel('Subgroup')
plt.ylabel('Subgroup Range')
​
plt.tight_layout()
plt.show()
​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值