mpr: Fitting a Multi-Parameter Regression (MPR) model.

Description Usage Arguments Details Value Author(s) See Also Examples


Fits a Multi-Parameter Regression (MPR) model using a Newton-type algorithm via the nlm function.


mpr(formula, data, family = "Weibull", init, iterlim = 1000, ...)



a two-sided formula object with the response on the left hand side of the ~ operator and a list of one-sided formula objects on the right hand side (one for each regression component in the mpr model). The response must be a right-censored survival object as returned by the Surv function. See “Details” for more information on the struture of the formula within the mpr function as it differs from standard regression models.


an optional data.frame containing the variables in the model. If missing, the variables are taken from the environment from which mpr is called.


the name of the parametric distribution to be used in the model. See distributions for the list of distributions currently available.


an optional vector of initial values for the optimisation routine. If missing, default values are used. One may also set init="random" to randomly generate initial values.


a positive integer specifying the maximum number of iterations to be performed before the optimisation procedure is terminated. This is supplied to nlm.


additional arguments to be passed to nlm.


Multi-Parameter Regression (MPR) models are generated by allowing multiple distributional parameters to depend on covariates, for example, both the scale and shape parameters. This is in contrast to the more typical approach where covariates enter a model only through one distributional parameter. As these standard models have a single regression component, we may refer to them as Single Parameter Regression (SPR) models and, clearly, they are special cases of MPR models. The parameter through which covariates enter such SPR models may be referred to as the “interest” parameter since it generally has some specific subject-matter importance. However, this standard approach neglects other parameters which may also be important in describing the phenomenon at hand. The MPR approach generalises the standard SPR approach by viewing all distributional parameters as interest parameters in which covariate effects can be investigated.

In the context of survival analysis (currently the focus of the mpr package), the Weibull model is one of the most popular parametric models. Its hazard function is given by

h(t) = λ γ t^(γ - 1)

where λ > 0, the scale parameter, controls the overall magnitude of h(t) and γ > 0, the shape parameter, controls its time evolution. In the standard SPR Weibull model, λ depends on covariates via log λ = x' β leading to a proportional hazards (PH) model. The MPR model generalises this by allowing both parameters to depend on covariates as follows

log λ = x' β

log γ = z' α

where x and z are the scale and shape covariate vectors (which may or may not contain covariates in common) and β and α are the corresponding regression coefficients.

Note that the log-link is used above to ensure positivity of the parameters. More generally, we may have

g1(λ) = x' β

g2(γ) = z' α

where g1(.) and g2(.) are appropriate link functions. The mpr function does not allow the user to alter these link functions but, rather, uses the following default link functions: log-link (for parameters which must be positive) and identity-link (for parameters which are unconstrained). Although the two-parameter Weibull distribution is discussed here (due to its popularity), other distributions may have additional shape parameters, for example,

g3(ρ) = w' τ

where w and τ are the vectors of covariates and regression coefficients for this additional shape component. See distributions for further details on the distributions currently available.

The struture of the formula within the mpr function is, for example, Surv(time, status) ~ list(~ x1 + x2, ~ x1) which clearly generalises the typical formula used in standard models (i.e., those with only one regression component) in the sense that the right hand side is a list of one-sided formula objects. Note the requirement that the ~ operator precedes each element within the list. Specifically, the example shown here represents the case where the covariates x1 and x2 appear in the first regression component, λ, and the covariate x2 appears in the second regression component, γ. If there was a third regression component, ρ, then there would be an additional component in the list, for example, Surv(time, status) ~ list(~ x1 + x2, ~ x1, ~ x1). The mpr function also accepts more typical two-sided formula objects, such as Surv(time, status) ~ x1 + x2, which imply that the terms on the right hand side appear in each of the regression components.


mpr returns an object of class “mpr”.

The function summary (i.e., summary.mpr) can be used to obtain and print a summary of the results. The the generic accessor function coefficients extracts the list of regression coefficient vectors. One can also apply predict (i.e., predict.mpr) to predict various quantites from the fitted mpr model. A stepwise variable selection procedure has been implemented for mpr models - see stepmpr.

An object of class mpr is a list containing the following components:


a data.frame containing useful information about the fitted model with the following headings:


the chosen distribution.


number of estimated parameters in the fitted model.


value of the log-likelihood.


value of the AIC (Akaike Information Criterion).


value of the BIC (Bayesian Information Criterion).


an integer indicating why the Newton optimisation procedure terminated (for more details on this stop-code see nlm) where, in particular, “1” means “relative gradient is close to zero”.


a list whose elements are named vectors of coefficients (one vector per regression component).


the variance-covariance matrix for the estimates.


the values of the (negative) score functions from nlm.


the number of regression components in the model, i.e., the number of distributional parameters in the underlying distribution.


the formula supplied.


a record of the names of all variables (i.e., covariates) used in fitting.


a record of the levels of any factors (i.e., categorical variables) used in fitting.


the matched call.


Kevin Burke.

See Also

distributions, summary.mpr, predict.mpr, stepmpr.


# Veterans' administration lung cancer data
data(veteran, package="survival")

# treatment variable, "trt", in scale (lambda) and shape (gamma)
# components of a Weibull model
mpr(Surv(time, status) ~ list(~ trt, ~ trt), data=veteran, family="Weibull")

# same as first model
mpr(Surv(time, status) ~ trt, data=veteran, family="Weibull")

# now with "celltype" also appearing in the scale
mpr(Surv(time, status) ~ list(~ trt + celltype, ~ trt), data=veteran,

# trt in scale only (this is a PH Weibull model)
mpr(Surv(time, status) ~ list(~ trt, ~ 1), data=veteran, family="Weibull")

# trt in all three components (scale and two shape parameters) of a Burr model
mpr(Surv(time, status) ~ list(~ trt, ~ trt, ~ trt), data=veteran,

# use of summary
mod1 <- mpr(Surv(time, status) ~ list(~ trt, ~ trt), data=veteran)

Search within the mpr package
Search all R packages, documentation and source code

Questions? Problems? Suggestions? or email at

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.