我想从一个依赖于其他两个独立因素的所有组合的回归中获得回归系数和拟合统计数据。
我所拥有的是这样的数据(注意NA):
H<-data.frame(replicate(10,sample(0:20,10,rep=TRUE)))
H[2,3]<-NA
names(H)<-c("dep",letters[1:9])
所以我想在所有这些组合上使用lm
.
apply(combn(names(H)[2:9],2), MARGIN=2, FUN=paste, collapse="*")
“axb”“axc”“axd”“axe”“axf”“axg”……等等。
一次一个,我可以得到我想要的:
ab<-data.frame(ind="a*b",cbind(data.frame(glance(lm(data=H,dep~a*b))),
t(data.frame(unlist((lm(data=H,dep~a*b)[1]))))
))
names(ab)[13:16]<-c("int","coef1","coef2","coefby")
ac<-data.frame(ind="a*c",cbind(data.frame(glance(lm(data=H,dep~a*c))),
t(data.frame(unlist((lm(data=H,dep~a*c)[1]))))
))
names(ac)[13:16]<-c("int","coef1","coef2","coefby")
rbind(ab,ac)
我想要的是所有这些系数和统计数据,或者至少是模型系数和 r.squared。
有人已经展示了如何使用 combn 来完成几乎完全相同的事情。但是当我尝试修改这个使用glance
而不是coefs
fun <- function(x) glance(lm(dep~paste(x, collapse="*"), data=H))[[1]][1]
combn(names(H[2:10]), 2, fun)
我得到一个错误。我想也许我需要尝试“dep”重复 36 次,每个 2 因素组合一个,但那没有做到。
Error in model.frame.default(formula = dep ~ paste(x, collapse = "*"), :
variable lengths differ (found for 'paste(x, collapse = "*")')
对于所有可能的 dep~x*y 多元回归组合(“dep”始终是我的 y 因变量),我如何一次获得一个系数或所有系数?谢谢!