Family objects provide a convenient way to specify the details of the models
used by many model fitting functions. The family functions presented here are
currently for use with brms only and will NOT work with other model
fitting functions such as glm
or glmer
.
However, the standard family functions as described in
family
will work with brms.
brmsfamily(family, link = NULL, link_sigma = "log", link_shape = "log",
link_nu = "logm1", link_phi = "log", link_kappa = "log",
link_beta = "log", link_zi = "logit", link_hu = "logit",
link_zoi = "logit", link_coi = "logit", link_disc = "log",
link_bs = "log", link_ndt = "log", link_bias = "logit",
link_xi = "log1p", link_alpha = "identity", link_quantile = "logit",
threshold = c("flexible", "equidistant"))student(link = "identity", link_sigma = "log", link_nu = "logm1")
bernoulli(link = "logit")
negbinomial(link = "log", link_shape = "log")
geometric(link = "log")
lognormal(link = "identity", link_sigma = "log")
skew_normal(link = "identity", link_sigma = "log",
link_alpha = "identity")
exponential(link = "log")
weibull(link = "log", link_shape = "log")
frechet(link = "log", link_nu = "logm1")
gen_extreme_value(link = "identity", link_sigma = "log",
link_xi = "log1p")
exgaussian(link = "identity", link_sigma = "log", link_beta = "log")
wiener(link = "identity", link_bs = "log", link_ndt = "log",
link_bias = "logit")
Beta(link = "logit", link_phi = "log")
von_mises(link = "tan_half", link_kappa = "log")
asym_laplace(link = "identity", link_sigma = "log",
link_quantile = "logit")
hurdle_poisson(link = "log")
hurdle_negbinomial(link = "log", link_shape = "log", link_hu = "logit")
hurdle_gamma(link = "log", link_shape = "log", link_hu = "logit")
hurdle_lognormal(link = "identity", link_sigma = "log", link_hu = "logit")
zero_inflated_beta(link = "logit", link_phi = "log", link_zi = "logit")
zero_one_inflated_beta(link = "logit", link_phi = "log",
link_zoi = "logit", link_coi = "logit")
zero_inflated_poisson(link = "log", link_zi = "logit")
zero_inflated_negbinomial(link = "log", link_shape = "log",
link_zi = "logit")
zero_inflated_binomial(link = "logit", link_zi = "logit")
categorical(link = "logit")
cumulative(link = "logit", link_disc = "log", threshold = c("flexible",
"equidistant"))
sratio(link = "logit", link_disc = "log", threshold = c("flexible",
"equidistant"))
cratio(link = "logit", link_disc = "log", threshold = c("flexible",
"equidistant"))
acat(link = "logit", link_disc = "log", threshold = c("flexible",
"equidistant"))
A character string naming the distribution
of the response variable be used in the model.
Currently, the following families are supported:
gaussian
, student
, binomial
,
bernoulli
, poisson
, negbinomial
,
geometric
, Gamma
, lognormal
,
exgaussian
, skew_normal
, wiener
,
inverse.gaussian
, exponential
, weibull
,
frechet
, Beta
, von_mises
, asym_laplace
,
gen_extreme_value
, categorical
, cumulative
,
cratio
, sratio
, acat
, hurdle_poisson
,
hurdle_negbinomial
, hurdle_gamma
, hurdle_lognormal
,
zero_inflated_binomial
, zero_inflated_beta
,
zero_inflated_negbinomial
, zero_inflated_poisson
,
and zero_one_inflated_beta
.
A specification for the model link function. This can be a name/expression or character string. See the 'Details' section for more information on link functions supported by each family.
Link of auxiliary parameter sigma
if being predicted.
Link of auxiliary parameter shape
if being predicted.
Link of auxiliary parameter nu
if being predicted.
Link of auxiliary parameter phi
if being predicted.
Link of auxiliary parameter kappa
if being predicted.
Link of auxiliary parameter beta
if being predicted.
Link of auxiliary parameter zi
if being predicted.
Link of auxiliary parameter hu
if being predicted.
Link of auxiliary parameter zoi
if being predicted.
Link of auxiliary parameter coi
if being predicted.
Link of auxiliary parameter disc
if being predicted.
Link of auxiliary parameter bs
if being predicted.
Link of auxiliary parameter ndt
if being predicted.
Link of auxiliary parameter bias
if being predicted.
Link of auxiliary parameter xi
if being predicted.
Link of auxiliary parameter alpha
if being predicted.
Link of auxiliary parameter quantile
if being predicted.
A character string indicating the type
of thresholds (i.e. intercepts) used in an ordinal model.
"flexible"
provides the standard unstructured thresholds and
"equidistant"
restricts the distance between
consecutive thresholds to the same value.
Family gaussian
with identity
link leads to linear regression.
Family student
with identity
link leads to
robust linear regression that is less influenced by outliers.
Family skew_normal
can handle skewed responses in linear regression.
Families poisson
, negbinomial
, and geometric
with log
link lead to regression models for count data.
Families binomial
and bernoulli
with logit
link leads to
logistic regression and family categorical
to multi-logistic regression
when there are more than two possible outcomes.
Families cumulative
, cratio
('continuation ratio'),
sratio
('stopping ratio'), and acat
('adjacent category')
leads to ordinal regression. Families Gamma
, weibull
,
exponential
, lognormal
, frechet
, and
inverse.gaussian
can be used (among others) for survival regression.
Families weibull
, frechet
, and gen_extreme_value
('generalized extreme value') allow for modeling extremes.
Family asym_laplace
allows for quantile regression when fixing
the auxiliary quantile
parameter to the quantile of interest.
Family exgaussian
('exponentially modified Gaussian') is especially
suited to model reaction times and the wiener
family provides
an implementation of the Wiener diffusion model. For this family,
the main formula predicts the drift parameter 'delta' and
all other parameters are modeled as auxiliary parameters
(see brmsformula
for details).
Families hurdle_poisson
, hurdle_negbinomial
,
hurdle_gamma
, hurdle_lognormal
, zero_inflated_poisson
,
zero_inflated_negbinomial
, zero_inflated_binomial
,
zero_inflated_beta
, and zero_one_inflated_beta
allow to estimate zero-inflated and hurdle models.
These models can be very helpful when there are many zeros in the data
(or ones in case of one-inflated models)
that cannot be explained by the primary distribution of the response.
Families hurdle_lognormal
and hurdle_gamma
are
especially useful, as traditional lognormal
or Gamma
models cannot be reasonably fitted for data containing zeros in the response.
In the following, we list all possible links for each family.
The families gaussian
, student
, skew_normal
,
exgaussian
, asym_laplace
, and gen_extreme_value
accept the links (as names) identity
, log
, and inverse
;
families poisson
, negbinomial
, geometric
,
zero_inflated_poisson
, zero_inflated_negbinomial
,
hurdle_poisson
, and hurdle_negbinomial
the links
log
, identity
, and sqrt
;
families binomial
, bernoulli
, Beta
,
zero_inflated_binomial
, zero_inflated_beta
,
and zero_one_inflated_beta
the links logit
,
probit
, probit_approx
, cloglog
,
cauchit
, and identity
;
families cumulative
, cratio
, sratio
,
and acat
the links logit
, probit
,
probit_approx
, cloglog
, and cauchit
;
family categorical
the link logit
;
families Gamma
, weibull
, exponential
,
frechet
, and hurdle_gamma
the links
log
, identity
, and inverse
;
families lognormal
and hurdle_lognormal
the links identity
and inverse
;
family inverse.gaussian
the links 1/mu^2
,
inverse
, identity
and log
;
family von_mises
the link tan_half
;
family wiener
the link identity
.
The first link mentioned for each family is the default.
Please note that when calling the Gamma
family function, the default link will be inverse
not log
.
Also, the probit_approx
link cannot be used when calling the
binomial
family function.
The current implementation of inverse.gaussian
models has some
convergence problems and requires carefully chosen prior distributions
to work efficiently. For this reason, we currently do not recommend
to use the inverse.gaussian
family, unless you really feel
that your data requires exactly this type of model.
# NOT RUN {
# create a family object
(fam1 <- student("log"))
# alternatively use the brmsfamily function
(fam2 <- brmsfamily("student", "log"))
# both leads to the same object
identical(fam1, fam2)
# }
Run the code above in your browser using DataLab