用格布拉斯准则剔除异常值,求不确定度
x=[0.665 0.666 0.678 0.698 0.600 0.661 0.672 0.664]; %输入数据
alpha=0.05; %输入显著性水平
%% 格布拉斯准则剔除坏值
flag_1=1;
while flag_1==1
n=length(x);
avg=mean(x);
x=sort(x);
v=x-avg;
st=std(v,0);
gn=abs((x-avg)/st);
% 确定g值
T=[1.153 1.463 1.672 1.822 1.938 2.032 2.11 2.176 2.234 2.285 2.331 2.371 2.409 2.443 2.475 2.501 2.532 2.557 2.58 2.603 2.624 2.644 2.663 2.681 2.698 2.714 2.73 2.745;...
1.155 1.492 1.749 1.944 2.097 2.22 2.323 2.41 2.485 2.55 2.607 2.659 2.705 2.747 2.785 2.821 2.954 2.884 2.912 2.939 2.963 2.987 3.009 3.029 3.049 3.068 3.085 3.103];
switch alpha
case 0.05
g=T(1,n-2);
case 0.01
g=T(2,n-2);
otherwise
disp('输入了错误的alpha值');
end
% 比较确定异常值
[reg_max,i]=max(gn);
if reg_max>g
flag_1=1;
abn=x(i);
disp('被剔除的数据为')
disp(abn);
x(find(x==abn))=[];
else
flag_1=0;
end
end
if flag_1==0
disp('已没有异常数据');
end
%% 计算不确定度
u=st/sqrt(n);
disp('最终结果为:')
disp(avg) %平均值
disp(u) %不确定度