contr.isotonic {addreg}R Documentation

Contrast Matrix for Isotonic Covariate


Return something similar to a contrast matrix for a categorical covariate that we wish to be monotonically non-decreasing in a specified order.


contr.isotonic(n, perm, contrasts = TRUE, sparse = FALSE)

contr.opisotonic(n, perm, contrasts = TRUE, sparse = FALSE)



a vector of levels for a factor, or the number of levels.


a permutation of the levels of n (or of the numbers 1:n), which define the order in which the coefficients must be monotonically non-decreasing.


a logical indicating whether constrasts should be computed.


included for compatibility reasons. Has no effect.


contr.isotonic is used in creating the design matrix for categorical covariates with a specified order under a particular parameterisation. For Poisson and negative binomial models, this occurs if a categorical covariate is defined as monotonic; for binomial models, each parameterisation defines a permutation of the levels that must be monotonically increasing.

For overparameterised binomial models, the design matrix for categorical covariates must include isotonic-style dummy covariates for every possible permutation of the levels. This is the function of contr.opisotonic.

In the order specified by perm, the coefficient associated with each level is the sum of increments between the preceding levels. That is, the first level is defined as 0, the second as 0 + d_2, the third as 0 + d_2 + d_3, and so on. In fitting the model, these increments are constrained to be non-negative.

Note that these are not ‘contrasts’ as defined in the theory for linear models; rather this is used to define the contrasts attribute of each variable so that model.matrix produces the desired design matrix.


A matrix with n rows and k columns, with k=n-1 if contrasts is TRUE and k=n if contrasts is FALSE.


Mark W. Donoghoe

See Also

model.matrix, which uses contr.isotonic to create the design matrix.

contr.treatment, contrasts for their usual use in regression models.



# Show how contr.isotonic applies within model.matrix
x <- factor(round(runif(20,0,2)))
mf <- model.frame(~x)
contrasts(x) <- contr.isotonic(levels(x), levels(x))

[Package addreg version 3.0 Index]