categorical variable in logistic regression in r

22,185

I suggest you to set x3 as a factor variable, there is no need to create dummies:

set.seed(123)
y <- round(runif(100,0,1))
x1 <- round(runif(100,0,1))
x2 <- round(runif(100,20,80))
x3 <- factor(round(runif(100,1,4)),labels=c("student", "worker", "teacher", "self-employed"))

test <- glm(y~x1+x2+x3, family=binomial(link="logit"))
summary(test)

Here is the summary:

This is the output of your model:

Call:
glm(formula = y ~ x1 + x2 + x3, family = binomial(link = "logit"))

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.4665  -1.1054  -0.9639   1.1979   1.4044  

Coefficients:
                 Estimate Std. Error z value Pr(>|z|)
(Intercept)      0.464751   0.806463   0.576    0.564
x1               0.298692   0.413875   0.722    0.470
x2              -0.002454   0.011875  -0.207    0.836
x3worker        -0.807325   0.626663  -1.288    0.198
x3teacher       -0.567798   0.615866  -0.922    0.357
x3self-employed -0.715193   0.756699  -0.945    0.345

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 138.47  on 99  degrees of freedom
Residual deviance: 135.98  on 94  degrees of freedom
AIC: 147.98

Number of Fisher Scoring iterations: 4

In any case, I suggest you to study this post on R-bloggers: https://www.r-bloggers.com/logistic-regression-and-categorical-covariates/

Share:
22,185
Jordan
Author by

Jordan

Updated on January 06, 2020

Comments

  • Jordan
    Jordan over 4 years



    how I have to implement a categorical variable in a binary logistic regression in R? I want to test the influence of the professional fields (student, worker, teacher, self-employed) on the probability of a purchase of a product.

    In my example y is a binary variable (1 for buying a product, 0 for not buying).
    - x1: is the gender (0 male, 1 female)
    - x2: is the age (between 20 and 80)
    - x3: is the categorical variable (1=student, 2=worker, 3=teacher, 4=self-employed)

    set.seed(123)
    y<-round(runif(100,0,1))
    x1<-round(runif(100,0,1))
    x2<-round(runif(100,20,80))
    x3<-round(runif(100,1,4))
    test<-glm(y~x1+x2+x3, family=binomial(link="logit"))
    summary(test)

    If I implement x3 (the professional fields) in my regression above, I get the wrong estimates/interpretation for x3.

    What I have to do to get the right influence/estimates for the categorical variable (x3)?

    Thanks a lot