CNAS能力验证——稳健统计方法(算法A)计算稳健均值和标准差

1、案例介绍

表E.1给出一轮能力验证计划的23个结果,其中5个结果标示为"小于"某数量。由算法A得到的稳健均值(x*)和标准差(s*)显示了三种不同的计算方法:忽略"<"作为定量数据进行分析;删除带有"<"的数据;忽略"<"数据的0.5倍作为定量结果的估计。在各种情形下,超出可接受界限的结果标记为"#"。这假设定量部分超出x*±3s*的任何结果将被评定为"不可接受"(行动信号)。对于带有"<"或">"号的结果的评定,能力验证提供者也可使用其他规则。

表E.1 包含截断(<)结果的样本数据集以及调整结果的三个选项

参加者 结果 忽略"<" 删除含"<"的数据 0.5×含"<"的数据
A <10 10 ------ 5
B <10 10 ------ 5
C 12 12 12 12
D 19 19 19 19
E <20 20 ------ 10
F 20 20 20 20
G 23 23 23 23
H 23 23 23 23
J 25 25 25 25
K 25 25 25 25
L 26 26 26 26
M 28 28 28 28
N 28 28 28 28
P <30 30 ------ 15
Q 28 28 28 28
R 29 29 29 29
S 30 30 30 30
T 30 30 30 30
U 31 31 31 31
V 32 32 32 32
W 32 32 32 32
Y 45 45 45# 45
Z <50 50# ------ 25
总结
结果的数量 23 23 18 23
x* 26.01 26.81 23.95
s* 7.23 5.29 8.60

2、算法A

算法 A 来自 GB/T 6379.5。应用此算法计算得到数据平均值和标准差的稳健值。稳健性是估计算法的特点,而不是其产生的估计值的特点,因此严格来说,称由此算法计算的平均值和标准差是稳健的是不确切的。然而,为避免使用繁琐的术语,"稳健均值"和"稳健标准差"应理解为利用稳健算法计算的总体均值和总体标准差的均值估计。

从一个特定检测中得到的结果总数为 p 。按递增顺序排列 p 个检测数据,表示为: x 1 , x 2 ,Lx i ,L, x p

这些数据的稳健平均值和稳健标准差记为 x * 和s*。

计算 x * 和s* 的初始值如下(med 表示中位数):

根据以下步骤更新 x * 和s* 的值。计算:

对每个 x i (i = 1,2,L, p) ,计算

再由下式计算 x * 和s* 的新的取值:


其中求和符号对i 求和。

稳健估计值 x * 和 s * 可由迭代计算得出,例如用已修改数据更新 x * 和s* ,直至过程收敛。当稳健标准差的第三位有效数字和稳健平均值相对应的数字在连续两次迭代中不再变化时,即可认为过程是收敛的。

3、示例中数据求取稳健均值和标准差的Matlab算法实现

Matlab 复制代码
%% 代码中data为待求取稳健均值和标准差的一维向量数据,可从excel中获取

x0=median(data);
s0=1.483*median(abs(data-x0));

x1=zeros(length(data),1);
while 1
    delta=1.5*s0;
    for i=1:length(data)
        if data(i)<x0-delta
            x1(i)=x0-delta;
        elseif data(i)>x0+delta
            x1(i)=x0+delta;
        else
            x1(i)=data(i);
        end
    end

    xnew=mean(x1);
    snew=1.134*std(x1);

    if abs(xnew-x0)<1e-3&&abs(snew-s0)<1e-3
        break;
    else
        x0=xnew;
        s0=snew;        
    end
end
fprintf('稳健均值 = %.2f\n', x0);
fprintf('稳健标准差 = %.2f\n', s0);

4、运行结果

以第一列为例,结果和表格中一致!

5、参考文献

CNAS-GL002:2018《能力验证结果的统计处理和能力评价指南》

GB/T 28043-2019 利用实验室间比对进行能力验证的统计方法