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

2023-10-16 05:28

本文主要是介绍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# 输入数据
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_sprint("\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)

 

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

 

 

这篇关于R/d2及S/C4估计总体标准差,比较其CPK及规格限概率的差异的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

hdu4865(概率DP)

题意:已知前一天和今天的天气概率,某天的天气概率和叶子的潮湿程度的概率,n天叶子的湿度,求n天最有可能的天气情况。 思路:概率DP,dp[i][j]表示第i天天气为j的概率,状态转移如下:dp[i][j] = max(dp[i][j, dp[i-1][k]*table2[k][j]*table1[j][col] )  代码如下: #include <stdio.h>#include

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

关键字synchronized、volatile的比较

关键字volatile是线程同步的轻量级实现,所以volatile性能肯定比synchronized要好,并且volatile只能修饰于变量,而synchronized可以修饰方法,以及代码块。随着JDK新版本的发布,synchronized关键字的执行效率上得到很大提升,在开发中使用synchronized关键字的比率还是比较大的。多线程访问volatile不会发生阻塞,而synchronize

各个地区饮食结构的差异 第九篇

比如原来蛋自质吃太少了 消耗太多 亏空 太多 就会虚 所有的方案要有循证医学证据

stl的sort和手写快排的运行效率哪个比较高?

STL的sort必然要比你自己写的快排要快,因为你自己手写一个这么复杂的sort,那就太闲了。STL的sort是尽量让复杂度维持在O(N log N)的,因此就有了各种的Hybrid sort algorithm。 题主你提到的先quicksort到一定深度之后就转为heapsort,这种是introsort。 每种STL实现使用的算法各有不同,GNU Standard C++ Lib

研究生生涯中一些比较重要的网址

Mali GPU相关: 1.http://malideveloper.arm.com/resources/sdks/opengl-es-sdk-for-linux/ 2.http://malideveloper.arm.com/resources/tools/arm-development-studio-5/ 3.https://www.khronos.org/opengles/sdk/do

数据集 3DPW-开源户外三维人体建模-姿态估计-人体关键点-人体mesh建模 >> DataBall

3DPW 3DPW-开源户外三维人体建模数据集-姿态估计-人体关键点-人体mesh建模 开源户外三维人体数据集 @inproceedings{vonMarcard2018, title = {Recovering Accurate 3D Human Pose in The Wild Using IMUs and a Moving Camera}, author = {von Marc

性能测试工具 wrk,ab,locust,Jmeter 压测结果比较

前言 在开发服务端软件时,经常需要进行性能测试,一般我采用手写性能测试代码的方式进行测试,那有什么现成的好的性能测试工具吗? 性能测试工具 wrk,ab,locust,Jmeter 压测结果比较 详见: 性能测试工具 wrk,ab,locust,Jmeter 压测结果比较 Jmeter性能测试 入门

MongoDB学习—(6)MongoDB的find查询比较符

首先,先通过以下函数向BookList集合中插入10000条数据 function insertN(obj,n){var i=0;while(i<n){obj.insert({id:i,name:"bookNumber"+i,publishTime:i+2000})i++;}}var BookList=db.getCollection("BookList")调用函数,这样,BookList