使用update从线性混合模型中删除协变量

时间:2018-09-19 21:37:05

标签: r loops lapply lme4

我是R的新手。我有一个线性混合模型,其中包含多个预测变量,我想测试每个预测变量的意义。我知道我可以使用lmerTest,但我的合著者希望我改为对每个预测变量进行似然比检验。我想使用update函数来获取一系列子模型,这些子模型依次省略每个预测变量。我尝试了以下

data(mtcars)

h=lmer(mpg ~ 1 + cyl + disp + hp + drat + (1|carb), data=mtcars)

predvars=c("cyl","disp","hp","drat")
for (i in predvars){
  modelform=update(as.formula(paste0("h, . ~ . -",i)))
  print(summary(modelform))
 } 

我遇到以下错误

解析错误(text = x,keep.source = FALSE):   :1:2:意外的',' 1:h,      ^

我也尝试过使用lapply

Fits=lapply(predvars, function(x) {update(h, .~.-i, list(i=as.name(x)))})
names(Fits)=predvars

实际上并没有更新模型,只是将整个模型进行了i次拟合。我究竟做错了什么?谢谢。

1 个答案:

答案 0 :(得分:0)

您第一次尝试会产生错误,因为您将public void main() { for (i = 0, i < 1000, i++) { someMethod(i); // cant use executeBatch in this case, because I need to doManyOtherThingsIncludingSelectingRowInsertedAbove(); } } public void someMethod(int x){ PreparedStatement ps = conn.createPreparedStatement(sql); ps.setInt(1, x); ps.execute(); // ... } 放在了h内。做:

as.formula