楼主: lugoo
15467 14

[问答] ks test [推广有奖]

11
lugoo 发表于 2011-6-9 22:47:18
lugoo 发表于 2011-6-7 17:34
我看了kstest的句法说明,但发现里面并没有对h = kstest(x,CDF,alpha) 中的CDF做说明,也不清楚这个CDF是字符型的还是一个vector,但感觉像是个数值的vector。
我在网上找了些资料,对matlab中kstest做了进一步说明:

Example 2
Nowlet's generate random numbers from a Weibull distribution, and test againstthat Weibull distribution and an exponential distribution.
x = weibrnd(1, 2, 100, 1);
kstest(x, [x weibcdf(x, 1, 2)])
ans =

0


[]中的内容就是CDF部分。比如我想测试我有一组数据x是不是uniform distributed就用:[h,p]=kstest(x, [x unifcdf(x,0,1)])

12
tangyz_hust 发表于 2012-1-19 14:18:57
      11楼上的解释是对的!
      不过我遇上了一个新问题。
      我要检验序列u是否服从(0,1)均匀分布?我写的代码是[h,p,stat]=kstest(u,[u unifcdf(u,0,1)])。u这个序列应该是服从(0,1)均匀分布的,这其中unifcdf(u,0,1)]所得到的序列,与u是完全一致的,但是检验却通不过,知道这是什么原因?求教!!

13
tangyz_hust 发表于 2012-1-19 16:04:27
搞清楚了!是显著水平a的设置问题!不同的数据,具有不同的显著水平!
如果数据没有通过KS检验,调整一下显著水平就是了!总有能够通过检验的显著水平!

matlab正确的写法是:
u=sort(u);
                  
%画出经验分布函数
figure
cdfplot(u);
hold on
%画出标准分布函数
plot(u,unifcdf(u,0,1),'r-');
hold off
      
%检验数据序列符合均匀分布的程度
[H,pvalue]=kstest(u,[u,unifcdf(u,0,1)], a);%% a=0.01,a=0.05

结果是:当a=0.05时,H=1;当a=0.01时,H=0。通常系统默认a=0.05。

本文来自: 人大经济论坛 Matlab及其他计量软件专版 版,详细出处参考: https://bbs.pinggu.org/forum.php? ... 2&from^^uid=86876


14
huohuo58 发表于 2014-5-18 20:05:03
yucongy 发表于 2011-6-8 10:59
一定要用matlab么?
S-Plus中倒是有现成的程序
不过我觉得参照S-Plus中的程序再把它转换成matlab语言应该 ...
求教S-Plus/R中的K-检验程序

15
奋斗的小菜鸟 发表于 2015-4-11 13:34:16
tangyz_hust 发表于 2012-1-19 16:04
搞清楚了!是显著水平a的设置问题!不同的数据,具有不同的显著水平!
如果数据没有通过KS检验,调整一下显 ...
我想问问实验kstest之前必须进行排序吗?急用

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 09:45