我正在使用非常大的数据集的R软件(自举Kolmogorov-Smirnov测试)进行一些统计分析,这意味着我的p值都非常小。我已经Bonferroni纠正了我执行的大量测试,这意味着我的alpha值也非常小,以便拒绝原假设。
问题是,在某些情况下,R表示p值为0,其中p值可能很小而无法呈现(这些通常用于非常大的样本量)。虽然我可以高兴地拒绝这些测试的零假设,但数据是用于发布的,所以我需要编写p< .....但我不知道R中最低的可报告值是多少?
我正在使用ks.boot
函数以防万一。
非常感谢任何帮助!
答案 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
是否在包Rmpfr
或gmp
中有方法,但如果确实如此,或者您想要滚动自己的代码,则可以使用任意精度和任意大小的数字。