如何做具有随机效应的逐步建模(lme4 + lmerTest?)

时间:2019-04-11 17:48:48

标签: r lme4 mixed lmertest

我正在尝试执行具有随机效果的逐步模型,我可以得到一个BIC值。

lmerTest软件包表示它可与lme4一起使用,但是只有从模型中删除我的一个自变量(这是具有两个选项(TM)的一个因素)时,我才能使其工作

错误代码是:

  

$<-*tmp*,公式,值=条款)中的错误:没有方法可用于   分配该S4类的子集

  

as_lmerModLmerTest(model)中的错误:     不是'lmerMod'类的模型:无法强制使用'lmerModLmerTest类

我在某处阅读过它可能与drop1有关,但我仍然没有弄清楚。我也乐于接受其他软件包和功能的建议。

之前,尝试 full.model <-lm(... 一切正常。更改为lmer后,它不再存在。

我现在正在使用的代码:

full.model <- lme4::lmer(dep ~ TM + ind + (1 | dorp),  data=test)  #lmerTest:: give same outcome

step.model<- lmerTest::step(full.model, direction="both",k=log(16))   # n=16

summary(step.model)

BIC(step.model)
#Example dataset

test <- data.frame(TM = as.factor(c(rep("org", 3), rep("min", 3),rep("org", 3), rep("min", 3),rep("org", 3), rep("min", 3))),
                   dep = runif(18,0,20),
                   ind = runif(18,0,7),
                   dorp = as.factor(c(rep(1,6),rep(2,6),rep(3,6))))

1 个答案:

答案 0 :(得分:0)

问题在于,当在随机效果选择阶段从模型中消除所有随机效果时,lmerTest::step.lmerModLmerTest会中断。它可能不应该(我认为该程序包的早期版本可能不行),但是解决起来并不难。您可以指定不简化随机效应模型(step(full.model, reduce.random=FALSE)),,如果遇到此错误,请丢弃模型的随机效应组件,然后使用{{ 1}}生成的线性模型:

step()

(由于它包含fixmodel <- lm(formula(full.model,fixed.only=TRUE), data=eval(getCall(full.model)$data)) step(fixmodel) ,因此仅在R可以找到eval()参数所引用的数据帧的环境中有效)。

我已提交有关此问题的issue


此外(令人困惑),data=stats::step包中的step.lmerModLmerTest具有不同的论据/做出不同的假设。 lmerTest被定义为

stats::step

step(object, scope, scale = 0, direction = c("both", "backward", "forward"), trace = 1, keep = NULL, steps = 1000, k = 2, ...) 使用时

step.lmerModLmerTest

尤其是,step(object, ddf = c("Satterthwaite", "Kenward-Roger"), alpha.random = 0.1, alpha.fixed = 0.05, reduce.fixed = TRUE, reduce.random = TRUE, keep, ...) 参数不适用(direction仅适用于向后消除); step.lmerModLmerTest不会(我相信k使用AIC,但我必须仔细检查)。

step.lmerModLmerTest

set.seed(1001) dd <- data.frame(x1=rnorm(500),x2=rnorm(500), x3=rnorm(500),f=factor(rep(1:50,each=10))) library(lme4) dd$y <- simulate(~x1+x2+x3+(1|f), newdata=dd, newparams=list(theta=1,beta=c(1,2,0,0), sigma=1), family=gaussian)[[1]] library(lmerTest) full.model <- lmer(y~x1+x2+x3+(1|f), data=dd) step.model<- step(full.model) 具有类step.model;有打印方法,但没有摘要方法。