在R中对经验加权分布函数执行KS.test

时间:2013-01-28 10:23:18

标签: r cdf

我想比较具有不同数据量和不同起点/终点的两个数据集。我想使用KS.test,因为我在我编写的C程序中做了类似的事情(通过GSL直方图比较数据 - > GSL cdf - >自编写的KS测试)但是因为这个程序未发布仍然可以'为此使用它。但我确实想在R中使用相同的原理,但似乎无法掌握如何在R中执行此操作。

我有两个经验加权分配函数(使用spatstat库创建)并且我正在尝试对它们执行KS.test但是它给了我一个错误,我不太确定如何解释。

我执行的R代码:

预测& experimental包含一系列xy值(不同的长度,起始和结束X值)。

cdf_e<-ewcdf(experimental[,1],weights=experimental[,2])
cdf_p<-ewcdf(predicted[,1],weights=predicted[,2])
ks.test(cdf_e,cdf_p)

我得到的信息是:

Error in x[!is.na(x)] : object of type 'closure' is not subsettable
In addition: Warning message:
In is.na(x) : is.na() applied to non-(list or vector) of type 'closure'

任何人都可以告诉我这是什么意思(因为?ks.test没有提到任何与此错误有关的内容)或者我是应该使用不同的函数调用还是不使用。

PS:每个数据文件的前10行如下:

预测

m/z I
292.1 1272
322.0 815
324.9 780
350.0 922
363.9 781
366.0 87049
366.9 12773
367.9 1620
383.6 1258

实验

m/z I
366.139 1229.62
367.142 186.775
368.145 10.9435
528.192 19.8701
529.195 4.39351
579.435 11.5899
680.996 73.8311
681.861 7.2526
745.032 5.31373

1 个答案:

答案 0 :(得分:2)

我想这是因为ks.test期望作为参数的两个数据值向量,或者数据值向量和向量。命名分布函数;不是ECDF本身。如果您已经有两个ECDF,您可以自己计算KS统计量。