我在R中运行线性回归模型,关联非常显著- p值远低于标准的2.2e-16。
回归的t统计量为-44.85自由度为33689。
是否有办法得到确切的p值,甚至-log10(p)?我尝试了一些不同的东西——首先,包Rmpfr对学生的T发行版没有很好的支持。
还有这个帖子:小数点- R语言中0的概率值,但是在投票最多的评论中的答案不太正确。假设我们在那篇文章中使用了给定的示例:
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)。如果我们用-log10(9.690173e-203),答案是202.0137;它不等于404.6294或404.6294/2 = 202.3147。
是否有解决这个问题的方法?非常感谢你的帮助。谢谢!
您可以使用:
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