I want to fit a linear model by R with family=binomial(link="identity"), however, binomial family do not have identity link. What should I do?

  • 2
    $\begingroup$ Note that if you need to both deal with overdispersion and use an identity link you should consider going directly to a quasi- model with binomial variance function. An intercept-only binomial model can be fitted by hand. $\endgroup$
    – Glen_b
    Commented Mar 2, 2015 at 5:26
  • 1
    $\begingroup$ See Wikipedia on the linear probability model & CV posts here & here for the statistical background. You want family=quasi(link="identity", variance = "mu(1-mu)"), if you want it. $\endgroup$ Commented Mar 2, 2015 at 10:42
  • 3
    $\begingroup$ (And if you wanted the dispersion parameter fixed at one: family=binomial(link=make.link("identity")). $\endgroup$ Commented Mar 2, 2015 at 10:57
  • 1
    $\begingroup$ @Scortchi, why not turn those comments into an official answer? $\endgroup$ Commented Mar 4, 2015 at 17:33
  • 1
    $\begingroup$ @gung: On actually testing the code before posting an answer I found out you don't need make.link. $\endgroup$ Commented Mar 6, 2015 at 14:59

1 Answer 1


See Wikipedia on the linear probability model, & CV posts here & here for the statistical background. Though not "wrong", you'd want a good reason for using an identity link to model a Bernoulli probability.

According to the family manual

the binomial family [accepts] the links logit, probit, cauchit, (corresponding to logistic, normal and Cauchy CDFs respectively) log and cloglog (complementary log-log)


The link and variance arguments have rather awkward semantics for back-compatibility. The recommended way is to supply them is as quoted character strings, but they can also be supplied unquoted (as names or expressions). In addition, they can also be supplied as a length-one character vector giving the name of one of the options, or as a list (for link, of class "link-glm"). The restrictions apply only to links given as names: when given as a character string all the links known to make.link are accepted.

So family=binomial(link="identity") works but family=binomial(link=identity) doesn't. (If you find differently it might be to do with the R version.) To allow for over-dispersion, then usefamily=quasi(link="identity", variance = "mu(1-mu)").

  • 2
    $\begingroup$ the link="identity" vs. link=identity fix was a huge help. This is a workout in Agresti's CDA textbook. The code he provides is the quasi(link...) you discuss, however the simplicity of adding " " is elegant fix. To my understanding the link="identity" call represents the binomial as a linear model. $\endgroup$ Commented Oct 3, 2015 at 17:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.