在r循环中运行所有可能的模型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在r循环中运行所有可能的模型相关的知识,希望对你有一定的参考价值。
我有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...
如何在循环中优雅地运行所有可能的模型?
感谢您的帮助!
答案
您还可以使用组合:
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)
我不建议将其进一步分解,尽管可能
以上是关于在r循环中运行所有可能的模型的主要内容,如果未能解决你的问题,请参考以下文章