如何将变量组合添加到回归中

时间:2014-08-24 09:59:19

标签: r logistic-regression

我正在尝试编写一个代码,该代码将显示混合变量组合的回归系数。每次回归后,应将另一个变量添加到回归中。最后,我将得到一个列表,显示每个回归的系数我想在每次回归中只允许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

任何想法怎么做?谢谢

1 个答案:

答案 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模型的比较。