在舍入到0之前,R的最低数字是多少?

时间:2013-08-08 10:23:05

标签: r statistics p-value

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

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

我正在使用ks.boot函数以防万一。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分: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,因此我们需要在此之后直接添加修改后的代码。

第2步: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)删除修改。

答案 1 :(得分:0)

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