正态分布检验-NormalTest m sci代码

// .m  .sci 文件 代码

 

function [Res,u1,u2]=NormalTest(x,alpha)

//u1=g1/sig1    ~ N(0,1)   偏度

//u2=(g2-mu2)/sig2 ~ N(0,1) 峰度

//N>=100.  当N<100时检验准确性较低

Mean=0;
Std=1;
Q=(1-alpha)/4;
P=1-Q;

uu=cdfnor("X",Mean,Std,P,Q);

N=length(x);
sig1=sqrt(6*(N-2)/(N+1)/(N+3));
sig2=sqrt(4*N*(N-3)/(N+1)/(N+5))*sig1;
mu1=0;
mu2=3-6/(N+1);
A1=sum(x)/N;
A2=sum(x.*x)/N;

A3=sum(x.*x.*x)/N;
A4=sum(x.*x.*x.*x)/N;

B2=A2-A1*A1;
B3=A3-3*A2*A1+2*A1*A1*A1;
B4=A4-4*A3*A1+6*A2*A1*A1-3*A1*A1*A1*A1;
g1=B3/B2/sqrt(B2);
g2=B4/B2/B2;
u1=g1/sig1;
u2=(g2-mu2)/sig2;

b1=abs(u1)-uu;
b2=abs(u2)-uu;
c=[b1,b2];
if sum(c>0) then
Res=0;
else
Res=1;
end
endfunction

 

 

调用示例:

 

N=1000;

z=grand(1,N,"nor",0,1);

bRes=0;

alpha=0.1;
[bRes,u1,u2]=NormalTest(z,1-alpha);

 

bRes=1 是通过检验,数据正态分布,置信度1-alpha。

N<100时 检验准确性较低

 

posted @ 2015-03-22 12:18  JkReader  阅读(625)  评论(0编辑  收藏  举报