我正在使用一个调用包lmer
函数lme4
数千次的脚本(不用担心,稍后会执行多重比较的相关更正),并且希望在单个调用期间尽可能多地节省时间。
我想从拟合模型中提取 t 值,最快(计算时间)的方法是什么?我尝试使用summary(model)
,但它似乎比调用lmer
自身花费(更多)更长的时间。是否可以在不使用的情况下从获得的模型中获取 t 值summary()
?
回答这个问题的最好方法是查看代码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
并没有发现任何明显耗时的内容:我会对分析结果感兴趣,这些结果说明这些计算中什么是缓慢的。)