How to get exact extremely p-value in R (on log scale or otherwise) [关闭]

问题描述 投票:0回答:1

我在 R 中运行线性回归模型,关联非常显着——P 值远低于标准 2.2e-16。

回归的 t 统计量为 -44.85 自由度为 33689.

有没有办法获得准确的 P 值,甚至是 -log10(P)?我尝试了一些不同的东西——首先,包 Rmpfr 对学生的 T 发行版没有很好的支持。

还有这篇帖子:Decimal points - Probability value of 0 in Language R,但是点赞评论的答案不太对。假设我们使用该帖子中的给定示例:

d <- data.frame(x=rep(1:5,each=10))
set.seed(101)
d$y <- rnorm(50,mean=d$x,sd=0.0001)
lm1 <- lm(y~x,data=d)

coef(summary(lm1))
我们可以看出P = 9.690173e-203

答案说我们可以从以下位置获得日志(P)(这是我想要的):

tval <- coef(summary(lm1))["x","t value"] 2*pt(abs(tval),df=48,lower.tail=FALSE,log.p=TRUE)/log(10)

给出 -404.6294。该值不是 log(P)。如果我们做 -log10(9.690173e-203),答案是 202.0137;不等于 404.6294 或 404.6294/2 = 202.3147.

有解决办法吗?非常感谢您的帮助。谢谢!

r floating-point regression precision numeric
1个回答
1
投票

您可以使用:

log(2) + pt(coef(summary(lm1))["x","t value"] , 48, lower.tail = FALSE, log.p = TRUE) 
[1] -465.1537

这与p值的对数完全相似:

log(coef(summary(lm1))[2,4])
[1] -465.1537
© www.soinside.com 2019 - 2024. All rights reserved.