PYTHON计算CPK及规范限合格率,绘制直方图概率密度曲线

本文主要是介绍PYTHON计算CPK及规范限合格率,绘制直方图概率密度曲线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CPK(过程能力指数)是一个用于衡量一个过程的稳定性和一致性的统计指标,特别用于制造业和质量管理中。它衡量了一个过程的变异性与规范界限的关系,帮助确定过程是否能够产生合格的产品或服务。

正态分布假设:CPK的计算通常基于正态分布(或近似正态分布)的假设。这意味着过程数据应该呈现出类似正态分布的特征。如果数据不服从正态分布,可能需要进行转换或采用其他方法来处理。 

CPK 的计算涉及以下步骤:

  1. 确定规范上限(USL)和规范下限(LSL):这是产品或过程的规范要求。USL 表示规范上限,LSL 表示规范下限。

  2. 计算过程的标准偏差(σ):标准偏差是过程数据的统计度量,它表示数据的离散程度。你需要收集足够的过程数据样本,然后计算标准偏差。

  3. 计算 CPK:CPK 的计算公式如下:

    CPK = min((USL - μ) / (3σ), (μ - LSL) / (3σ))

    其中:

    • USL 是规范上限
    • LSL 是规范下限
    • μ 是过程的均值
    • σ 是过程的标准偏差

CPK 值的计算结合了过程的均值、标准偏差以及规范上限(USL)和规范下限(LSL),它用于标准化地衡量一个过程的能力以产生在规格要求范围内的产品。以下是对CPK的解释的详细说明:

  1. 过程均值(Mean):CPK 考虑了过程的均值,即过程数据的平均值。均值反映了过程的中心位置,即过程在规格要求范围内的对准程度。如果均值与规格中心接近,CPK 值可能较高,表示过程接近规格要求。

  2. 标准偏差(Standard Deviation):标准偏差衡量了过程数据的变异性。它表示了过程的离散程度,即数据点在均值周围的分布程度。CPK 考虑了标准偏差,因为过程的变异性直接影响产品是否在规格要求范围内。

  3. 规范上限(USL)和规范下限(LSL):USL 表示产品在某个方面的最大允许值,LSL 表示最小允许值。CPK 的计算将这两个规格限制与过程均值和标准偏差相结合,以确定过程能否生产满足规格要求的产品。

  4. 标准化度量:CPK 的计算通过将 (USL - Mean)(Mean - LSL) 分别除以 (3 * Standard Deviation),将这两个偏差标准化为标准偏差的单位。这个标准化过程允许将不同过程的能力进行比较,并且以一种标准化的方式表示。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
from scipy.integrate import quad  # Import the quad function for integrationplt.rcParams['font.sans-serif'] = ['SimHei']  # 防止中文标签乱码
plt.rcParams['axes.unicode_minus'] = False
# 生成一个示例数据集,这里使用随机数据
np.random.seed(0)
data = np.random.normal(loc=50, scale=5, size=40)  # 均值=50,标准差=5# 规范上限和规范下限,这里只是示例值,你需要根据实际情况提供
USL = 60  # 规范上限
LSL = 40  # 规范下限# 计算均值和标准偏差
mean = np.mean(data)
std_dev = np.std(data)
Us_Ls_Center = (USL+LSL)/2# 计算 CPK
cpk = min((USL - mean) / (3 * std_dev), (mean - LSL) / (3 * std_dev))
print("均值:", mean)
print("标准偏差:", std_dev)
print("CPK:", cpk)
# 计算规范上限和规范下限之间的合格率
acceptance_rate = norm.cdf(USL, loc=mean, scale=std_dev) - norm.cdf(LSL, loc=mean, scale=std_dev)
print("合格率:", acceptance_rate)cp= (USL-LSL) / (6*std_dev) # 规格范围相对于过程的变异性有多宽
print("CP:", cp)# 创建概率密度曲线的 x 值范围
x = np.linspace(mean - 3 * std_dev, mean + 3 * std_dev, 100)# 计算概率密度函数的值
pdf = norm.pdf(x, loc=mean, scale=std_dev)# 计算规范上限和规范下限之间的合格率
def pdf_function(x):return norm.pdf(x, loc=mean, scale=std_dev)
def calculate_acceptance_rate(pdf_func, LSL, USL):area, _ = quad(pdf_func, LSL, USL)return area
acceptance_rate = calculate_acceptance_rate(pdf_function, LSL, USL)
print("合格率:", acceptance_rate)# 绘制直方图
plt.hist(data, bins=10, density=True, alpha=0.6, color='b', label='Generated Data')# 绘制概率密度曲线图
plt.plot(x, pdf, label='概率密度曲线')
plt.xlabel('观测值')
plt.ylabel('概率密度')
plt.title('概率密度曲线图')# 添加规范上限、规范下限、规格中心线和3倍标准差线
plt.axvline(x=USL, color='g', linestyle='--', label='USL规范上限')
plt.axvline(x=LSL, color='g', linestyle='--', label='LSL规范下限')
plt.axvline(x=Us_Ls_Center, color='r', linestyle='--', label='Center规范中心')
plt.axvline(x=mean, color='orange', linestyle='--', label='过程中心线')
plt.axvline(x=mean + 3 * std_dev, color='orange', linestyle='-', label='3倍标准差线')
plt.axvline(x=mean - 3 * std_dev, color='orange', linestyle='-',label='3倍标准差线')plt.legend()
plt.grid(True)# 显示图形
plt.show()

​​​​​​​ 

CPK 和 CP 都是用于衡量过程能力的指标,它们在质量管理和质量控制领域经常被使用,但它们有不同的计算方法和用途:

  1. CP(过程能力指数)

    • CP 表示过程能力指数,它用于衡量一个过程的能力,以产生在规格上限(USL)和规格下限(LSL)之间的产品。
    • CP 的计算公式为:CP = (USL - LSL) / (6σ),其中 USL 表示规格上限,LSL 表示规格下限,σ 表示过程的标准偏差。
    • CP 的值告诉我们规格范围相对于过程的变异性有多宽,但它不考虑过程的偏差(均值与规格中心的偏离)。
  2. CPK(过程能力指数修正版)

    • CPK 也用于衡量过程的能力,但相对于 CP,它考虑了过程的偏差。
    • CPK 的计算公式为:CPK = min((USL - Mean) / (3σ), (Mean - LSL) / (3σ)),其中 USL 表示规格上限,LSL 表示规格下限,σ 表示过程的标准偏差,Mean 表示过程的均值。
    • CPK 考虑了过程的偏差,并告诉我们过程的能力,以产生在规格上限和规格下限之间的产品。CPK 值越大,表示过程的能力越高,因为它同时考虑了规格要求和过程的变异性。

要点总结:

  • CP 衡量规格范围相对于过程变异性的宽度。
  • CPK 同时考虑规格范围、过程变异性和过程偏差。
  • CPK 是更全面和常用的过程能力指数,因为它提供了更多信息,特别是对于那些偏差较大的过程。在质量管理中,通常更关注 CPK 值。

 绘制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_RmeanUCLR = 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=(6, 9))
plt.subplot(2, 1, 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(2, 1, 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()

这篇关于PYTHON计算CPK及规范限合格率,绘制直方图概率密度曲线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/163925

相关文章

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

Python中的getopt模块用法小结

《Python中的getopt模块用法小结》getopt.getopt()函数是Python中用于解析命令行参数的标准库函数,该函数可以从命令行中提取选项和参数,并对它们进行处理,本文详细介绍了Pyt... 目录getopt模块介绍getopt.getopt函数的介绍getopt模块的常用用法getopt模

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.