aov                  package:stats                  R Documentation

_F_i_t _a_n _A_n_a_l_y_s_i_s _o_f _V_a_r_i_a_n_c_e _M_o_d_e_l

_D_e_s_c_r_i_p_t_i_o_n:

     Fit an analysis of variance model by a call to 'lm' for each
     stratum.

_U_s_a_g_e:

     aov(formula, data = NULL, projections = FALSE, qr = TRUE,
         contrasts = NULL, ...)

_A_r_g_u_m_e_n_t_s:

 formula: A formula specifying the model.

    data: A data frame in which the variables specified in the formula
          will be found. If missing, the variables are searched for in
          the standard way.

projections: Logical flag: should the projections be returned?

      qr: Logical flag: should the QR decomposition be returned?

contrasts: A list of contrasts to be used for some of the factors in
          the formula. These are not used for any 'Error' term, and
          supplying contrasts for factors only in the 'Error' term will
          give a warning.

     ...: Arguments to be passed to 'lm', such as 'subset' or
          'na.action'.

_D_e_t_a_i_l_s:

     This provides a wrapper to 'lm' for fitting linear models to
     balanced or unbalanced experimental designs.

     The main difference from 'lm' is in the way 'print', 'summary' and
     so on handle the fit: this is expressed in the traditional
     language of the analysis of variance rather than that of linear
     models.

     If the formula contains a single 'Error' term, this is used to
     specify error strata, and appropriate models are fitted within
     each error stratum.

     The formula can specify multiple responses.

     Weights can be specified by a 'weights' argument, but should not
     be used with an 'Error' term, and are incompletely supported
     (e.g., not by 'model.tables').

_V_a_l_u_e:

     An object of class 'c("aov", "lm")' or for multiple responses of
     class 'c("maov", "aov", "mlm", "lm")' or for multiple error strata
     of class '"aovlist"'.  There are 'print' and 'summary' methods
     available for these.

_N_o_t_e:

     'aov' is designed for balanced designs, and the results can be
     hard to interpret without balance: beware that missing values in
     the response(s) will likely lose the balance.  If there are two or
     more error strata, the methods used are statistically inefficient
     without balance, and it may be better to use 'lme'.

     Balance can be checked with the 'replications' function.

     The default 'contrasts' in R are not orthogonal contrasts, and
     'aov' and its helper functions will work better with such
     contrasts: see the examples for how to select these.

_A_u_t_h_o_r(_s):

     The design was inspired by the S function of the same name
     described in Chambers _et al._ (1992).

_R_e_f_e_r_e_n_c_e_s:

     Chambers, J. M., Freeny, A and Heiberger, R. M. (1992) _Analysis
     of variance; designed experiments._ Chapter 5 of _Statistical
     Models in S_ eds J. M. Chambers and T. J. Hastie, Wadsworth &
     Brooks/Cole.

_S_e_e _A_l_s_o:

     'lm', 'summary.aov', 'replications', 'alias', 'proj',
     'model.tables', 'TukeyHSD'

_E_x_a_m_p_l_e_s:

     ## From Venables and Ripley (2002) p.165.
     N <- c(0,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0)
     P <- c(1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0)
     K <- c(1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,0)
     yield <- c(49.5,62.8,46.8,57.0,59.8,58.5,55.5,56.0,62.8,55.8,69.5,55.0,
                62.0,48.8,45.5,44.2,52.0,51.5,49.8,48.8,57.2,59.0,53.2,56.0)
     npk <- data.frame(block=gl(6,4), N=factor(N), P=factor(P),
                       K=factor(K), yield=yield)

     ## Set orthogonal contrasts.
     op <- options(contrasts=c("contr.helmert", "contr.poly"))
     ( npk.aov <- aov(yield ~ block + N*P*K, npk) )
     summary(npk.aov)
     coefficients(npk.aov)

     ## to show the effects of re-ordering terms contrast the two fits
     aov(yield ~ block + N * P + K, npk)
     aov(terms(yield ~ block + N * P + K, keep.order=TRUE), npk)

     ## as a test, not particularly sensible statistically
     npk.aovE <- aov(yield ~  N*P*K + Error(block), npk)
     npk.aovE
     summary(npk.aovE)
     options(op)# reset to previous

