• python之SPC:计算Cpk


    目录

    1、Ca、Cp和Cpk的理解

    2、python计算Cp,Cpk与Pp,Ppk

    3、总结


    1、Ca、Cp和Cpk的理解

    Ca、Cp和Cpk是制程能力指数,它们分别代表制程准确度、制程精密度和制程能力指数。

    制程准确度(Ca)反映实际平均值与规格中心值之一致性。对于单边规格,因不存在规格中心,因此不存在Ca;对于双边规格,Ca=(μ-U)/(T/2)。其中μ为均值,U为规格中心,T为规格

    制程精密度(Cp)反映规格公差宽度与制程变异宽度之比例。Cp=T/(6σ)

    Cpk是Ca及Cp两者的中和反应。Ca反应的是位置关系(集中趋势),Cp反应的是散布关系(离散趋势)。Cpk的计算公式为:Cpk=Cp(1-┃Ca┃)。

    2、python计算Cp,Cpk与Pp,Ppk

    以下为计算Cpk的代码,数据存在txt文件,两列数据,每行2个数据,以空格间隔,读取数据后作直方图、概率密度图,打印Cpk等值:

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. import scipy.stats as stats
    4. def Ca(data, USL, LSL):
    5. """
    6. :param data: 数据
    7. :param USL: 数据指标上限
    8. :param LSL: 数据指标下限
    9. :return:
    10. """
    11. u=np.mean(data)
    12. ca=(u-(USL-(USL-LSL)/2))/((USL-LSL)/2)
    13. return ca
    14. def Cp(data, USL, LSL):
    15. """
    16. :param data: 数据
    17. :param USL: 数据指标上限
    18. :param LSL: 数据指标下限
    19. :return:
    20. """
    21. # 计算每组的平均值和标准差
    22. sigma = np.std(data)
    23. cp = (USL - LSL) / 6 / sigma
    24. return cp
    25. def Cpk(data, USL, LSL):
    26. """
    27. :param data: 数据
    28. :param USL: 数据指标上限
    29. :param LSL: 数据指标下限
    30. :return:
    31. """
    32. return Cp(data, USL, LSL)*(1-np.abs(Ca(data, USL, LSL)))
    33. def Pp(data, USL, LSL):
    34. """
    35. :param data: 数据
    36. :param USL: 数据指标上限
    37. :param LSL: 数据指标下限
    38. :return:
    39. """
    40. sigma = np.std(data)
    41. pp = (USL - LSL) / 6 / sigma
    42. return pp
    43. def Ppk(data, USL, LSL):
    44. """
    45. :param data: 数据
    46. :param USL: 数据指标上限
    47. :param LSL: 数据指标下限
    48. :return:
    49. """
    50. u = np.mean(data)
    51. sigma = np.std(data)
    52. ppk = min(USL - u, u - LSL) / 3 / sigma
    53. return ppk
    54. def openreadtxt(file_name):
    55. data = []
    56. with open(file_name, 'r') as file:
    57. file_data = file.readlines() # 读取所有行
    58. for row in file_data:
    59. tmp_list = row.split()
    60. tmp = [float(x) for x in tmp_list]
    61. data.append(tmp) # 将每行数据插入data中
    62. return data
    63. #轮廓点存储路径
    64. filename1 =r"C:\Users\user\Documents\F1-21\cpk.txt"
    65. data = openreadtxt(filename1)
    66. shank_diameter = np.array(data)[:, 0]
    67. # shank_roundness = np.array(data)[:, 1]
    68. usl=3.1715
    69. lsl=3.1685
    70. cp = Cp(shank_diameter, usl, lsl)
    71. cpk = Cpk(shank_diameter, usl, lsl)
    72. pp = Pp(shank_diameter,usl, lsl)
    73. ppk = Ppk(shank_diameter,usl, lsl)
    74. # usl=0.0004
    75. # lsl=0.0
    76. # cp = Cp(shank_roundness, usl, lsl)
    77. # cpk = Cpk(shank_roundness, usl, lsl)
    78. # pp = Pp(shank_roundness,usl, lsl)
    79. # ppk = Ppk(shank_roundness,usl, lsl)
    80. print("Cp=", cp, "Cpk=", cpk, "Pp=", pp, "Ppk=", ppk)
    81. num_bins = 40
    82. plt.figure(figsize=(9,6), dpi=100)
    83. n, bins, patches = plt.hist(shank_diameter, num_bins,color='w', edgecolor='k',hatch=r'ooo',density=1,label="直方图")
    84. x = np.linspace(min(shank_diameter), max(shank_diameter), 100)
    85. plt.plot(x, stats.norm.pdf(x, np.mean(shank_diameter), np.std(shank_diameter)), 'r',label="概率密度")
    86. # plt.axvline(x=usl, color='red', linestyle='--')
    87. # plt.annotate(f'x={usl}', xy=(usl, 2500), xytext=(np.max(shank_roundness)/2,2500),arrowprops=dict(facecolor='green', shrink=0.05))
    88. plt.rcParams['font.sans-serif'] = ['SimHei']
    89. plt.xlabel('柄部直径')
    90. plt.ylabel('数量')
    91. plt.title(f'柄部直径:$\max={np.max(shank_diameter)}$, $\min={np.min(shank_diameter)}$')
    92. plt.legend()
    93. plt.show()

    3、总结

    1)Cpk计算要求过程稳定,也就是要服从正态分布,本例通过直方图与概率密度图大致判断。

    2)所有数据只分一组的话,Cp,Cpk分别与Pp,Ppk相等,那么,数据该分组吗?

    3)少量数据偏离规格,偏离越多越远,Cpk越小,但是偏离较远的也可能是异常值,到底该如何区分较远的偏离值与异常值。

  • 相关阅读:
    Java基础知识总结(超详细整理)三
    复杂问题问答
    Programming abstractions in C阅读笔记:p144-p160
    ElasticSearch - 初步检索
    海龟作图的简单介绍
    docker形式简易部署kibana
    Ubuntu22.04_如何调试ROS2_humble的源代码
    behave结果转化为cucumber结果,主要用于将behave.json转化为cucumber.json
    深入浅出三户模型
    golang常用方法
  • 原文地址:https://blog.csdn.net/T20151470/article/details/134342187