在r循环中运行所有可能的模型

问题描述 投票:1回答:1

我有3个独立变量(IV),1个因变量(DV)和一个IV group,其他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...

如何在循环中优雅地运行所有可能的模型?

感谢您的帮助!

r loops model
1个回答
1
投票

您还可以使用组合:

 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)

我不建议将其进一步分解,尽管可能

© www.soinside.com 2019 - 2024. All rights reserved.