R/d2及S/C4估计总体标准差,比较其CPK及规格限概率的差异

R/d2 和 S/C4 是用于估计总体标准差的无偏估计方法,通常用于控制图中。这些估计方法的主要目的是通过样本数据来估计总体标准差,以便监测过程的稳定性和变异性,而不需要收集整个总体的数据。

具体来说:

  • R图中的 R/d2 和 S图中的 S/C4 都是无偏估计,其中 d2 和 C4 是常数,用于修正范围和标准差以获得更接近总体标准差的估计值。
import numpy as np
import scipy.stats as stats
from scipy.stats import norm
import matplotlib.pyplot as plt
# 输入数据
data = [[6.4, 7.0, 6.4, 6.4, 7.1],[6.8, 6.4, 6.4, 6.3, 6.5],[6.3, 7.1, 6.5, 6.4, 7.0],[6.1, 6.8, 5.9, 5.8, 6.0],[6.4, 6.9, 6.8, 6.5, 6.9],[6.6, 6.0, 6.1, 6.2, 5.9],[6.3, 6.9, 6.6, 6.2, 6.8],[6.4, 5.6, 6.2, 6.0, 5.8],[6.3, 6.7, 6.6, 6.4, 6.3],[6.7, 5.9, 5.8, 6.3, 6.2],[6.6, 7.0, 6.5, 6.4, 7.1],[6.8, 6.2, 6.5, 6.2, 5.8]
]
# data1 输入过程上下限
upper_spec_limit = 7
lower_spec_limit = 5.8data1 = [[5.05, 5.03, 5.04, 4.91, 4.99, 4.97, 4.97, 4.91, 4.97, 5.05],[4.96, 4.94, 4.93, 4.91, 5.04, 5.01, 4.96, 4.93, 4.90, 5.02],[4.99, 5.05, 5.04, 5.05, 5.00, 4.98, 4.90, 5.05, 4.91, 4.93],[5.05, 4.93, 4.91, 4.99, 4.92, 4.91, 5.04, 4.98, 5.03, 5.01],[5.05, 5.00, 4.92, 4.93, 5.00, 4.98, 5.10, 4.95, 4.91, 4.98],[5.02, 5.01, 5.01, 4.91, 5.05, 4.97, 5.03, 5.03, 4.98, 5.06],[4.91, 5.02, 5.07, 5.05, 5.08, 5.01, 5.03, 5.03, 5.07, 4.96],[4.95, 4.98, 4.91, 5.03, 5.03, 5.08, 4.92, 5.09, 5.10, 5.00],[4.98, 4.97, 4.97, 5.09, 5.03, 5.07, 5.08, 4.96, 4.96, 5.03],[4.99, 4.91, 5.02, 4.97, 5.04, 4.99, 5.05, 4.93, 5.05, 4.92]
]  #检测不符合正态,凑合着演示用
# data1 输入过程上下限
# upper_spec_limit = 5.2
# lower_spec_limit = 4.8# 3. Shapiro-Wilk检验
shapiro_stat, shapiro_p = stats.shapiro(data)
print("\nShapiro-Wilk检验统计值:", shapiro_stat)
print("Shapiro-Wilk检验p-value:", shapiro_p)
if shapiro_p > 0.05:print("数据可能来自正态分布")
else:print("数据可能不来自正态分布")# 选择适当的d2及C4 值(与样本容量有关)
sample_size = len(data[0])  # 假设所有组的样本容量相同
# 根据样本容量选择 C4 值
C4_values = {5: 0.9400,6: 0.9515,7: 0.9594,8: 0.9650,9: 0.9693,10: 0.9727,
}
d2_values = {
5: 2.326, 
6: 2.534,
7: 2.704, 
8: 2.847, 
9: 2.970, 
10: 3.078, 
}print("sample_size子组样本容量: ", sample_size)
C4 = C4_values.get(sample_size, None)
print("根据子组样本容量选择C4值: ",C4)
d2 = d2_values.get(sample_size, None)
print("根据子组样本容量选择d2值: ",d2)# 计算data整体标准差
population_std = np.std(data)# 计算data样本标准差
sample_std = np.std(data, ddof=1)  # 使用ddof参数来指定自由度print("\ndata整体标准差:", population_std)
print("data样本标准差:", sample_std)# 计算X-bar图的x_double_bar中心线均值,用于绘制概率密度曲线
x_double_bar = np.mean([np.mean(subgroup) for subgroup in data]) #x_double_bar中心线均值# 计算R/d2估计的总体标准差
r_values = [max(subgroup) - min(subgroup) for subgroup in data]
r_bar = np.mean(r_values)
sigma_r = r_bar / d2# 计算S/C4估计的总体标准差
s_values = [np.std(subgroup, ddof=1) for subgroup in data]
s_bar = np.mean(s_values)
sigma_s = s_bar / C4# 计算CPK, 其中x_double_bar中心线均值
cpk_r = min((upper_spec_limit - x_double_bar) / (3 * sigma_r), (x_double_bar - lower_spec_limit) / (3 * sigma_r))
cpk_s = min((upper_spec_limit - x_double_bar) / (3 * sigma_s), (x_double_bar - lower_spec_limit) / (3 * sigma_s))print("\n通过R/d2估计的总体标准差 (σ):", sigma_r)
print("通过S/C4估计的总体标准差 (σ):", sigma_s)
print("R/d2法计算的CPK:", cpk_r)
print("S/C4法计算的CPK:", cpk_s)# 计算标准分数
z_upper_r = (upper_spec_limit - x_double_bar) / sigma_r  # 使用R/d2估计的σ
z_lower_r = (lower_spec_limit - x_double_bar) / sigma_r  # 使用R/d2估计的σz_upper_s = (upper_spec_limit - x_double_bar) / sigma_s  # 使用S/C4估计的σ
z_lower_s = (lower_spec_limit - x_double_bar) / sigma_s  # 使用S/C4估计的σ# 计算在规格限内的概率(使用R/d2估计的σ)
probability_within_spec_r = norm.cdf(z_upper_r) - norm.cdf(z_lower_r)# 计算在规格限内的概率(使用S/C4估计的σ)
probability_within_spec_s = norm.cdf(z_upper_s) - norm.cdf(z_lower_s)print("\n使用R/d2法估计的概率(在规格限内):", probability_within_spec_r)
print("使用S/C4法估计的概率(在规格限内):", probability_within_spec_s)# 将数据展开为一维数组,用于画data数据集直方图
data_flat = [item for sublist in data for item in sublist]
#  flat_data = np.concatenate(data) # 扁平化数据# 绘制整体数据集的直方图并叠加概率密度曲线,标准差用sigma_r=R/d2估计
plt.figure(figsize=(5, 5))
plt.hist(data_flat, bins=12, density=True, alpha=0.6, color='b', label='Histogram')
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = norm.pdf(x, x_double_bar, sigma_r)
plt.plot(x, p, 'r', linewidth=2, label='PDF (Population)')
plt.axvline(x_double_bar, color='r', linestyle='--', label='X-Bar̄')
plt.axvline(upper_spec_limit, color='b', linestyle='-', label='USL')
plt.axvline(lower_spec_limit, color='b', linestyle='-', label='LSL')
plt.xlabel('Value')
plt.ylabel('Probability')
plt.title('Histogram (Population)')
plt.show()


Shapiro-Wilk检验统计值: 0.9730015993118286
Shapiro-Wilk检验p-value: 0.20416395366191864
数据可能来自正态分布
sample_size子组样本容量:  5
根据子组样本容量选择C4值:  0.94
根据子组样本容量选择d2值:  2.326

data整体标准差: 0.3711094477673968
data样本标准差: 0.37424122858811426

通过R/d2估计的总体标准差 (σ): 0.3116938950988822
通过S/C4估计的总体标准差 (σ): 0.3245199375603761

R/d2法计算的CPK: 0.6238314176245208
S/C4法计算的CPK: 0.5991756497496196

使用R/d2法估计的概率(在规格限内): 0.9454219702532735
使用S/C4法估计的概率(在规格限内): 0.9351733645056909

[Finished in 13.9s]

-------------------------
绘制X-Bar和R图,及数据集直方图概率密度曲线

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm# 输入数据
data = [[6.4, 7.0, 6.4, 6.4, 7.1],[6.8, 6.4, 6.4, 6.3, 6.5],[6.3, 7.1, 6.5, 6.4, 7.0],[6.1, 6.8, 5.9, 5.8, 6.0],[6.4, 6.9, 6.8, 6.5, 6.9],[6.6, 6.0, 6.1, 6.2, 5.9],[6.3, 6.9, 6.6, 6.2, 6.8],[6.4, 5.6, 6.2, 6.0, 5.8],[6.3, 6.7, 6.6, 6.4, 6.3],[6.7, 5.9, 5.8, 6.3, 6.2],[6.6, 7.0, 6.5, 6.4, 7.1],[6.8, 6.2, 6.5, 6.2, 5.8]
]# 输入过程上下限
upper_spec_limit = 7
lower_spec_limit = 5.5# 控制图参数
A2 = 0.577
D4 = 2.113
D3 = 0
d2 = 2.326  # 从表格或标准文献中查找# 计算X-Bar和R
x_bar = np.mean(data, axis=1)
r_values = np.ptp(data, axis=1)# 计算X-Bar和R的平均值
x_bar_bar = np.mean(x_bar)
r_bar = np.mean(r_values)
# r_values = [max(subgroup) - min(subgroup) for subgroup in data] #极差均值
# x_double_bar = np.mean([np.mean(subgroup) for subgroup in data]) #x_bar_bar中心线均值# 将数据展开为一维数组,用于画data数据集直方图
data_flat = [item for sublist in data for item in sublist]
# 计算整体标准差
# population_std = np.std(data_flat)
population_std = r_bar / d2# 计算UCL和LCL (X-Bar)
UCL_x_bar = x_bar_bar + A2 * r_bar
LCL_x_bar = x_bar_bar - A2 * r_bar# 计算UCL和LCL (R)
UCL_r = D4 * r_bar
LCL_r = D3 * r_bar# 绘制X-Bar控制图
plt.figure(figsize=(6, 6))
plt.subplot(3, 1, 1)plt.plot(x_bar, 'o-', label='X-Bar')
plt.axhline(x_bar_bar, color='r', linestyle='--', label='X-Bar̄')
plt.axhline(UCL_x_bar, color='g', linestyle='--', label='UCL(X-Bar)')
plt.axhline(LCL_x_bar, color='g', linestyle='--', label='LCL(X-Bar)')
plt.ylabel('X-Bar')
# plt.legend()plt.subplot(3, 1, 2)
plt.plot(r_values, 'o-', color='b', label='R')
plt.axhline(r_bar, color='r', linestyle='--', label='R̄')
plt.axhline(UCL_r, color='g', linestyle='--', label='UCL(R)')
plt.axhline(LCL_r, color='g', linestyle='--', label='LCL(R)')
# plt.xlabel('Sample')
plt.ylabel('R')
# plt.legend()
# plt.title('X-Bar-R')# 绘制整体数据集的直方图并叠加概率密度曲线
plt.subplot(3, 1, 3)
plt.hist(data_flat, bins=12, density=True, alpha=0.6, color='b', label='Histogram')
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = norm.pdf(x, np.mean(data_flat), population_std)
plt.plot(x, p, 'k', linewidth=2, label='PDF (Population)')
plt.axvline(x_bar_bar, color='r', linestyle='--', label='X-Bar̄')
plt.axvline(UCL_x_bar, color='g', linestyle='--', label='UCL(X-Bar)')
plt.axvline(LCL_x_bar, color='g', linestyle='--', label='LCL(X-Bar)')
plt.axvline(upper_spec_limit, color='b', linestyle='-', label='USL')
plt.axvline(lower_spec_limit, color='b', linestyle='-', label='LSL')
plt.xlabel('Value')
plt.ylabel('Probability')
# plt.legend()
plt.title('Histogram (Population)')
plt.tight_layout()
plt.show()print("np.std(data_flat)估计总体标准差",np.std(data_flat))
print("r_bar/d2估计总体标准差",r_bar / d2)

------------------------------------- 

 

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

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

相关文章

gitlab自编译 源码下载

网上都是怎么用 gitlab,但是实际开发中有需要针对 gitlab 进行二次编译自定义实现功能的想法。 搜索了网上的资料以及在官网的查找,查到了如下 gitlab 使用 ruby 开发。 gitlab 下载包 gitlab/gitlab-ce - Packages packages.gitlab.com gitlab/gitl…

本地搭建渲染农场和云渲染农场哪个更推荐?看完帮你省下几个w

 渲染农场是由众多机器组成的渲染集群,主要用于渲染单帧效果图或动画项目。凭借渲染农场的强大计算能力,设计师能够满足3D项目紧迫的交期要求。最近,小编注意到许多设计师对以下问题产生了疑惑: 是否可以自行搭建渲…

MySQL查询优化看一篇就够了

关联查询优化 数据准备 #分类 CREATE TABLE IF NOT EXISTS type( id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, card INT(10) UNSIGNED NOT NULL, PRIMARY KEY ( id ) );#图书 CREATE TABLE IF NOT EXISTS book(bookid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,cardINT(10…

fatal:Could not read from remote repository解决方法

Linux服务器如何连接GitHub? 生成SSH密钥 ssh-keygen -C “邮箱” -t rsa 存放位置一般是/root/.ssh/id_rsa 登录个人github,添加客户端生成的公钥 打开Settings,点击SSH and GPG keys,点击New SSH Key。Key中粘贴id_rsa.pub…

以太网UDP数据回环实验

一、TCP/IP协议簇 前面说到TCP/IP是一个协议簇,其中包含有IP协议、TCP协议、UDP协议、ARP协议、DNS协议、FTP协议等。设备之间要想完成通信,就必须通过这些网络通信协议。 物理层的主要作用就是传输比特流(将1、0转化为电流强弱来进行传输&am…

【来点小剧场--项目测试报告】个人博客项目自动化测试

前述 针对个人博客项目进行测试,个人博客主要由七个页面构成:注册页、登录页、个人博客列表页、博客发布页、博客修改页、博客列表页、博客详情页,主要功能包括:注册、登录、编辑并发布博客、修改已发布的博客、查看详情、删除博…

力扣环形链表(1)进阶环形链表(2)及环形链表的约瑟夫问题

为了加深对环形链表的理解和掌握,这两道题是很不错的选择。 这里所说环形链表不是一个圈圈的结构,而是带环链表。 链接:环形链表(1) 注意这里链表的长度 所以要注意链表是否为空 第一种方法,应该是比较容易…

使用Premiere、PhotoShop和Audition做视频特效

今天接到一个做视频的任务,给一个精忠报国的视频,要求:   ①去掉人声,就是将唱歌的人声去掉,只留下伴奏;   ②截图视频中的横幅,做一个展开的效果,类似卷纸慢慢展开;…

【LeetCode刷题(数据结构)】:二叉树的前序遍历

给你二叉树的根节点root 返回它节点值的前序遍历 示例1: 输入:root [1,null,2,3] 输出:[1,2,3] 示例 2: 输入:root [] 输出:[] 示例 3: 输入:root [1] 输出:[1] 示例…

【iOS】计算器仿写

文章目录 前言一、构建View界面二、Model中进行数据处理三、Controller层实现View与Model交互总结 前言 在前两周组内进行了计算器的仿写,计算器仿写主要用到了MVC框架的思想以及数据结构中用栈进行四则运算的思想,还有就是对OC中的字符串进行各种判错操…

【Java基础面试十二】、说一说你对面向对象的理解

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官: 说一说你对面向对象的理…

C++前缀和算法:构造乘积矩阵

基础知识点 C算法:前缀和基础 题目 给你一个下标从 0 开始、大小为 n * m 的二维整数矩阵 grid ,定义一个下标从 0 开始、大小为 n * m 的的二维矩阵 p。如果满足以下条件,则称 p 为 grid 的 乘积矩阵 : 对于每个元素 p[i][j] …

【LeetCode热题100】--75.颜色分类

75.颜色分类 方法一&#xff1a;使用单指针 class Solution {public void sortColors(int[] nums) {int n nums.length;int ptr 0;for(int i 0;i<n;i){if(nums[i] 0){int tmp nums[i];nums[i] nums[ptr];nums[ptr] tmp;ptr;}}for(int i ptr;i<n;i){if(nums[i] …

【Java基础面试十三】、面向对象的三大特征是什么?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;面向对象的三大特征是什…

MySQL单表查询基础综合练习

一、单表查询 素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 v…

Linux文件管理(上)

一、VIM编辑器 1、vi概述 vi&#xff08;visual editor&#xff09;编辑器通常被简称为vi&#xff0c;它是Linux和Unix系统上最基本的文本编辑器&#xff0c;类似于Windows 系统下的notepad&#xff08;记事本&#xff09;编辑器。 2、vim编辑器 Vim(Vi improved)是vi编辑器…

联邦学习+梯度+梯度剪枝

联邦学习需要参与者在每一次的本地训练后&#xff0c;上传所更新的模型参数并与其他参与者共享&#xff0c;而参数更新中仍有可能包含所有者的敏感信息 解决方案&#xff1a; 加密方法&#xff08;安全多方计算、同态加密&#xff09;通过将明文编码为密文的方式&#xff0c;…

基于模型预测人工势场的船舶运动规划方法,考虑复杂遭遇场景下的COLREG(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

1数据结构的分类,算法效率的度量

一&#xff0c;数据结构的定义和分类 数据结构&#xff1a;数据之间的关系即数据的逻辑结构&#xff0c;因为要存储到计算机里&#xff0c;所以视为将这个数据的逻辑结构映射到存储器里。即数据因为自身的和其他的数据的关系而在计算机内存储的方式。我们就归类了一些类型。 二…

21-数据结构-内部排序-交换排序

简介&#xff1a;主要根据两个数据进行比较从而交换彼此位置&#xff0c;以此类推&#xff0c;交换完全部。主要有冒泡和快速排序两种。 目录 一、冒泡排序 1.1简介&#xff1a; 1.2代码&#xff1a; 二、快速排序 1.1简介&#xff1a; 1.2代码&#xff1a; 一、冒泡排序…