我使用逆cdf方法生成了带Dagum分布的x数字,现在我想运行ks test但是我经常遇到这个错误:
Error using kstest (line 142)
CDF must define an increasing function of X.
这是我的代码:
N=20000;
a=5;
p=1;
b=1;
u=rand(1,N);
x=b*(u.^(-1/p)-1).^(-1/a);
cdf=(1+(x/b).^(-a)).^(-p);
X=0:length(x)-1;
h=kstest(x,[X' cdf']);
我应该如何使用Dagum发行版'
运行ks测试谢谢!
答案 0 :(得分:2)
问题是CDF应该是cumulative distribution function
。 CDF的定义意味着它的功能越来越强,它可以减少的唯一方法就是具有负概率,这是毫无意义的。
当你给kstest
一张CDF时,它应该是这样的:
plot(X',cdf')
然而,你的看起来像是
这显然是错误的。因此,您得到的错误是:https://en.wikipedia.org/wiki/Cumulative_distribution_function
,因为它应该,否则它没有数学意义。
但是,进一步看,您似乎已经定义了X=0:length(x)-1;
。这是没有意义的,因为您正在“重新安排”您的cdf
指出线性索引而不是真实数据。经过一些测试,我意识到如果你使用x
代替X
,那么一切看起来都有效。
您的cdf
看起来像是:
您可以毫无问题地致电h=kstest(x,[x' cdf']);
。
作为旁注,cdf
是一个MATLAB函数,不要调用这样的变量,否则你永远无法使用该函数!