matlab工具箱中没有"双样本已知方差均值检验"程序,所以自已编了这个程序,已经通过书上例题数据检验,结论绝对可靠.
程序格式
[h,p,ci,zval]=my_ztest2(x,y,var1,var2,c,alph,tail)
输入:数据x,y;要比较的均值差mju1-mju2=c;两个方差var1,var2;大样本时可以用var(x),var(y)代替,置信水平alph,
还有假设选择tail:
当tail='both',检验1H0:miu1-mju2=c vs H1:miu1-mju2不等于c;
当tail='left',检验1H0:miu1-mju2=c VS H1:miu1-mju2<c;
当tail='right',检验1H0:miu1-mju2=c VS H1:miu1-mju2>c;
输出:h,p值,mju1-mju2的置信区间ci,统计量zval=(meanx-meany-c)/sqrt(var1/m+var2/n).
h=0接受原假设H0,否则拒绝
P>alph(置信水平)接受原假设,否则拒绝
例:检验H0:均值的差mju1-mju2=1 vs H1:miu1-mju2不等于1
把m文件my_ztest2.m放在默认工作目录下,然后输入:
------------------------------------------------------
%实际上数据来自y=normrnd(0,1,1,20);x=normrnd(1,2,1,30);
x=[0.408225779992886,-1.95026901171052,0.531991904687934,1.23688967410824,1.62961808679011,3.88701648869964,0.298050523344516,2.24646770227699,2.59809723629556,2.88177988145556,-0.984183471087591,1.42407030433011,1.47576414575116,-1.01552678335654,-0.484089504267208,3.16458990631067,0.737000594109453,1.77976097937408,1.17597421315959,-0.270930450958632,-0.119146604392482,1.88730697900734,-0.899807597095291,2.56236323575678,2.13792129144655,-0.643428583392511,0.468786297334902,-1.37555403293961,-3.40464143464688,2.97267478200405];
y=[1.623562064 -0.691775702 0.857996673 1.254001422 -1.593729576 -1.440964432 0.571147624 -0.399885578 0.689997375 0.815622289 0.711908324 1.290249755 0.668600506 1.190838074 -1.202457115 -0.019789558 -0.156717299 -1.604085562 0.257304235 -1.056472928];
c=1;%等待检验均值的差mju1-mju2=c
var1=4;
var2=1;
%已知的方差,当样本容量很大可以用样本的标准差代替
[h,p,ci,zval]=my_ztest2(x,y,var1,var2,c,0.05,'both')
--------------------------------------------------------
输出结果:
-------------------------------------------------------
h =
0
p =
0.5186
ci =
-0.1156 1.5628
zval =
-0.6455
--------------------------------------------------------
分析:
h=0接受H0与实际符合(因为原来数据实际来自y=normrnd(0,1,1,20);x=normrnd(1,2,1,30);
p值大于0.05,置信区间也包括了1
所以从多个方面看应该接受H0