我正在尝试编写一个代码,该代码将显示混合变量组合的回归系数。每次回归后,应将另一个变量添加到回归中。最后,我将得到一个列表,显示每个回归的系数我想在每次回归中只允许1-4个变量。 这是我的示例数据:
dat <- read.table(text = " var1 var2 var3 var4
0 3 9 7
1 3 8 4
1 1 2 8
0 1 2 3
0 1 8 3
1 6 1 2
0 6 7 1
1 6 1 5
0 5 9 7
1 3 8 7
1 4 2 7
0 1 2 3
0 7 6 3
1 6 1 1
0 6 3 9
1 6 1 1 ",header = TRUE)
我设法得到一个列表,通过使用此代码显示特定变量(var1)和其他变量之间回归的系数:
t(sapply(setdiff(names(dat),"var1"),
function(x) coef(glm(reformulate(x,response="var1"),
data=dat,family=binomial(link='logit')))))
这是输出:
(Intercept) var2
var2 -0.56394149 0.13865097
var3 1.28295290 -0.29798823
var4 0.08075091 -0.01819781
但是,我想添加使用变量组合的回归,并将结果与其p值一起显示在表中,例如:
(Intercept) var2 var3 var4 p-value
var2 -0.56394149 0.13865097 0.02
var3 1.28295290 -0.29798823 0.01
var4 0.08075091 -0.01819781 0.2
var2+var3
var2+var4
var3+var4
var2+var3+var4
任何想法怎么做?谢谢
答案 0 :(得分:2)
您可以使用MuMIn
:
mod <- glm(var1 ~ var2 + var3 + var4, data = dat, na.action = na.fail)
# Nullmodel
mod0 <- glm(var1 ~ 1, data = dat, na.action = na.fail)
require(MuMIn)
allmods <- dredge(mod, extra = c(pval = function(x) anova(x, mod0, test = 'F')[2, 'Pr(>F)']))
allmods
p值来自与null模型的比较。