Ks测试来自matlab中的Dagum分布

时间:2016-01-19 13:50:26

标签: matlab

我使用逆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测试

谢谢!

1 个答案:

答案 0 :(得分:2)

问题是CDF应该是cumulative distribution function。 CDF的定义意味着它的功能越来越强,它可以减少的唯一方法就是具有负概率,这是毫无意义的。

当你给kstest一张CDF时,它应该是这样的:

plot(X',cdf')

enter image description here

然而,你的看起来像是

enter image description here

这显然是错误的。因此,您得到的错误是:https://en.wikipedia.org/wiki/Cumulative_distribution_function,因为它应该,否则它没有数学意义。

但是,进一步看,您似乎已经定义了X=0:length(x)-1;。这是没有意义的,因为您正在“重新安排”您的cdf指出线性索引而不是真实数据。经过一些测试,我意识到如果你使用x代替X,那么一切看起来都有效。

您的cdf看起来像是:

enter image description here

您可以毫无问题地致电h=kstest(x,[x' cdf']);

作为旁注,cdf是一个MATLAB函数,不要调用这样的变量,否则你永远无法使用该函数!