计算CPK及规范限合格率,并绘制概率密度曲线

news2024/7/6 18:51:04

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 integration

plt.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.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_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=(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()

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kfka监控工具--Kafka-eagle安装

1、开启Kafka JMX端口 JMX 是一个为应用程序植入管理功能的框架 在启动Kafka脚本之前,添加: export JMX_PORT9988 nohup bin/kafka-server-start.sh comfig/server.properties 2、安装jdk配置好JAVA_HOME 3、将kafka_eagle 上传并解压 tar -zxvf …

想做扫码看图效果,你需要学会这一招

现在扫描二维码来查看图片是常见的一种方式,比如资料图片、个人照片、pdf图片、表情包等等都可以通过扫码的方式来展现。而且生成图片二维码的方法也非常的简单,只需要使用二维码在线生成器,就可以使用浏览器来快速完成制作,对于还…

VS2022+qt5.15.2+cmake3.23.2配置VTK9.1.0版本

VS2022qt5.15.2cmake3.23.2VTK9.1.0 尝试了好多次,终于成了~ 软件安装 先把需要的软件都安装好! VS2022安装教程: https://blog.csdn.net/qq_44005305/article/details/132295064 qt5.15.2安装教程:https://blog.csdn.net/Qi_1337/article…

python—如何提取word中指定内容

假设有一个Word,该Word中存在 “联系人” 关键字,如何将该Word中的联系人所对应的内容提取出来呢? 该Word内容如下所示: 要在给定的Word文档中提取出与"联系人"关键字对应的内容,可以使用Python的py…

qt开发从入门到实战2

以下是本人学习笔记 原视频:最新QT从入门到实战完整版|传智教育 qt开发从入门到实战1 练习示例 设计一个按钮,点击时弹出新窗口,再次点击时新窗口关闭 // exerciseQWidget* second_window new QWidget();QPushButton* btn3 new QPushBu…

兽药经营小程序微信商城的作用是什么

无论家宠还是畜牧养殖,生病杀虫总是不可少的,尤其对铲屎官们来说,宠物的健康状况很重要,以此花费百元千元也并不觉心疼,兽药的需求度也是非常高,那么对相关从业商家来说,遇到的难题有哪些&#…

淘宝大数据揭秘:购物狂欢节背后的秘密

淘宝详情接口是淘宝开放平台提供的一种API接口,主要用于获取淘宝商品详情信息。通过该接口,开发者可以在自己的网站或应用程序中快速获取淘宝商品的详细信息,包括价格、图片、商品描述等。 要使用淘宝详情接口,首先需要在淘宝开放…

[NISACTF 2022]babyserialize - 反序列化+waf绕过【*】

[NISACTF 2022]babyserialize 一、解题过程二、思考总结&#xff08;一&#xff09;、关于题目的小细节&#xff08;二&#xff09;、关于弱类型比较技巧 一、解题过程 题目代码&#xff1a; <?php include "waf.php"; class NISA{public $fun"show_me_fl…

java Spring Boot整合jwt实现token生成

先在 pom.xml 文件中注入依赖 <!-- JWT --> <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.2</version> </dependency> <dependency><groupId>io.jsonw…

解决方案:AI赋能工业生产3.0,从工业“制造”到“智造”

视频监控技术是一种既成熟又广泛应用于工业制造领域的先进技术。它可以通过安装各种摄像头和传感器来监测整个生产流程&#xff0c;包括原材料的采购、加工、装配和物流等环节&#xff0c;从而实现对生产过程的实时监控和管理&#xff0c;以及对异常事件的及时预警和响应。 在…

CSS高手必会秘籍《混合模式》

&#x1fab4; 背景 前几天我写了两篇关于css的文章&#xff0c;热度都还不错。 # 原创动画《优弧&#xff0c;你小子&#xff01;&#x1f621;》 # &#x1f973;&#x1f973;&#x1f973; 倾情奉献&#xff0c;纯css&#xff08;无图&#xff0c;无JS&#xff09;原创中…

6.canvas绘制基本图形——椭圆

ellipse ellipse是一个用来绘制椭圆的api&#xff0c;它拥有8个参数 参数一&#xff1a;椭圆圆心的 x 轴坐标。 参数二&#xff1a;椭圆圆心的 y 轴坐标。 参数三&#xff1a;椭圆长轴的半径。 参数四&#xff1a;椭圆短轴的半径。 参数五&#xff1a;椭圆的顺时针旋转角度&am…

6.绘制三角形

愿你出走半生,归来仍是少年 上一个案例通过Buffer实现了点集合的传入并一次性绘制多个点。当前案例通过Buffer传入多个点&#xff0c;并一次性通过点绘制出一个三角形。 1.知识点 1.1.gl_PointSize 只有在绘制点时才有效&#xff0c;该案例中的顶点着色器中已移除此代码。 1…

学生必备的笔记工具比较适合用哪个

学习与笔记紧密相连&#xff0c;它们是知识获取和积累的有效途径。通过记录笔记&#xff0c;我们不仅可以更好地理解和记忆学习内容&#xff0c;还可以随时翻阅&#xff0c;巩固知识点。然而&#xff0c;传统的纸质笔记在面对大量学习内容时显得力不从心&#xff0c;而电子笔记…

查找文件夹下不同的图片名字

描述&#xff1a;文件夹1和文件夹2下有3张图片&#xff0c;其中文件夹1下有柯南.jpg、柯南1.jpg、柯南2.jpg&#xff0c;文件夹2下有柯南.jpg、柯南3.jpg、柯南4.jpg&#xff0c;找出文件夹1中不同于文件夹2的名字&#xff0c;以及文件夹2中不同于文件夹1的名字。文件解构如下图…

uni-app:引入echarts(使用renderjs)

效果 代码 <template><view click"echarts.onClick" :prop"option" :change:prop"echarts.updateEcharts" id"echarts" class"echarts"></view> </template><script>export default {data()…

【源码】hamcrest 源码阅读 空对象模式、模板方法模式的应用

文章目录 前言1. 类图概览2. 源码阅读2.1 抽象类 BaseMatcher2.1 接口 Description提炼模式&#xff1a;空对象模式 2. 接口 Description 与 SelfDescribing 配合使用提炼模式 模板方法 后记 前言 hamcrest &#xff0c;一个被多个测试框架依赖的包。听说 hamcrest 的源码质量…

【芯片设计- RTL 数字逻辑设计入门 4 - 第一个 RTL Bug 分析之路 】

文章目录 1.1 Veloce 验证1.1.1 问题背景1.1.2 问题分析1.1.3 调试小技巧 1.1 Veloce 验证 本文是基于veloce验证平台进行的&#xff0c;关于veloce的介绍如下&#xff1a; 传统的验证技术中,主要采用两种手段。 一种是基于EDA工具(Simulator)的仿真验证。这种验证方式是基于…

谈谈你对 finalize 方法的理解,该怎样回答才能体现出高水平?浮于表面的答案永远不行!

目录 1. finalize 方法是什么&#xff1f; 2. finalize 方法的作用&#xff1f; 3. 为什么强烈不建议在 finalize 方法中进行资源的释放和清理工作 1. finalize 方法是什么&#xff1f; 首先要知道&#xff0c;finalize 方法是 Object 类中的一个方法&#xff0c;从源码中叶…

ES6 class类的静态方法static有什么用

在项目中&#xff0c;工具类的封装经常使用静态方法。 // amap.jsimport AMapLoader from amap/amap-jsapi-loader; import { promiseLock } from triascloud/utils; /*** 高德地图初始化工具*/ class AMapHelper {static getAMap window.AMap? window.AMap: promiseLock(AM…