我正在对大量的列联表进行费舍尔精确测试,并将p-val保存到生物信息学问题中。其中一些列联表很大,所以我已经尽可能地增加了工作空间;但是当我运行以下代码时,我得到一个错误:
result <- fisher.test(data,workspace=2e9)
LDSTP is too small for this problem. Try increasing the size of the workspace.如果我增加工作区的大小,我会得到另一个错误:
result <- fisher.test(data,workspace=2e10)
cannot allocate memory block of size 134217728Tb现在,我可以只模拟pvals:
result <- fisher.test(data, simulate.p.value = TRUE, B = 1e5)但我担心我需要大量的模拟才能得到准确的结果,因为在某些情况下,我的参数可能非常小。
因此,我的问题是,是否有某种方法可以先发制人地检查列联表是否太复杂而无法准确计算?仅在这些情况下,我就可以切换到使用B=1e10或其他工具进行大量模拟。或者至少跳过那些值为"NA“的表,这样我的工作就真正完成了?
发布于 2017-05-25 17:23:24
也许您可以在fisher.test失败时使用tryCatch来获得所需的行为?可能是这样的:
tryCatchFisher<-function(...){
tryCatch(fisher.test(...)$p.value,
error = function(e) {'too big'})
}https://stackoverflow.com/questions/40241566
复制相似问题