Family objects provide a convenient way to specify the details of the
models used by functions such as glm
. See the
documentation for glm
for the details on how such model
fitting takes place.
Arguments
- link
a specification for the model link function. This can be a name/expression, a literal character string, a length-one character vector, or an object of class
"link-glm"
(such as generated bymake.link
) provided it is not specified via one of the standard names given next.The
gaussian
family accepts the links (as names)identity
,log
andinverse
; thebinomial
family the linkslogit
,probit
,cauchit
, (corresponding to logistic, normal and Cauchy CDFs respectively)log
andcloglog
(complementary log-log); theGamma
family the linksinverse
,identity
andlog
; thepoisson
family the linkslog
,identity
, andsqrt
; and theinverse.gaussian
family the links1/mu^2
,inverse
,identity
andlog
.The
quasi
family accepts the linkslogit
,probit
,cloglog
,identity
,inverse
,log
,1/mu^2
andsqrt
, and the functionpower
can be used to create a power link function.
Value
An object of class "family"
(which has a concise print method).
This is a list with elements
- family
character: the family name.
- link
character: the link name.
- linkfun
function: the link.
- linkinv
function: the inverse of the link function.
- variance
function: the variance as a function of the mean.
- dev.resids
function giving the deviance for each observation as a function of
(y, mu, wt)
, used by theresiduals
method when computing deviance residuals.- aic
function giving the AIC value if appropriate (but
NA
for the quasi- families). More precisely, this function returns \(-2\ell + 2 s\), where \(\ell\) is the log-likelihood and \(s\) is the number of estimated scale parameters. Note that the penalty term for the location parameters (typically the “regression coefficients”) is added elsewhere, e.g., inglm.fit()
, orAIC()
, see the AIC example inglm
. SeelogLik
for the assumptions made about the dispersion parameter.- mu.eta
function: derivative of the inverse-link function with respect to the linear predictor. If the inverse-link function is \(\mu = g^{-1}(\eta)\) where \(\eta\) is the value of the linear predictor, then this function returns \(d(g^{-1})/d\eta = d\mu/d\eta\).
- initialize
expression. This needs to set up whatever data objects are needed for the family as well as
n
(needed for AIC in the binomial family) andmustart
(seeglm
).- validmu
logical function. Returns
TRUE
if a mean vectormu
is within the domain ofvariance
.- valideta
logical function. Returns
TRUE
if a linear predictoreta
is within the domain oflinkinv
.- simulate
(optional) function
simulate(object, nsim)
to be called by the"lm"
method ofsimulate
. It will normally return a matrix withnsim
columns and one row for each fitted value, but it can also return a list of lengthnsim
. Clearly this will be missing for ‘quasi-’ families.- dispersion
(optional since R version 4.3.0) numeric: value of the dispersion parameter, if fixed, or
NA_real_
if free.
Details
family
is a generic function with methods for classes
"glm"
and "lm"
(the latter returning gaussian()
).
For the binomial
and quasibinomial
families the response
can be specified in one of three ways:
As a factor: ‘success’ is interpreted as the factor not having the first level (and hence usually of having the second level).
As a numerical vector with values between
0
and1
, interpreted as the proportion of successful cases (with the total number of cases given by theweights
).As a two-column integer matrix: the first column gives the number of successes and the second the number of failures.
The quasibinomial
and quasipoisson
families differ from
the binomial
and poisson
families only in that the
dispersion parameter is not fixed at one, so they can model
over-dispersion. For the binomial case see
McCullagh and Nelder (1989, pp. 124–8).
Although they show that there is (under some
restrictions) a model with
variance proportional to mean as in the quasi-binomial model, note
that glm
does not compute maximum-likelihood estimates in that
model. The behaviour of S is closer to the quasi- variants.
Note
The link
and variance
arguments have rather awkward
semantics for back-compatibility. The recommended way is to supply
them as quoted character strings, but they can also be supplied
unquoted (as names or expressions). Additionally, they can 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.
This is potentially ambiguous: supplying link = logit
could mean
the unquoted name of a link or the value of object logit
. It
is interpreted if possible as the name of an allowed link, then
as an object. (You can force the interpretation to always be the value of
an object via logit[1]
.)
References
McCullagh P. and Nelder, J. A. (1989) Generalized Linear Models. London: Chapman and Hall.
Dobson, A. J. (1983) An Introduction to Statistical Modelling. London: Chapman and Hall.
Cox, D. R. and Snell, E. J. (1981). Applied Statistics; Principles and Examples. London: Chapman and Hall.
Hastie, T. J. and Pregibon, D. (1992) Generalized linear models. Chapter 6 of Statistical Models in S eds J. M. Chambers and T. J. Hastie, Wadsworth & Brooks/Cole.
Author
The design was inspired by S functions of the same names described
in Hastie & Pregibon (1992) (except quasibinomial
and
quasipoisson
).
Examples
library(bellreg)
data(faults)
fit <- glm(nf ~ lroll, data = faults, family = bell("log"))
summary(fit)
#>
#> Call:
#> glm(formula = nf ~ lroll, family = bell("log"), data = faults)
#>
#> Coefficients:
#> Estimate Std. Error z value Pr(>|z|)
#> (Intercept) 0.9852513 0.3336642 2.953 0.003149 **
#> lroll 0.0019093 0.0004923 3.878 0.000105 ***
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#>
#> (Dispersion parameter for bell family taken to be 1)
#>
#> Null deviance: 38.820 on 31 degrees of freedom
#> Residual deviance: 23.175 on 30 degrees of freedom
#> AIC: 181.92
#>
#> Number of Fisher Scoring iterations: 4
#>