0

我正在使用一个全基因组关联研究数据集,p 值范围从 1E-30 到 1。我有一个 R 数据框“数据”,其中包括一个用于 p 值的变量“p”。

我需要使用以下代码对 p 值进行基因组校正:

    p=data$p

    Zsq = qchisq(1-p, 1)

    lambda = median(Zsq)/0.456

    newZsq = Zsq/lambda

    Newp = 1-pchisq(newZsq, 1)

在第二行的命令中,我使用 qchisq 函数将 p 值转换为 z 分数,p 值 < 1E-16 的 z 分数被四舍五入为无穷大。这意味着我最重要的数据点的 p 值在基因组校正后四舍五入为 0,我失去了它们的排名。

有没有办法解决?

4

1 回答 1

0

阅读help(".Machine")。然后设置lower.tail=FALSE并避免与 1 取差:

p <- 1e-17

Zsq = qchisq(p, 1, lower.tail=FALSE)

lambda = median(Zsq)/0.456

newZsq = Zsq/lambda

Newp = pchisq(newZsq, 1, lower.tail=FALSE)
#[1] 0.4994993
于 2014-06-16T14:19:59.177 回答