我在哪里可以找到R中Kolmogorov-Smirnov距离的极限分布?

时间:2014-07-11 10:39:40

标签: r

在进行重要性采样的实验时,我模拟了Kolmogorov-Smirnov距离的值

$$ D_n = \ max_x | \ hat {F} _n(x)-F(x)| $$

其中$ n $是原始重要性样本的大小,我想将这些值与the asymptotic distribution of the Kolmogorov-Smirnov testKolmogorov distribution进行比较,即

$$ \ sqrt {N} D_n \ longrightarrow \ sup_ {t \ in [0,1]} | B(t)| $$

其中$ B $是布朗桥。

由于ks.test依赖于这种渐近分布,它的cdf已经出现在R的某个地方,我想知道如何访问它。 R函数ks.test包含指令

PVAL <- 1 - if (alternative == "two.sided") 
                .Call(C_pKolmogorov2x, STATISTIC, n)

但我自己对C_pKolmogorov2x的电话不起作用。

1 个答案:

答案 0 :(得分:4)

“写作R扩展”manual

的相关摘录
  

然后,NAMESPACE文件中的指令

     

useDynLib(myDLL,.registration = TRUE)

     

导致加载DLL,也导致R变量foo,bar_sym,   R_call_sym和R_version_sym将在包的名称空间中定义。

翻译成人说这意味着(大致)所有非R代码的默认位置都在包名称空间中。因此需要三重结肠。

因此,如果您在代码中找到.Call(something,args),则可以通过.Call(package:::something,args)从comandline调用它。这就是为什么对C_pKolmogorovx的简单调用不起作用的原因。 R没有找到它,因为包名称空间用于包,而不是用户。

如果您想了解外部代码所在的位置,您需要查看2个文件。包的第一个NAMESPACE,用于查看useDynLib是否用于注册外部代码函数,然后查看src/init.c文件,其中注册了包中所有可用的外部代码函数。