0

我正在使用 R 软件(自举 Kolmogorov-Smirnov 测试)对非常大的数据集进行一些统计分析,这意味着我的 p 值都非常小。我已经对我执行的大量测试进行了 Bonferroni 校正,这意味着我的 alpha 值也非常小,以拒绝零假设。

问题是,在某些情况下,R 给我的 p 值为 0,其中 p 值可能太小以至于无法呈现(这些通常用于非常大的样本量)。虽然我可以很高兴地拒绝这些测试的零假设,但数据是为了发布,所以我需要写 p < ..... 但我不知道 R 中的最低可报告值是多少?

我正在使用该ks.boot功能以防万一。

任何帮助将非常感激!

4

2 回答 2

4

.Machine$double.xmin给你最小的非零归一化浮点数。在大多数系统上是 2.225074e-308。但是,我不认为这是一个合理的限制。

相反,我建议Matching::ks.boot你改行

ks.boot.pval <- bbcount/nboots

ks.boot.pval <- log(bbcount)-log(nboots)并在对数尺度上工作。

编辑:

可以trace用来修改函数。

第 1 步:查看函数体,找出添加附加代码的位置。

as.list(body(ks.boot))

您会看到元素 17 是ks.boot.pval <- bbcount/nboots,因此我们需要在其后直接添加修改后的代码。

第二步:trace函数。

trace (ks.boot, quote(ks.boot.pval <- log(bbcount)-log(nboots)), at=18)

第 3 步:现在您可以使用ks.boot,它将返回引导 p 值的对数为ks.boot.pvalue. 请注意,您不能使用,summary.ks.boot因为它会调用format.pval,这不会向您显示负值。

第 4 步:使用untrace(ks.boot)删除修改。

于 2013-08-08T10:39:58.227 回答
0

我不知道ks.boot包中是否有方法,Rmpfr或者gmp 如果有,或者您想滚动自己的代码,您可以使用任意精度和任意大小的数字。

于 2013-08-08T11:34:18.117 回答