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

news2024/11/28 15:43:06

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

# 输入数据
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]
]


# 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("数据可能不来自正态分布")


# 计算整体标准差
population_std = np.std(data)

# 计算样本标准差
sample_std = np.std(data, ddof=1)  # 使用ddof参数来指定自由度

print("\ndata整体标准差:", population_std)
print("data样本标准差:", sample_std)

# 计算R/d2估计的总体标准差
r_values = [max(subgroup) - min(subgroup) for subgroup in data]
d2 = 2.326  # 从表格或标准文献中查找
r_bar = np.mean(r_values)
sigma_r = r_bar / d2

# 计算S/C4估计的总体标准差
s_values = [np.std(subgroup, ddof=1) for subgroup in data]
C4 = 0.94  # 从表格或标准文献中查找
s_bar = np.mean(s_values)
sigma_s = s_bar / C4

# 输入过程上下限
upper_spec_limit = 7
lower_spec_limit = 5.5

# 计算CPK
cpk_r = min((upper_spec_limit - np.mean(data)) / (3 * sigma_r), (np.mean(data) - lower_spec_limit) / (3 * sigma_r))
cpk_s = min((upper_spec_limit - np.mean(data)) / (3 * sigma_s), (np.mean(data) - 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 - np.mean(data)) / sigma_r  # 使用R/d2估计的σ
z_lower_r = (lower_spec_limit - np.mean(data)) / sigma_r  # 使用R/d2估计的σ

z_upper_s = (upper_spec_limit - np.mean(data)) / sigma_s  # 使用S/C4估计的σ
z_lower_s = (lower_spec_limit - np.mean(data)) / sigma_s  # 使用S/C4估计的σ

# 计算上限以上的概率(使用R/d2估计的σ)
probability_above_upper_r = 1 - norm.cdf(z_upper_r)

# 计算下限以下的概率(使用R/d2估计的σ)
probability_below_lower_r = norm.cdf(z_lower_r)

# 计算在规格限内的概率(使用R/d2估计的σ)
probability_within_spec_r = 1 - probability_above_upper_r - probability_below_lower_r

# 计算上限以上的概率(使用S/C4估计的σ)
probability_above_upper_s = 1 - norm.cdf(z_upper_s)

# 计算下限以下的概率(使用S/C4估计的σ)
probability_below_lower_s = norm.cdf(z_lower_s)

# 计算在规格限内的概率(使用S/C4估计的σ)
probability_within_spec_s = 1 - probability_above_upper_s - probability_below_lower_s

print("\n使用R/d2法估计的概率(规格上限以上):", probability_above_upper_r)
print("使用R/d2法估计的概率(规格下限以下):", probability_below_lower_r)
print("使用R/d2法估计的概率(在规格限内):", probability_within_spec_r)
print("\n使用S/C4法估计的概率(规格上限以上):", probability_above_upper_s)
print("使用S/C4法估计的概率(规格下限以下):", probability_below_lower_s)
print("使用S/C4法估计的概率(在规格限内):", probability_within_spec_s)


Shapiro-Wilk检验统计值: 0.9730015993118286
Shapiro-Wilk检验p-value: 0.20416395366191864
数据可能来自正态分布

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.030638302860941935
使用R/d2法估计的概率(规格下限以下): 0.0016361976108266597
使用R/d2法估计的概率(在规格限内): 0.9677254995282314

使用S/C4法估计的概率(规格上限以上): 0.03612600187890791
使用S/C4法估计的概率(规格下限以下): 0.0023663543889196424
使用S/C4法估计的概率(在规格限内): 0.9615076437321725
[Finished in 4.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.coloradmin.cn/o/1096422.html

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

相关文章

【JAVA】有关包的概念

个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 前言 Java包是用于组织和管理Java类的方式。它们提供了一种命名空间,以避免名称冲突,并使程序的组织更加有效和可维护。今天我们接着来学习有关包的概念。 包 …

faster lio 回环 加入GTSAM优化的记录

首先感谢这位博主的文章:https://blog.csdn.net/weixin_41281151/article/details/125371285,其中部分代码参考于改博主中的github: https://github.com/kahowang/FAST_LIO_SAM 不同的是,我使用的是faster lio进行更改&#xff0c…

vscode键盘输入不进去

二话不说,直接把输入切换到终端输出即可! 打开设置,搜索terminal,切换到run in terminal 即可!

C语言-指针相关使用

指针是 C语言的重要组成部分,是 C语言的核心、精髓。 在 C语言中,指针使用得当,能显著提高某些程序的效率,使用不当,则很容易造成系统错误、 一、指针使用 编译系统为每个变量都分配了一个能满足其类型大小的内存单…

vqvae简单实战,利用vqvae来提升模型向量表达

最近CV领域各种大模型在图像生成领域大发异彩,比如这两年大火的dalle系列模型。在这些模型中用到一个基础模型vqvae,今天我们写个简单实现来了解一下vqvae的工作原理。vqvae原始论文连接https://arxiv.org/pdf/1711.00937.pdf 1,代码 首先我们…

机器学习——奇异值分解二(特征分解+SVD纯理解)

矩阵的特征分解 特征值和特征向量的定义 抄来的:奇异值分解 困惑1:特征值和特征向量,和原矩阵是怎样的关系,需要一个栗子进行更具象的认识 困惑2:为什么多个特征向量组合成的矩阵,可以构成矩阵A的特征分解…

项目管理之实施关键步骤

项目管理已成为当代企业运营和发展过程中不可或缺的重要环节。如何实现高效、有序和可控的项目管理,一直是企业领导和项目团队追求的目标。本文将结合项目管理七招制胜内容,详细阐述项目管理实战中的具体做法。 如何分析项目 了解项目的背景和目的&…

网工记背配置命令(3)----POE配置示例

POE 供电就是通过以太网供电,这种方式仅凭借那根连接通信终端的网线就可完成为它们供电。POE提供的是-53V~0v 的直流电,供电距离最长可达 100m。PoE 款型的交换机的软件大包天然支持 POE,无需 license,通过执行 poe-enable 命令使…

【力扣1844】将所有数字用字符替换

👑专栏内容:力扣刷题⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、题目描述二、题目分析 一、题目描述 给你一个下标从 0 开始的字符串 s ,它的偶数下标处为小写英文字母&am…

系列七、Redis持久化

一、是什么 将内存中的数据写入到硬盘的过程。 二、持久化方式 RDB、AOF 2.1、RDB(Redis Database) 2.1.1、概述 在指定的时间间隔,执行数据集的时间点快照。实现类似照片记录效果的方式,就是把某一时刻的数据和状态以文件的形…

vue3后台管理框架之收获

前端⼯程化概念 在学VUE和webpack打包的时候,了解到前端⼯程的基本概念,如下: 实际的前端开发,遵循四个现代化: 1.模块化(js的模块化、css的模块化、其他资源的模块化) 2.组件化(复⽤…

05-React组件的组合使用

05-React组件的组合使用 1.TodoList案例 需求:TodoList组件化实现此功能 显示所有todo列表输入文本, 点击按钮显示到列表的首位, 并清除输入的文本 1).实现: 完成TodoList组件的静态页面以及拆解组件 动态初始化列表 //App.jsx export default class …

[初始java]——java为什么这么火,java如何实现跨平台、什么是JDK/JRE/JVM

java的名言: ”一次编译、到处运行“ 一、编译语言与解释语言 编译: 是将整份源代码转换成机器码再进行下面的操作,最终形成可执行文件 解释: 是将源代码逐行转换成机器码并直接执行的过程,不需要生成目标文件 jav…

10.14~10.15verilog操作流程与Block Design

后面的那个是延时精度 verilog文件结构 文件名称与写的模板没有关系,这个文件名为P1,但模板名为andgate 但是如果是仿真文件,就需要开头的模板名和仿真文件名相同 .v是源文件,设计文件 .v在设计与sim里都有,静态共享&#xff0…

卡顿分析与布局优化

卡顿分析与布局优化 大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。Android系统每隔大概16.6ms发出VSYNC信 号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fp…

CISA 彻底改变了恶意软件信息共享:网络安全的突破

在现代网络安全中,战术技术和程序(TTP)的共享对于防范网络事件至关重要。 因此,了解攻击向量和攻击类型之间的关联如今是让其他公司从其他公司遭受的 IT 事件中受益(吸取经验教训)的重要一步。 美国主要网…

多模态大模型升级:LLaVA→LLaVA-1.5,MiniGPT4→MiniGPT5

Overview LLaVA-1.5总览摘要1.引言2.背景3.LLaVA的改进4.讨论附录 LLaVA-1.5 总览 题目: Improved Baselines with Visual Instruction Tuning 机构:威斯康星大学麦迪逊分校,微软 论文: https://arxiv.org/pdf/2310.03744.pdf 代码: https://llava-vl.…

无法解析符号 ‘SpringBootApplication’

刚打开一个项目出现"SpringBootApplication"无法解析: 通过以下步骤,修改maven路径即可: 文件---->设置(File--->Settings) 构建、执行、部署--->构建工具--->Maven--->Maven主路经&#xf…

07-ConfigurationClassPostProces的解析

文章目录 如何解析Component,Service,Configurationd,Bean,Import等注解1. 源码描述2. 类继承结构图3. 解析流程4. 具体的注解解析 如何解析Component,Service,Configurationd,Bean,Import等注解 1. 源码描述 BeanFactoryPostProcessor used for bootstrapping processing of…

论文笔记[156]PARAFAC. tutorial and applications

原文下载:https://www.sciencedirect.com/science/article/abs/pii/S0169743997000324 摘要 本文介绍了PARAFAC的多维分解方法及其在化学计量学中的应用。PARAFAC是PCA对高阶数组的推广,但该方法的一些特性与普通的二维情况截然不同。例如,…