单样本KS检验,案例分析及Matlab可视化

       Kolmogorov-Smirnov是比较一个经验分布与理论分布或者两个观测值分布的检验方法。其原假设H0:两个数据分布一致或者数据符合理论分布。 对于单样本KS检验,检验统计量为,当根据观测值计算出的则拒绝H0,否则接受H0假设。


目录

基于数据的KS检验统计量的展开式

理论分布在接受域中的上下限

反向验证

案例分析

或许可行的改进及建议

附件:Kolmogorov-Smirnov单样本检验中D的临界值表

Matlab代码——画图

Matlab代码——计算D_N


基于数据的KS检验统计量的展开式

理论分布在接受域中的上下限

反向验证

       也就是,所以也就是说只要{\color{Red} \spadesuit }成立,则检验统计量落在接受域里。(注意:上面这个不等式的左侧是没有取Max的。但是,由于它对所有的x都成立,所以Max也成立)。由此可见,整个证明过程是自恰的。

案例分析

       不等式{\color{Red} \spadesuit }一个用途是用于画图分析,只要理论分布F_0\left(x \right )落在两条折线\frac{k}{N}-D_{N,1-\alpha}\frac{k}{N}+D_{N,1-\alpha}之间,也就是说原假设成立:是来自分布函数为F_0\left(x \right )的样本

       例如:检验下面一组数据(N=40)是否来自于正态分布N(76,155),取显著性水平\alpha=0.05

       样本均值为76.825,样本方差为154.4;查表可知D_{40,0.95}=1.36/\sqrt{N}。绘图如下(Matlab代码放在最后面),红线F_0\left(x \right )与绿线没有交叉,所以在显著性水平\alpha=0.05下,可以认为该样本是来自总体分布为N(76,155)

红线代表理论分布函数F0(x) (与原假设对应),蓝色+号代表的是有序样本点对应的F0(xk); 绿线代表的是在原假设成立的条件下,理论分布函数的上下界。

或许可行的改进及建议


附件:Kolmogorov-Smirnov单样本检验中D的临界值表

原文链接:http://www.docin.com/p-47871407.html


Matlab代码——画图

X = [55 85 72 99 48 71 88 70 59 98 80 74 93 ...
     85 74 82 90 71 83 60 95 77 84 73 63 72 ...
     95 79 51 85 76 81 78 65 75 87 86 70 80 64];
X = sort(X,'ascend');      
N = length(X);
D_N005 = 1.36/sqrt(N);    % N大于35的近似公式
 
F0 = zeros(1,Nx);
mu = 76;  
sig = sqrt(155);          % F0的均值和方差
 
F_low = zeros(1,Nx);
F_up  = zeros(1,Nx);
x0 = X(1)-1; xe = X(end)+1;     % 补充x0和x41
X1 = [x0,X,xe];
Nx = 500;    i = 0;  k = 0;
for x = x0:(xe-x0)/(Nx-1):xe
    i = i+1;
    if x > X1(k+1);
        k = k+1;
    end
    F0(i)    = normcdf(x,mu,sig);
    F_low(i) = k/N - D_N005;
    F_up(i)  = k/N + D_N005;
end
F_low(F_low<0) = 0;   F_low(F_low>1) = 1;
F_up(F_up<0)   = 0;   F_up(F_up>1)   = 1;
 
x_grid = x0:(xe-x0)/(Nx-1):xe;
plot(x_grid,F0,'r',x_grid,F_low,'g--',x_grid,F_up,'g--');
hold on ;scatter(X,normcdf(X,mu,sig),'b+');
axis tight

Matlab代码——计算\large D_{N}

X = [55 85 72 99 48 71 88 70 59 98 80 74 93 ...
     85 74 82 90 71 83 60 95 77 84 73 63 72 ...
     95 79 51 85 76 81 78 65 75 87 86 70 80 64];
X = sort(X,'ascend');      
N = length(X);
mu = mean(X);  
sig = sqrt(var(X));      % F0的均值和方差
dN = zeros(1,N); 
k = 0;
for x = X
    k = k +1;
    dN(k) = max(abs( normcdf(x,mu,sig) - [k/N,(k-1)/N] ));   
end
% 获取DN
DN = max(dN);

 

  • 15
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值