\HeaderA{anova.gam}{Hypothesis tests related to  GAM fits}{anova.gam}
\aliasA{print.anova.gam}{anova.gam}{print.anova.gam}
\keyword{models}{anova.gam}
\keyword{smooth}{anova.gam}
\keyword{regression}{anova.gam}
\begin{Description}\relax
Performs hypothesis tests relating to one or more fitted
\code{gam} objects. For a single fitted \code{gam} object, Wald tests of
the significance of each parametric and smooth term are performed. Otherwise
the fitted models are compared using an analysis of deviance table. The tests
are usually approximate, unless the models are un-penalized.
\end{Description}
\begin{Usage}
\begin{verbatim}
anova.gam(object, ..., dispersion = NULL, test = NULL)
print.anova.gam(x,...)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{object,...}] fitted model objects of class \code{gam} as produced by \code{gam()}.
\item[\code{x}] an \code{anova.gam} object produced by a single model call to \code{anova.gam()}.
\item[\code{dispersion}] a value for the dispersion parameter: not normally used.
\item[\code{test}] what sort of test to perform for a multi-model call. One of
\code{"Chisq"}, \code{"F"} or \code{"Cp"}. 
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
If more than one fitted model is provided than \code{anova.glm} is
used. If only one model is provided then the significance of each model term
is assessed using Wald tests: see \code{\LinkA{summary.gam}{summary.gam}} for details of the
actual computations. In the latter case \code{print.anova.gam} is used as the
printing method.

P-values are usually reliable if the smoothing parameters are known, or
the model is unpenalized. If smoothing parameters have been estimated then the
p-values are typically somewhat too low. i.e. terms that appear `not
significant' really are not, while terms that are significant, may in fact be
non-significant if the p-value is close to whatever significance level you
are choosing to operate at. This occurs because the uncertainty associated
with the smoothing parameters is neglected in the calculations of the
distributions under the null, which tends to lead to underdispersion in these
distributions, and in turn to p-value estimates that are too low. (In
simulations where the null is correct, I have seen p-values that are as low as half of what they should
be.)
\end{Details}
\begin{Value}
In the multi-model case \code{anova.gam} produces output identical to
\code{\LinkA{anova.glm}{anova.glm}}, which it in fact uses.

In the single model case an object of class \code{anova.gam} is produced,
which is in fact an object returned from \code{\LinkA{summary.gam}{summary.gam}}.

\code{print.anova.gam} simply produces tabulated output.
\end{Value}
\begin{Section}{WARNING}
P-values may be under-estimates, as a result of ignoring
smoothing parameter uncertainty.
\end{Section}
\begin{Author}\relax
Simon N. Wood \email{simon.wood@r-project.org}
\end{Author}
\begin{SeeAlso}\relax
\code{\LinkA{gam}{gam}}, \code{\LinkA{predict.gam}{predict.gam}},
\code{\LinkA{gam.check}{gam.check}}, \code{\LinkA{summary.gam}{summary.gam}}
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
library(mgcv)
set.seed(0)
n<-200
sig<-2
x0 <- rep(1:4,50)
x1 <- runif(n, 0, 1)
x2 <- runif(n, 0, 1)
x3 <- runif(n, 0, 1)
y <- 2 * x0
y <- y + exp(2 * x1)
y <- y + 0.2 * x2^11 * (10 * (1 - x2))^6 + 10 * (10 * x2)^3 * (1 - x2)^10
e <- rnorm(n, 0, sig)
y <- y + e
x0<-as.factor(x0)
b<-gam(y~x0+s(x1)+s(x2)+s(x3))
anova(b)
b1<-gam(y~x0+s(x1)+s(x2))
anova(b,b1,test="F")
\end{ExampleCode}
\end{Examples}

