如何在R中获得精确的极低P值(对数标度或其他)[关闭]

s5a0g9ez  于 2023-04-03  发布在  其他
关注(0)|答案(1)|浏览(80)

**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
我在R中运行线性回归模型,相关性非常显著-P值远低于标准2.2e-16。
回归的t统计量为-44.85,自由度为33689。
有没有一种方法可以得到精确的P值,甚至是-log 10(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
答案是我们可以从下面得到一个log(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)。如果我们做-log 10(9.690173e-203),答案是202.0137;它不等于404.6294或404.6294/2 = 202.3147。
对此有什么解决方法吗?非常感谢您的帮助。谢谢!

xmd2e60i

xmd2e60i1#

您可以用途:

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

相关问题