在进行重要性采样的实验时,我模拟了Kolmogorov-Smirnov距离的值
$$ D_n = \ max_x | \ hat {F} _n(x)-F(x)| $$
其中$ n $是原始重要性样本的大小,我想将这些值与the asymptotic distribution of the Kolmogorov-Smirnov test或Kolmogorov 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
的电话不起作用。
答案 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
文件,其中注册了包中所有可用的外部代码函数。