Python绘制X-bar图和R图 | 统计过程控制SPC

X-bar图和R图是用于统计过程控制(SPC)的两种常用工具,用于监测过程的平均值和范围(变异性)。这些图有助于识别过程中的变化和异常,以便及时采取纠正措施。

**X-bar图(平均值控制图)**显示了一系列样本的平均值,用于监测过程的平均值是否保持在可接受的范围内。X-bar图通常由以下几个要素组成:

  1. 样本平均值:每个样本的数据点的平均值,通常用于每个样本的数据集。

  2. 中心线:通常是所有样本平均值的平均值,表示过程的目标值。

  3. 控制限:通常包括上限控制限和下限控制限,用于指示过程平均值的可接受范围。控制限的计算方法可以根据需求不同而有所不同,常用的方法包括使用标准偏差和样本大小。

  4. 数据点:每个样本的平均值在X-bar图上以数据点的形式表示,通常用线连接这些数据点以显示趋势。

**R图(范围控制图)**显示了一系列样本的范围(最大值和最小值之间的差异),用于监测过程的变异性。R图通常由以下几个要素组成:

  1. 范围(R):每个样本的最大值和最小值之间的差异。

  2. 中心线:通常是所有R值的平均值,表示过程的变异性目标。

  3. 控制限:通常包括上限控制限,用于指示R值的可接受范围。控制限的计算方法可以根据需求不同而有所不同,常用的方法包括使用标准偏差和样本大小。

  4. 数据点:每个样本的R值在R图上以数据点的形式表示,通常用线连接这些数据点以显示趋势。

在绘制X-bar图和R图之前,需要进行以下步骤:

  1. 收集样本数据并确定样本大小和采样频率。

  2. 计算每个样本的平均值(X-bar图)和范围(R图)。

  3. 计算X-bar图和R图的中心线和控制限。

  4. 绘制X-bar图和R图,并将样本数据点与中心线和控制限一起显示。

要生成表格数据并写入文件,然后读取数据并计算X-bar图和R图所需的平均值、标准差等,您可以按照以下步骤进行操作。首先,确保您已经安装了NumPy、matplotlib和Pandas库。

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 防止中文标签乱码,还有通过导入字体文件的方法
plt.rcParams['axes.unicode_minus'] = False# 生成随机数据,例如,生成5个样本,每个样本5个数据点
data = np.random.rand(5, 5)# 创建一个Pandas DataFrame
df = pd.DataFrame(data, columns=['Sample 1', 'Sample 2', 'Sample 3', 'Sample 4', 'Sample 5'])# 将数据写入CSV文件
df.to_csv('sample_data.csv', index=False)# 从CSV文件读取数据
df = pd.read_csv('sample_data.csv')# 打印数据框的前几行以确保数据已成功加载
print(df.head())
# 计算每个样本的平均值
x_bar = df.mean(axis=1)# 计算每个样本的范围(R)
R = df.max(axis=1) - df.min(axis=1)# 计算平均值和R的平均值
x_bar_avg = x_bar.mean()
R_avg = R.mean()# 计算X-bar图的控制限(通常为平均值的上下控制限)
x_bar_upper_limit = x_bar_avg + 0.577 * R_avg
x_bar_lower_limit = x_bar_avg - 0.577 * R_avg# 计算R图的控制限(通常为R的上限)
R_upper_limit = R_avg * 2.114# 打印计算结果
print(f'X-bar平均值: {x_bar_avg}')
print(f'R平均值: {R_avg}')
print(f'X-bar控制限: ({x_bar_lower_limit}, {x_bar_upper_limit})')
print(f'R控制限: {R_upper_limit}')# 绘制X-bar图
plt.figure(figsize=(10, 6))
plt.plot(x_bar, marker='o', linestyle='-')
plt.axhline(y=x_bar_avg, color='r', linestyle='--', label='平均值')
plt.axhline(y=x_bar_upper_limit, color='g', linestyle='--', label='控制限')
plt.axhline(y=x_bar_lower_limit, color='g', linestyle='--')
plt.title('X-bar图')
plt.xlabel('样本编号')
plt.ylabel('平均值')
plt.legend()
plt.grid()
plt.show()# 绘制R图
plt.figure(figsize=(10, 6))
plt.plot(R, marker='o', linestyle='-')
plt.axhline(y=R_avg, color='r', linestyle='--', label='平均值')
plt.axhline(y=R_upper_limit, color='g', linestyle='--', label='控制限')
plt.title('R图')
plt.xlabel('样本编号')
plt.ylabel('范围 (R)')
plt.legend()
plt.grid()
plt.show()#    Sample 1  Sample 2  Sample 3  Sample 4  Sample 5
# 0  0.341066  0.113474  0.924694  0.877339  0.257942
# 1  0.659984  0.817222  0.555201  0.529651  0.241852
# 2  0.093103  0.897216  0.900418  0.633101  0.339030
# 3  0.349210  0.725956  0.897110  0.887086  0.779876
# 4  0.642032  0.084140  0.161629  0.898554  0.606429
# X-bar平均值: 0.568532531479609
# R平均值: 0.7112440409136231
# X-bar控制限: (0.1581447198724485, 0.9789203430867696)
# R控制限: 1.5035699024913993

 

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 防止中文标签乱码,还有通过导入字体文件的方法
plt.rcParams['axes.unicode_minus'] = False# 假设您已经有了样本数据,存储在x_bar_values和R_values中# 计算中心线和控制限
x_bar_centerline = np.mean(x_bar_values)
R_centerline = np.mean(R_values)
R_bar = np.mean(R_values)# 计算控制限(通常使用常见的控制图常数,如A2,D3,D4)
A2 = 0.729
D3 = 0
D4 = 2.282
x_bar_UCL = x_bar_centerline + A2 * R_bar
x_bar_LCL = x_bar_centerline - A2 * R_bar
R_UCL = D4 * R_bar
R_LCL = D3 * R_bar# 绘制X-bar图
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(x_bar_values, marker='o', linestyle='-')
plt.axhline(y=x_bar_centerline, color='r', linestyle='--', label='中心线')
plt.axhline(y=x_bar_UCL, color='g', linestyle='--', label='上限控制限')
plt.axhline(y=x_bar_LCL, color='g', linestyle='--', label='下限控制限')
plt.title('X-bar图')
plt.xlabel('样本编号')
plt.ylabel('平均值')
plt.legend()
plt.grid()# 绘制R图
plt.subplot(2, 1, 2)
plt.plot(R_values, marker='o', linestyle='-')
plt.axhline(y=R_centerline, color='r', linestyle='--', label='中心线')
plt.axhline(y=R_UCL, color='g', linestyle='--', label='上限控制限')
plt.title('R图')
plt.xlabel('样本编号')
plt.ylabel('范围 (R)')
plt.legend()
plt.grid()plt.tight_layout()
plt.show()

这段代码将生成X-bar图和R图,帮助您监控过程的平均值和范围,以便识别任何过程中的异常或变化。请根据您的数据和需求进行适当的修改。在实际应用中,您可能需要根据标准和过程的特性来调整控制限和常数。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/115588.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023研究生数学建模E题保姆级思路 出血性脑卒中临床智能诊疗

本次E题是一道J机器学习题目,难度也比较高,该题一般是有正确结果的,容易踩坑,不太建议小白选择,小白可以选择D题,D题思路也可以看另一篇文章,总的难度都不算低,这三道的难度接近&…

蓝桥杯 题库 简单 每日十题 day8

01 扫雷 题目描述 在一个n行列的方格图上有一些位置有地雷,另外一些位置为空。 请为每个空位置标一个整数,表示周围八个相邻的方格中有多少个地雷。 输入描述 输入的第一行包含两个整数n,m。 第2行到第n1行每行包含m个整数,相邻整…

02-数据结构-线性表

线性表的特点: (1)存在惟一一个被称为"第一个"的数据元素 (2)存在惟一一个被称为"最后一个"的数据元素 (3)除第一个之外,集合中每一个数据元素均只有一个前驱 (4)除最后一个之外,集合中每个数据均只有一个后继 线性表是…

发送实时音频数据到udp服务

由于浏览器不能直接连接udp服务,所以需要搭建一个websocket服务做中转,让websocket服务连接udp服务 1、vue开发获取实时音频数据并按4096分包后添加rtp协议头发送到websocket服务(连接websocket自行编写连接到127.0.0.1:8889) da…

【数据增强】

【数据增强】 1 数据增强的情形2 数据增强的方法 1 数据增强的情形 当数据比较小,难以获取新的训练数据时,可以考虑数据增强,如随机裁剪部分,随机左右上下翻转、随机旋转一个角度、随机亮度变化等微小变化,数据的多样…

手写实现简易Spring框架

该文章记录的是自己实现简易Spring框架的记录,简化了源码中的大量操作,没有实现三级缓存的机制。 其中将会对Component,ComponentScan,Scope,Autowired注解。BeanDefinition类以及ApplicationContext、BeanPostProcess…

如何在RK3568开发板上实现USBNET?——飞凌嵌入式/USB Gadget/USB-NET/网络

本文将借助飞凌嵌入式OK3568-C开发板为大家介绍实现USBNET模式的方法,在这之前需要先知道什么是USB Gadget——USB Gadget是指所开发的电子设备以USB从设备的模式通过USB连接到主机。举个例子:将手机通过USB线插入PC后,手机就是USB Gadget。同…

BOM与DOM--记录

BOM基础(BOM简介、常见事件、定时器、this指向) BOM和DOM的区别和联系 JavaScript的DOM与BOM的区别与用法详解 DOM和BOM是什么?有什么作用? 图解BOM与DOM的区别与联系 BOM和DOM详解 JavaScript 中的 BOM(浏览器对…

医疗虚拟仿真和虚拟现实有什么区别?哪个更好?

随着我们在仿真教育中越来越多地使用新技术,区分虚拟模式的类型很重要。虚拟仿真是一个统称,用来概括术语来描述各种基于仿真的体验,从基于屏幕的平台到沉浸式虚拟现实。然而,各虚拟平台在保真度、沉浸感和临场感的水平上有很大差…

流媒体及直播相关知识

文章目录 前言一、流媒体1、基本概念2、流式传输3、流媒体技术原理4、流媒体传输模式5、H.264 流媒体传输系统框架 二、直播1、直播中使用的流媒体协议2、直播的模块划分3、视频直播流程①、推流到服务器②、服务器流分发 前言 本文主要讲解流媒体及其直播相关知识&#xff0c…

【期望+状压DP】 2021 CCPC G

Problem - G - Codeforces 题意: 思路: 注意到 k 的范围是18,可以考虑状压 要求最小的期望长度,我们可以遍历所有可能的路径,统计这些路径的期望长度的最小值即可 那么怎么遍历呢?这里很经典的处理方式…

初识软件工程

软件工程是一门涵盖软件开发、维护和管理的学科,它通过应用工程化的原则和方法来提高软件系统的质量和可靠性。在当今数字化和信息化的时代,软件工程对于现代社会的各个领域都具有至关重要的作用。 基本概念? 计算机系统中与硬件相互依存的一…