Next: anovapred() Up: MacAnova Help File Previous: alltrue()   Contents


anova([Model] [,print:F or silent:T,fstats:T,pvals:T,coefs:F,\
   unbalanced:T, marginal:T])

Keywords: glm, anova
anova(Model) computes and prints an ANOVA table for the linear model in
the CHARACTER variable Model.

Examples (y a REAL vector, a and b factors, x a variate):
   anova("y = a")                    One-way ANOVA of y
   anova("y = a+b")                  Two-way ANOVA of y with no
   anova("y = x+a+b+a.b")            Two-way analysis of covariance of
                                     y with interaction and covariate x
   anova("{log10(y)} = {sqrt(x)}+a") One-way analysis of covariance of
                                     log10(y) with covariate sqrt(x)

All variables referred to in Model must be REAL vectors or factors and
have the same lengths.

See topic 'models' for more information on how to specify Model.

anova(Model,weights:Wts) does an analysis using weighted least squares.
Wts must be a REAL vector with no negative elements, with the same
length as the response vector.

When you omit Model (anova() or anova(,...)), the model used by the most
recent GLM command such as anova(), regress() or poisson() is used.

When the previous GLM command was regress(), no new computations are
done.  The ANOVA table is based on what was previously computed.

When there haven't been previous GLM commands, but CHARACTER variable
STRMODEL exists, anova() uses STRMODEL as Model.

Side effect variables created are RESIDUALS, HII, DF, SS, DEPVNAME,

When weights are specified, RESIDUALS = Response - Fitted and
WTDRESIDUALS = sqrt(Wts)*RESIDUALS is an additional side effect vector.
You should use WTDRESIDUALS rather than RESIDUALS in residual plots or
other diagnostic procedures.

Other keyword phrases that can be used with anova() are 'unbalanced:T',
'print:T', 'silent:T', 'fstats:T', 'pvals:T', 'coefs:F' and marginal:T'.
See topic 'glm_keys' for details.  See 'options' for information on
changing the default values of 'fstats' and 'pvals'.

No design with MISSING values, weights or non-factor variables is ever
considered to be balanced.  This is true, even when all the weights are
1 and the non-MISSING values make up a balanced design.

Otherwise MacAnova recognizes balance in only two cases:
  (1) The design is completely balanced, that is, all cells have the
  same number of cases.
  (2) The design is a balanced main effect design such as a Latin

In these cases, computations are done by a fast method which uses
marginal totals, quite analogous to the usual hand computations for a
balanced analysis of variance.  Otherwise, the analysis is done by
explicitly constructing the design matrix and doing modified Gram-
Schmidt orthogonalization.

You can force an unbalanced computation for balanced data by

For non-balanced designs or with 'unbalanced:T', unless 'marginal:T' is
an argument, sums of squares are computed sequentially and an advisory
message to that effect is printed.

This means that, in an unbalanced ANOVA, to get all the sums of squares
useful for testing hypotheses, you may need to run anova() several
times, with the terms in the model in different orders.  For example,
the A main effect sum of squares in a two way unbalanced ANOVA is the
sum of squares for 'a' from anova("y=b+a") and the B main effect sum of
squares is the sum of squares for 'b' from anova("y=a+b").

In many cases, use of 'marginal:T' can simplify things.  For example the
A and B sums of squares produced by anova("y=a+b",marginal:T) are the A
sums of squares from anova("y=b+a") and the B sums of squares from

When the previous GLM command was regress() the behavior of anova() with
Model missing is slightly modified -- it uses the results from the
previous computation instead of computing things afresh, even if the
variables in the previous model have been changed or deleted.
Specifically, any factors in the model are treated as variates (with 1
degree of freedom) and, if the previous GLM command was regress() with
weights specified by keyword 'weights' or 'wts', the entries in the
ANOVA table pertain to the weighted regression.

For example, even when a, b, and c are factors, the commands

  Cmd> regress("y=a+b+c",weights:w); anova()

print a summary of the weighted multiple regression, followed by an
weighted regression ANOVA table with 1 degree of freedom for each of a,
b and c.  This is different from anova("y=a+b+c") which computes an
unweighted factorial ANOVA with no interactions.

See also coefs(), cellstats(), contrast(), factor(), fastanova(),
modelinfo(), predtable(), regress(), secoefs(), xvariables().

Gary Oehlert 2003-01-15