繁体   English   中英

如何遍历glm测试不同的模型

[英]How to loop over glm testing different models

我有一个向量a ,其中包含我的变量的一些组合。 为了获得最佳模型(最小的BIC),我希望能够遍历glm函数-嗯,那glm

数据看起来像这样:

de.dat <- data.frame(death=c(0,0,0,1,0), ac=c(1, 2, 2, 3, 2), fv=c(1,0,0,0,1), vs=c(0,0,0,0,0), v2=c(0,0,1,1,1), ms=c(0,0,0,0,0), yv=c(0,0,1,0,1))

vars <- c("ac", "fv", "vs", "v2", "ms", "yv")
a <- apply(data.frame(t(combn(vars, 5))), 1, paste, collapse="+")

该模型应如下所示,具有因变量deatha的每个元素的自变量:

glm(death ~ a, data=de.dat, family="binomial")

为了获得最佳模型,我需要提取每个模型的BIC,然后才能确定哪个BIC属于哪个模型。 预先感谢。

这应该可以帮助您。 这是您的数据:

de.dat <- data.frame(death=c(0,0,0,1,0), ac=c(1, 2, 2, 3, 2), fv=c(1,0,0,0,1), vs=c(0,0,0,0,0), v2=c(0,0,1,1,1), ms=c(0,0,0,0,0), yv=c(0,0,1,0,1))
vars <- c("ac", "fv", "vs", "v2", "ms", "yv")

您应该在内部使用整个公式创建字符向量(不仅是正确的部分):

a <- apply(cbind(paste(names(de.dat)[1],"~"),data.frame(t(combn(vars, 5)))), 1, paste, collapse="+")

然后,使用lapply函数可以创建一个列表,其中包含所有6个模型:

models <- lapply(a,FUN = function(X) glm(X, data=de.dat, family="binomial"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM