lmer 输出非常低的 P 值

lmer output very low P values

我正在尝试获取使用 lmer 构建的混合效应模型 (m) 的 P 值。

我一直在使用以下命令来提取 P 值,但不幸的是,对于那些 <10-16 的人,我得到 P=0.0000。请看下面的例子:

coefs <- data.frame(coef(summary(m)))
coefs$p.z <- 2 * (1 - pnorm(abs(coefs$t.value)))
coefs

                      Estimate Std..Error    t.value          p.z
(Intercept)        17.32329080 0.39098373 44.3069347 0.000000e+00
variable            0.61802971 0.03804828 16.2433009 0.000000e+00
DietDiet1           1.44932534 0.48893732  2.9642355 3.034360e-03
DietDiet2          18.76067056 0.76890739 24.3991289 0.000000e+00

我如何计算这些的提取 P 值?

您应该能够使用 lower.tail=FALSE 参数来更准确地计算 1-p

coefs$p.z <- 2 * pnorm(abs(coefs$t.value),lower.tail=FALSE)

如果你有 真的 小 p 值(即 <1e-300 而不是 <1e-16)你仍然可以在 log-p 尺度上计算它们:

logpval <- log(2) + pnorm(abs(coefs$t.value), log.p=TRUE, lower.tail=FALSE)