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?
1 Answer
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
andcloglog
(complementary log-log)
But
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 tomake.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$ Oct 3, 2015 at 17:40
family=quasi(link="identity", variance = "mu(1-mu)")
, if you want it. $\endgroup$family=binomial(link=make.link("identity"))
. $\endgroup$make.link
. $\endgroup$