Usually, `R` excludes one level of the categorical and the coefficients denote the difference of each class to this reference class (this is called dummy coding or treatment contrasts, see [here][1] for an excellent overview). For each coefficient of each level of the categorical variable, a [Wald test][2] is performed to test whether the *pairwise difference* between the coefficient of the reference class and the other class is different from zero or not. This is what the $z$ and $p$-values in the regression table are. If only one categorical class is significant, this does *not* imply that the whole variable is meaningless and should be removed from the model. You can check the overall effect of the variable by performing a [likelihood ratio test][3]: fit two models, one with and one without the variable and type `anova(model1, model2, test="LRT")` in `R`. Here is an example: mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv") mydata$rank <- factor(mydata$rank) my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial") summary(my.mod) Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -3.989979 1.139951 -3.500 0.000465 *** gre 0.002264 0.001094 2.070 0.038465 * gpa 0.804038 0.331819 2.423 0.015388 * rank2 -0.675443 0.316490 -2.134 0.032829 * rank3 -1.340204 0.345306 -3.881 0.000104 *** rank4 -1.551464 0.417832 -3.713 0.000205 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 The level `rank1` has been omitted and each coefficient of `rank` denotes the difference between the coefficient of `rank1` and the corresponding `rank` level. So the difference between the coefficient of `rank1` and `rank2` would be $-0.675$. The coefficient of `rank1` is simply the intercept. So the true coefficient of `rank2` would be $-3.99 - 0.675 = -4.67$. The Wald tests here test whether the difference between the coefficient of the reference class (here `rank1`) and the corresponding levels differ from zero. In this case, we have evidence that the coefficients of all classes differ from the coefficient of `rank1`. You could also fit the model without an intercept to see all coefficients directly: my.mod2 <- glm(admit ~ gre + gpa + rank-1, data = mydata, family = "binomial") summary(my.mod2) Coefficients: Estimate Std. Error z value Pr(>|z|) gre 0.002264 0.001094 2.070 0.038465 * gpa 0.804038 0.331819 2.423 0.015388 * rank1 -3.989979 1.139951 -3.500 0.000465 *** rank2 -4.665422 1.109370 -4.205 2.61e-05 *** rank3 -5.330183 1.149538 -4.637 3.54e-06 *** rank4 -5.541443 1.138072 -4.869 1.12e-06 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Here, the Wald test checks not the difference between coefficients but the hypothesis that each individual coefficient is zero. Again, we have evidence that every coefficient of `rank` differs from zero. Finally, to check whether the whole variable `rank` improves the model fit, we fit one model with and one without the variable and conduct a likelihood ratio test: my.mod1 <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial") my.mod2 <- glm(admit ~ gre + gpa, data = mydata, family = "binomial") anova(my.mod1, my.mod2, test="LRT") Analysis of Deviance Table Model 1: admit ~ gre + gpa + rank Model 2: admit ~ gre + gpa Resid. Df Resid. Dev Df Deviance Pr(>Chi) 1 394 458.52 2 397 480.34 -3 -21.826 7.088e-05 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 The likelihood ratio test is highly significant and we conclude that the variable `rank` should remain in the model. [This post][4] is also very interesting. [1]: http://www.ats.ucla.edu/stat/r/library/contrast_coding.htm [2]: http://stats.stackexchange.com/questions/56066/wald-test-in-regression-ols-and-glms-t-vs-z-distribution [3]: http://stats.stackexchange.com/questions/59085/how-to-test-for-simultaneous-equality-of-choosen-coefficients-in-logit-or-probit/59093#59093 [4]: http://stats.stackexchange.com/questions/31690/how-to-test-the-statistical-significance-for-categorical-variable-in-linear-regr