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)
我正在尝试获取使用 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)