Search code examples
rstatisticslogistic-regressionanovamodel-fitting

How can I get the p-value for whether my binomial regression is significantly different from a null model in R?


I have a dataset demos_mn of demographics and an outcome variable. There are 5 variables of interest, so that my glm and null models looks like this:

# binomial model
res.binom <- glm(var.bool ~ var1 + var2*var3 + var4 + var5,
                 data = demos_mn, family = "binomial")
# null model
res.null <- glm(var.bool ~ 1,
                 data = demos_mn, family = "binomial")
# calculate marginal R2
print(r.squaredGLMM(res.binom))
# show p value
print(anova(res.null, res.binom))

That is my work flow for glm mixed models, but for my binomial model I do not get a p-value for the overall model only for the predictors. I'm hoping someone could enlighten me?

I did have some success using glmer for a repeated measures version of the model, however that unfortunately means I had to get rid of some key variables that were not measured repeatedly.


Solution

  • Perhaps you forgot test="Chisq" ? From ?anova.glm:

    test: a character string, (partially) matching one of ‘"Chisq"’, ‘"LRT"’, ‘"Rao"’, ‘"F"’ or ‘"Cp"’. See ‘stat.anova’.

    example("glm") ## to set up / fit the glm.D93 model
    null <- update(glm.D93, . ~ 1)
    anova(glm.D93, null, test="Chisq")
    
    Analysis of Deviance Table
    
    Model 1: counts ~ outcome + treatment
    Model 2: counts ~ 1
      Resid. Df Resid. Dev Df Deviance Pr(>Chi)
    1         4     5.1291                     
    2         8    10.5814 -4  -5.4523    0.244
    

    test="Chisq" is poorly named: it's a likelihood ratio test, note it's an asymptotic test [relies on a large sample size]. For GLMs with an adjustable scale parameter (Gaussian, Gamma, quasi-likelihood) you would use test="F".