我想对一组样本值的总体分布进行检验,检验方法用的是卡方检验,在显著水平为0.05的条件下,不符合我提出的广义高斯分布。可是看拟合曲线,却拟合地很好,不知道是不是选的检验方法不好,用K_S检验会好一些吗?
卡方检验的code如下:
function beta=chi2test(X,alpha)
%chi2test chi-square goodness-of-fit Test
%X is the sample
%alpha is the confidence level
if nargin<2
alpha=0.05;
end
% the maximum likelihood estimates of the parameters of the
% generalized Gaussian distribution given the data in the vector X.
[mhat, ahat, bhat] = ggmle(X);
x_s=sort(X);
[f,med]=hist(x_s,1000);
F_MED=[f',med'];
F_cmp=zeros(1000,2);
j=1;
for i=1:999
if F_MED(i,1)<5
F_cmp(j,1)=F_cmp(j,1)+F_MED(i,1);
if F_cmp(j,1)>=10
F_cmp(j,2)=(F_MED(i,2)+F_MED(i+1,2))/2;
j=j+1;
end
else
F_cmp(j,1)=F_cmp(j,1)+F_MED(i,1);
F_cmp(j,2)=(F_MED(i,2)+F_MED(i+1,2))/2;
j=j+1;
end
end
m=-10;
F_cmp(j,1)=F_cmp(j,1)+F_MED(1000,1);
F_cmp(j,2)=-m;
F_cmp_2=F_cmp(1:j,:);
aa=[m,F_cmp_2(:,2)']';
PEST=[];
F=@(x) ggpdf(x,mhat,ahat,bhat);
for k=1:length(aa)-1
% pp=quadl(F,m,aa(k+1))-quadl(F,m,aa(k));
pp=quadl(F,aa(k),aa(k+1));
PEST=[PEST,pp];
end
THEF=length(x_s)*PEST';
beta=sum((F_cmp_2(:,1)-THEF).^2./THEF);
r=2;
df=length(aa)-1-1-r;
Refcr=chi2inv(1-alpha,df);
pp=1-chi2cdf(beta,df);
if beta>Refcr
result=1; % reject
else
result=0;
end
拟合曲线如下: