如何(快速)从lme4中的lmer模型中提取t值?

3
我正在使用一个脚本,调用lme4包的lmer函数数千次(不用担心,之后会对多重比较进行相关修正),希望在单次调用中节省尽可能多的时间。我想从拟合模型中提取t值,最快(计算时间)的方法是什么?我尝试使用summary(model),但它似乎比调用lmer本身需要更长的时间。是否可以在不使用summary()的情况下从获得的模型中获取t值?
1个回答

5
回答这个问题的最佳方法是查看 lme4:::summary.merMod 的代码,以确定如何获取所需的部分。以下代码应该可以实现:
library(lme4)
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy)
t.stat <- function(x) fixef(x)/sqrt(diag(vcov(x)))
t.stat(fm1)
##    (Intercept)        Days 
##     36.838311    6.771485 
coef(summary(fm1))[,"t value"]  ## identical

根据您对 lmer 的成千上万次调用中共同的特征,可能存在其他提高计算效率的机会:请参见例如 ?refit?modular
(查看 lme4:::summary.merMod 代码并没有发现任何明显耗时的内容:我对能够说明这些计算缓慢的分析结果感兴趣。)

由于某些原因,我无法使用summary()复制我的初始问题 - 但我已经重写了代码并使用了另一台机器。 对于造成的麻烦,非常抱歉,并感谢您的回复! - mmagnuski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接