Compute an analysis of deviance table for one or more vector generalized linear model fits.
## S3 method for class 'vglm' anova(object, ..., type = c("II", "I", "III", 2, 1, 3), test = c("LRT", "none"), trydev = TRUE, silent = TRUE)
objects of class
character or numeric;
any one of the
(effectively three) choices given.
a character string,
(partially) matching one of
anova.vglm is intended to be similar to
so specifying a single object and
type = 1 gives a
sequential analysis of deviance table for that fit.
By analysis of deviance, it is meant loosely
that if the deviance of the model is not defined or implemented,
then twice the difference between the log-likelihoods of two
nested models remains asymptotically chi-squared distributed
with degrees of freedom equal to the difference in the number
of parameters of the two models.
Of course, the usual regularity conditions are assumed to hold.
For Type I,
the analysis of deviance table has
the reductions in the residual deviance
as each term of the formula is added in turn are given in as
the rows of a table, plus the residual deviances themselves.
Type I or sequential tests
are computationally the easiest of the three methods.
For this, the order of the terms is important, and the
each term is added sequentially from first to last.
Anova() function in car allows for testing
Type II and Type III (SAS jargon) hypothesis
tests, although the definitions used are not precisely
that of SAS.
As car notes,
Type I rarely test interesting hypotheses in unbalanced
designs. Type III enter each term last, keeping all
the other terms in the model.
Type II tests, according to SAS, add the term after all other terms have been added to the model except terms that contain the effect being tested; an effect is contained in another effect if it can be derived by deleting variables from the latter effect. Type II tests are currently the default.
anova.glm, but not as
Anova.glm() in car,
if more than one object is specified, then
the table has a row for the
residual degrees of freedom and deviance for each model.
For all but the first model, the change in degrees of freedom
and deviance is also given. (This only makes statistical sense
if the models are nested.) It is conventional to list the
models from smallest to largest, but this is up to the user.
It is necessary to have
type = 1 with more than one
objects are specified.
anova.glm for more details
The VGAM package now implements full likelihood models
only, therefore no dispersion parameters are estimated.
An object of class
"anova" inheriting from
Several VGAM family functions implement distributions
which do not satisfying the usual regularity conditions needed for
the LRT to work. No checking or warning is given for these.
As car says, be careful of Type III tests because they violate marginality. Type II tests (the default) do not have this problem.
It is possible for this function to
type = 2 or
anova(vglm(cans ~ myfactor, poissonff, data = boxcar))
myfactor is a factor.
The code was adapted
Anova.glm() in car
by T. W. Yee.
Hence the Type II and Type III tests do not
correspond precisely with the SAS definition.
Anova.glm() in car if car is installed,
# Example 1: a proportional odds model fitted to pneumo. set.seed(1) pneumo <- transform(pneumo, let = log(exposure.time), x3 = runif(8)) fit1 <- vglm(cbind(normal, mild, severe) ~ let , propodds, pneumo) fit2 <- vglm(cbind(normal, mild, severe) ~ let + x3, propodds, pneumo) fit3 <- vglm(cbind(normal, mild, severe) ~ let + x3, cumulative, pneumo) anova(fit1, fit2, fit3, type = 1) # Remember to specify 'type'!! anova(fit2) anova(fit2, type = "I") anova(fit2, type = "III") # Example 2: a proportional odds model fitted to backPain2. data("backPain2", package = "VGAM") summary(backPain2) fitlogit <- vglm(pain ~ x2 * x3 * x4, propodds, data = backPain2) coef(fitlogit) anova(fitlogit) anova(fitlogit, type = "I") anova(fitlogit, type = "III")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.