利用matlab编程进行参数检验
源代码在线查看: 源程序.m
%f1=str2double(get(handles.f1_input,'string'));
%f2=str2double(get(handles.f2_input,'string'));
%t=eval(get(handles.t_input,'string'));
function junzhicha( ) %设有两个正态总体其分布分别为N(mu1,sigma1^2)
%和N(mu2,sigma2^2),求两个正态总体均值差的区间估计
a=[6.683 6.681 6.676 6.678 6.679 6.672];
b=[6.661 6.661 6.667 6.667 6.664];
aj=mean(a); %得到样本均值
bj=mean(b);
Sa=var(a); %得到样本方差
Sb=var(b);
n1=length(a); %得到样本容量
n2=length(b);
alpha=0.05; %给定常数alpha
u2a=norminv(2*alpha,0,1); %给定alpha,得到标准正态分布的双侧分位数
Sy=sqrt(Sa/n1+Sb/n2); %Sy为样本均值差的标注差
S=sqrt(((n1-1)*Sa+(n2-1)*Sb)/(n1+n2-2));
t2a=tinv(2*alpha,n1+n2-2); %给定alpha,得到t分布的双侧分位数
sigma=0.2;
sigma1=0.1;
sigma2=0.4;
if sigma~=NaN %判断sigma是否已知
f0=0;
else
f0=1;
end
if sigma1~=NaN %判断sigma1是否已知
f1=0;
else
f1=1;
end
if sigma2~=NaN %判断sigma2是否已知
f2=0;
else
f2=1;
end
if f1==0 & f2==0 %当sigma1及sigma2为已知时
Sz=sqrt(sigma1^2/n1+sigma2^2/n2); %Sz为总体均值差的标注差
sh=aj-bj+u2a*Sz
xi=aj-bj-u2a*Sz
elseif f1==1 & f2==1 & n1>=50 & n2>=50 %当igma1与sigma2均为未知且n1与n2均不小于50时
sh=aj-bj+u2a*Sy
xi=aj-bj-u2a*Sy
else sigma1==sigma2 & sigma1==sigma & f0==1 & f1==1 & f2==1 %当sigma1与sigma2均为未知,且sigma1^2=sigma2^2=sigma^2时
sh=a1-b1+t2a*S*sqrt(1/n1+1/n2)
xi=a1-b1-t2a*S*sqrt(1/n1+1/n2)
end
mu1=6;
mu2=7;
if mu1~=NaN %判断mu1是否已知
f3=0
else
f3=1
end
if mu2~=NaN %判断mu2是否已知
f4=0
else
f4=1
end
F=finv(alpha/2,n2-1,n1-1); %给定alpha,得到f分布的双侧分位数
while f3==1 & f4==1
sh=F*Sa/Sb
xi=Sa/Sb*F
end