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

mma*_*ski 2 r lme4 lmer

我正在使用一个脚本来调用包的lmer功能lme4数千次(不用担心,稍后会执行多次比较的相关更正)并且希望在单个调用期间尽可能多地节省时间.

我想从拟合模型中提取t值,这是最快(计算时间)的方法吗?我尝试过使用summary(model)但似乎比调用lmer自己要花费更多时间.是否有可能从获得的模型中获取t值而不使用summary()

Ben*_*ker 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
Run Code Online (Sandbox Code Playgroud)

根据成千上万次调用中常见的特性lmer,可能还有其他计算效率的机会:参见eg ?refit?modular.

(查看代码lme4:::summary.merMod并没有显示任何明显耗时的内容:我会对分析结果表示感兴趣,这些结果表明这些计算的速度很慢.)