在r循环中运行所有可能的模型
我有3个自变量(IV)、1个因变量(DV)和一个IV在r循环中运行所有可能的模型,r,loops,model,R,Loops,Model,我有3个自变量(IV)、1个因变量(DV)和一个IV组,其他5个DV嵌套在其中。我正在探索模型结构(在分层线性模型中),尝试将5个IV的所有组合用于R中的模型。目前,我的方法是手动编写模型结构,如下所示: glmer(DV ~ IV1 + (1|group), data = df) glmer(DV ~ IV2 + (1|group), data = df) glmer(DV ~ IV3 + (1|group), data = df) glmer(DV ~ IV1 + IV2 + (1|grou
组,其他5个DV嵌套在其中。我正在探索模型结构(在分层线性模型中),尝试将5个IV的所有组合用于R中的模型。目前,我的方法是手动编写模型结构,如下所示:
glmer(DV ~ IV1 + (1|group), data = df)
glmer(DV ~ IV2 + (1|group), data = df)
glmer(DV ~ IV3 + (1|group), data = df)
glmer(DV ~ IV1 + IV2 + (1|group), data = df)
glmer(DV ~ IV1 + IV3 + (1|group), data = df)
# etc...
如何在循环中优雅地运行所有可能的模型
谢谢你的帮助 您也可以使用以下组合:
s=paste0("IV",1:3)
A=Map(combn,list(s),1:3,c(function(x)reformulate(c(x,"(1|group)"),"D")),simplify=F)
rapply(A,glmer,data=df)
如果您不关心长行代码,那么您也可以在第一行中包含glmer
函数:
Map(combn,list(s),1:3,c(function(x)glmer(reformulate(c(x,"(1|group)"),"D"),data=df)),simplify=F)
您还可以将上述代码分成不同的行:
s=paste0("IV",1:3)
A=Map(combn,list(s),1:3,c(function(x)paste0(c(x,"(1|group)"),collapse="+")),simplify=F)
B=rapply(A,reformulate,response="D")
lapply(B,glmer,data=df)
我不建议进一步分解它,尽管它可能我猜MuMIn的Droge
也可以为glmer
做所有的模型组合。或者你可以制作一个完整的模型,使用drop1
drop1
将无法解决问题,因为在删除后,你仍然需要在某个点将其添加回来。例如,如果你有1,2,3,那么删除3,你将有1,2,因此你必须将它添加回1,3甚至2,3这是非常好的,但是对于使用R包中可用数据的工作代码来说会更有帮助。