VGAM (version 1.1-9)

add1.vglm: Add or Drop All Possible Single Terms to/from a Model


Compute all the single terms in the scope argument that can be added to or dropped from the model, fit those models and compute a table of the changes in fit.


# S3 method for vglm
add1(object, scope, test = c("none", "LRT"), k = 2, ...)
# S3 method for vglm
drop1(object, scope, test = c("none", "LRT"), k = 2, ...)


An object of class "anova" summarizing the differences in fit between the models.



a fitted vglm model object.

scope, k

See drop1.glm.


Same as drop1.glm but with fewer choices.


further arguments passed to or from other methods.


In general, the same warnings in add1.glm and drop1.glm apply here. Furthermore, these functions have not been rigorously tested for all models, so treat the results cautiously and please report any bugs.

Care is needed to check that the constraint matrices of added terms are correct. Also, if object is of the form vglm(..., constraints = list(x1 = cm1, x2 = cm2)) then add1.vglm may fail because the constraints argument needs to have the constaint matrices for all terms.


These functions are a direct adaptation of add1.glm and drop1.glm for vglm-class objects. For drop1 methods, a missing scope is taken to be all terms in the model. The hierarchy is respected when considering terms to be added or dropped: all main effects contained in a second-order interaction must remain, and so on. In a scope formula . means ‘what is already there’.

Compared to add1.glm and drop1.glm these functions are simpler, e.g., there is no Cp, F and Rao (score) tests, x and scale arguments. Most models do not have a deviance, however twice the log-likelihood differences are used to test the significance of terms.

The default output table gives AIC, defined as minus twice log likelihood plus \(2p\) where \(p\) is the rank of the model (the number of effective parameters). This is only defined up to an additive constant (like log-likelihoods).

See Also

step4vglm, vglm, extractAIC.vglm, trim.constraints, anova.vglm, backPain2, update.


Run this code
data("backPain2", package = "VGAM")
fit1 <- vglm(pain ~ x2 + x3 + x4, propodds, data = backPain2)
add1(fit1, scope = ~ x2 * x3 * x4, test = "LRT")
drop1(fit1, test = "LRT")
fit2 <- vglm(pain ~ x2 * x3 * x4, propodds, data = backPain2)

Run the code above in your browser using DataLab