Selecting the statistically significant variables in an R glm model

前端 未结 4 1072
别跟我提以往
别跟我提以往 2020-12-23 22:52

I have an outcome variable, say Y and a list of 100 dimensions that could affect Y (say X1...X100).

After running my glm and viewing a summary of my mod

4条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-23 23:42

    Although @kith paved the way, there is more that can be done. Actually, the whole process can be automated. First, let's create some data:

    x1 <- rnorm(10)
    x2 <- rnorm(10)
    x3 <- rnorm(10)
    y <- rnorm(10)
    x4 <- y + 5 # this will make a nice significant variable to test our code
    (mydata <- as.data.frame(cbind(x1,x2,x3,x4,y)))
    

    Our model is then:

    model <- glm(formula=y~x1+x2+x3+x4,data=mydata)
    

    And the Boolean vector of the coefficients can indeed be extracted by:

    toselect.x <- summary(model)$coeff[-1,4] < 0.05 # credit to kith
    

    But this is not all! In addition, we can do this:

    # select sig. variables
    relevant.x <- names(toselect.x)[toselect.x == TRUE] 
    # formula with only sig variables
    sig.formula <- as.formula(paste("y ~",relevant.x))  
    

    EDIT: as subsequent posters have pointed out, the latter line should be sig.formula <- as.formula(paste("y ~",paste(relevant.x, collapse= "+"))) to include all variables.

    And run the regression with only significant variables as OP originally wanted:

    sig.model <- glm(formula=sig.formula,data=mydata)
    

    In this case the estimate will be equal to 1 as we have defined x4 as y+5, implying the perfect relationship.

提交回复
热议问题