李国伟 寇 娟 王录锋
1(攀西钒钛检验检测院国家钒钛制品质量监督检验中心 四川 攀枝花 617000) 2(攀枝花学院国家钒钛检测重点实验室 四川 攀枝花 617000)
随着经济不断发展,越来越多产品研发时需要遵循相关标准。标准制定时需要对方法的精密度、再现性进行确定,才能实现方法的良好应用[1-6]。当前协同试验的精密度、再现性的确定主要以国家标准GB/T6379.2- 2004为主[7]。该方法实施时需要多个实验室进行大量数据测量、数据计算、临界值查询,因此标准的制订修订是一项繁琐、复杂的工作。目前协同试验数据处理方法有如下几种:(1) 使用计算机编程语言进行系统开发,国家标准GB/T6379.2-1986中提供了Fortran程序,但该程序在使用过程中存在着界面不友好、数据输入繁琐、异常数值取舍不能给予结论等问题[8]。汤永琪[9]使用BASIC语言编写了精密度计算程序。该程序能够精准计算精密度,但使用中存在着界面不友好、检验数据需要手动输入等问题,影响了精密度试验数据处理效率。(2) 使用Excel软件进行精密度再现性方法计算。田文卿等[10]利用VBA可视化编程系统、Excel、函数功能等开发了数据处理系统,以实现方法的重复性、再现性。这提高了计算效率,但仅适用于实验室数量小于20、重复测量次数小于8的条件下,且该系统在数据判断过程中存在着缺少交互界面等问题。文献[11-12]使用Excel进行方法计算,该程序中包括曼德尔h、曼德尔k图形绘制、方程回归及绘制图形等功能模块,但是数据汇总时需要花费大量精力以及对有效位数进行管理等问题,不能快速得到处理结果。(3) 其他计算软件辅助计算。张清等[13]使用Origin软件进行了异常数据分析。由于Origin软件在图形绘制方面功能强大,使用该软件进行异常数据绘制时能够节省大量时间,但其未解决精密度试验报告汇总问题。精密度计算是标准研制中的核心要素,使用Excel、Origin软件很难实现快速分析和报告汇总,到目前为止尚未见到比较详细的进行精密度计算的软件。本文基于设计和编写一款快速计算精密度试验数据软件,在实际计算中能够精准计算精密度数据和快速生成报告,从而保障结果准确性,提高数据处理效率。
单元平均值计算方法为:
(1)
式中:nij表示实验室i在水平j上测试个数;yijk表示实验室i在水平j上第k个测试结果。
单元离散度计算方法为:
(2)
为了实现实验室数据变异情况的检查及实验室数据的评价,采用了曼德尔h统计量、k统计量两种度量方法[14]。
(3)
式中:pj表示水平j上数据有效的实验室数目。
柯克伦检验计算方法为:
(4)
式中:sj、smax分别表示水平j有效实验室的方差和最大方差。
总平均值估计计算方法为:
(5)
重复性方差计算方法为:
(6)
实验室间方差计算方法为:
(7)
总平均值m与方差回归计算有三种方式:sr=bm、sr=a+bm和lgsr=c+dlgm。本文只分析后两个回归方法。方程回归计算时主要使用了残差的加权平方和最小的估计值两种方法。直线方程s=a+bm中的a、b计算方法以及直线方程lgs=c+dlgm中的c、d计算方法为:
(8)
式中:wj=1/(sNj)2,sNj表示第N步骤水平j的预测的重复性标准差。
直线方程s=a+bm和lgs=c+dlgm方程的取舍运用如下公式计算:
(9)
式中:rNj表示回归方程所计算的数值。
协同试验数据处理软件开发模式选择C/S(Client/Server),软件采用C#语言编写[15]。协同试验数据处理中需要使用曼德尔检验数据、科克伦检验数据、格拉布斯检验数据等。为此系统选择开源数据库SQLite,其具有兼容性强、查询效率高、可移植性强等优点[16]。
2.2.1数据处理设计
协同试验数据处理软件中数据处理包括单元平均值、单元方差、曼德尔检验、科克伦检验、格拉布斯离群值检验、平均值与方差关系回归。如图1为数据处理流程图。
图1 数据处理流程
(1) 数据格式定义。数据处理过程中需要对数据格式进行相应的规范。采用二维数组用于存储原始数据,第一列数据用于存放实验室编号,第二列开始存放测试数据。图2为数据格式。
(a) 原始数据 (b) 处理后数据图2 数据格式
从图2可知在原始数据中第一列输入实验室序号,比如实验室1中水平测量次数最多为3,需要在第一列中输入3个数据,对于缺失数据、异常数据本系统自动将该数据设置为-120。这解决了标准GB/T6379.2- 2004中指出的数据缺失所造成数据不规则情况,第一列中可获取实验室数量以及每个实验室测试数据最大有效个数。第一行中从第二列起为测试数据,用户在输入第一行测试数据时需要按照测试有效位数进行输入,系统根据用户输入的数据自动获取水平数量、每列水平有效位数。原始数据导入后需进行单元平均值、方差(当每个实验室每个水平测试数量为2时可用极差代替方差)计算可得到图2中的处理后数据格式。
(2) 曼德尔、科克伦、格拉布斯检验数据处理。曼德尔数据处理中包含曼德尔h、k检验计算。根据曼德尔检验计算公式可计算出每个实验室每个水平曼德尔h、k数据。曼德尔数据异常需要查询曼德尔h、k检验表,从构建的曼德尔数据表中自动查询获取数据。曼德尔h、k检验数据查询代码如下:
//进行曼德尔检验数据查询
public void getmande_data(int intp, int intn)
{
string str1="select*from man_hk1 where P="+intp+" and n="+intn;
string str5="select*from man_hk5 where P="+intp+"and n="+intn;
man_h_1=Convert.ToDouble(getdatatable(str1).Rows[0][1].ToString());
man_h_5=Convert.ToDouble(getdatatable(str5).Rows[0][1].ToString());
man_k_1=Convert.ToDouble(getdatatable(str1).Rows[0][3].ToString());
man_k_5=Convert.ToDouble(getdatatable(str5).Rows[0][3].ToString());
}
获取曼德尔h、k检验数据后,系统按照如下规则对异常数据进行判断:当检验数据大于man_h_1、man_k_1时检验数据显示红色,该数值称为离群值;当检验数据大于或等于man_h_5、man_k_5小于man_h_1、man_k_1时检验数据显示蓝色,该数值称为歧离值。用户在界面中对离群值、歧离值进行删除或保留操作。
运用科克伦、格拉布斯检验方法进行数据检验时,如果存在离群值将数据删除后需要再次运用同样的方法进行数据检验,直到数据不再出现离群值。科克伦、格拉布斯两种检验方法的设计过程和曼德尔检验类似,在此不再赘述。
(3) 平均值与方差回归数据处理。标准GB/T6379.2- 2004针对sr=a+bm拟合采用加权迭代算法进行a、b计算,本系统提供迭代回归算法计算过程,此外还提供最小二乘法进行曲线拟合。
2.2.2其他功能设计
其他功能模块主要包括文件管理、报告管理、有效位数管理、登录管理、图形管理以及检验数据管理。文件管理中包括文件导入、文件保存子功能;报告模块管理中包括报告格式设置、报告内容选择子功能。有效位数管理中包括自动判断、人工设置子功能。精密度试验中对有效位数要求严格,标准GB/T6379.2- 2004要求单元平均值以及离散度应比原始数据多一位有效位数;精密度对水平m依赖性较大时,不同水平应有不同的修约程度。为保障数据安全,在系统中设置登录界面。曼德尔检验、方程回归中需要进行图形绘制方便分析,为此系统使用Chart控件进行图像绘制。在进行曼德尔的h、k检验图形绘制时系统自动查询SQlite数据库中的数据进行图形绘制。检验数据中包含曼德尔检验数据、科克伦检验数据、格拉布斯检验数据,因此需要设计相应的数据添加、修改、查看、删除功能。
协同数据处理软件使用C#开发,SQLite提供C#开发动态链接库System.Data.SQLite.dll。该库中提供访问SQLite接口,协同数据处理软件中涉及标准接口如表1所示。
表1 SQLite标准接口
SQLite提供的加密解密方法是基于Windows API实现的,因此加密后文件仅应用于Windows系统,加密方式为整体文件加密,所用加密算法为RC4[17]。根据SQLite数据库提供接口进行二次封装,得到如表2所示的SQLite二次封装接口。
表2 SQLite二次封装接口
传统计算柯克伦检验、格拉布斯检验、曼德尔检验时根据p、n、q结果进行手动输入,势必会影响计算效率,为此在开发系统时增加了数据库。数据库中包含的数据表主要有柯克伦检验数据表、格拉布斯检验表、曼德尔检验信息表、用户登录表以及报表信息表等。
例1:柯克伦检验信息表,见表3。柯克伦检验信息表用于存储柯克伦检验信息。
表3 柯克伦检验表:Cochran
例2:格拉布斯检验信息表,见表4。格拉布斯检验信息表用于存储格拉布斯检验信息。
表4 格拉布斯检验信息表:Grubbs
选取攀钢集团攀枝花钢铁研究院有限公司检测中心、四川检验检疫局技术中心等10家实验室进行ICP-AES测定钒铁中铝元素精密度协同试验。采用10个实验室、6水平进行精密度协同试验,每个实验室每个水平测试数据个数为2,将该软件应用到铝元素精密度协同数据分析中。数据分析员登录到系统中,在主界面输入原始数据如图3所示。对原始数据进行分析,未见异常数据。选择单元计算,此时系统进行单元平均值、方差计算以及每个实验室有效试验个数计算。
图3 软件主界面
接下来进行曼德尔数据检验。点击界面上曼德尔检验,系统显示如图4所示界面。图4显示了曼德尔h检验图形、h检验结果、k检验图形、k检验结果。系统根据实验室数量、水平数自动查询曼德尔h、k检验数据,并绘制图形。在检验数据表中自动显示离群值、歧离值,单击鼠标右键可对离群值、歧离值进行删除、保留操作。曼德尔检验后进行科克伦、格拉布斯检验,操作方法同曼德尔检验。
图4 曼德尔检验界面
完成上述检验后选择结果,系统将显示分析结果,包含总平均值与方差计算、图形分析、精密度与平均值关系以及迭代图形管理。图5为分析结果界面图。
图5 分析结果界面
从图5中可见,平均值与方差经过对数转化后呈线性关系,拟合结果为:
重复性:lgr=0.694 5,lgm-1.431 0(0.039 3≤m≤4.914)。
再现性:lgR=0.746 8,lgm-0.963 8(0.039 3≤m≤4.914)。
采用C#语言和SQLite开发出一套完整的精密度协同数据处理软件,将柯克伦检验、格拉布斯检验、曼德尔检验数据存储在SQLite数据库中。程序自动根据输入数据进行检验数据查询,提高了检验数据查询效率及准确率。
该软件最初针对电感耦合等离子体发射光谱测定钒铁中8个杂质元素方法的精密度试验数据处理而设计。随着国家标准《GB/T6379.2- 2004测量方法与结果的准确度(正确度与精密度)第2部分:确定标准测量方法重复性与再现性的基本方法》不断推广及应用,未来该软件应用领域将更加广泛。