ripley@stats.ox.ac.uk
2000-Aug-01 09:02 UTC
[Rd] anova() on three or more objects behaves inconsistently (PR#621)
anova() on three or more objects behaves inconsistently in R. In R anovalist.lm does a sequential ANOVA using pairwise F tests, ignoring all the other objects, so the larger of the two models provides the denominator. In S anova.lmlist uses the denominator from the largest model (smallest residual df) in the set, as does anova.glmlist in both. I suggest that R's anovalist.lm is wrong (that might be a matter of opinion and can certainly be argued), but anovalist.lm and anova.glmlist should agree. ?anova says in R When given a sequence of objects, `anova' tests the models against one another in the order specified. and in S When two or more objects are used in the call, a similar table is produced showing the effects of the pairwise differences between the models, considered sequentially from first to last. neither of which are clear enough to disambiguate this. Example: library(MASS) data(quine) quine.hi <- aov(log(Days + 2.5) ~ .^4, quine) quine.nxt <- update(quine.hi, . ~ . - Eth:Sex:Age:Lrn) quine.lo <- aov(log(Days+2.5) ~ 1, quine) anova(quine.hi, quine.nxt, quine.lo) quine.hi1 <- glm(log(Days + 2.5) ~ .^4, data=quine) quine.nxt1 <- update(quine.hi1, . ~ . - Eth:Sex:Age:Lrn) quine.lo1 <- glm(log(Days+2.5) ~ 1, data=quine) anova(quine.hi1, quine.nxt1, quine.lo1, test="F") S: Resid. Df RSS Test Df Sum of Sq F Value Pr(F) 1 118 63.3104 2 120 64.0990 -Eth:Sex:Age:Lrn -2 -0.78865 0.734957 0.4817083 3 145 106.7871 -25 -42.68810 3.182542 0.0000131 ... Resid. Df Resid. Dev Test Df Deviance F Value Pr(F) 1 118 63.3104 2 120 64.0990 -Eth:Sex:Age:Lrn -2 -0.78865 0.734957 0.4817083 3 145 106.7871 -25 -42.68810 3.182542 0.0000131 R: Analysis of Variance Table Model 1: log(Days + 2.5) ~ Eth + Sex + Age + Lrn + Eth:Sex + Eth:Age + Model 2: log(Days + 2.5) ~ Eth + Sex + Age + Lrn + Eth:Sex + Eth:Age + Model 3: log(Days + 2.5) ~ 1 Res.Df Res.Sum Sq Df Sum Sq F value Pr(>F) 1 118 63.310 2 120 64.099 -2 -0.789 0.7350 0.4817 3 145 106.787 -25 -42.688 3.1967 1.148e-05 [The F value and p value are different here.] ... Resid. Df Resid. Dev Df Deviance F Pr(>F) 1 118 63.310 2 120 64.099 -2 -0.789 0.735 0.4817 3 145 106.787 -25 -42.688 3.183 1.306e-05 As of the current patched version of R anova.glmlist is consistent when reversing the order of the objects. Also, the labelling is inconsistent, and for both is not very helpful:> anova(quine.hi1, quine.nxt1, quine.lo1)Analysis of Deviance Table Response: log(Days + 2.5) Resid. Df c(\"Eth + Sex + Age + Lrn + Eth:Sex + Eth:Age + Eth:Lrn + Sex:Age + \", 118 c(\"Eth + Sex + Age + Lrn + Eth:Sex + Eth:Age + Eth:Lrn + Sex:Age + \", 120 1 145 Resid. Dev c(\"Eth + Sex + Age + Lrn + Eth:Sex + Eth:Age + Eth:Lrn + Sex:Age + \", 63.310 c(\"Eth + Sex + Age + Lrn + Eth:Sex + Eth:Age + Eth:Lrn + Sex:Age + \", 64.099 1 106.787 Df c(\"Eth + Sex + Age + Lrn + Eth:Sex + Eth:Age + Eth:Lrn + Sex:Age + \", c(\"Eth + Sex + Age + Lrn + Eth:Sex + Eth:Age + Eth:Lrn + Sex:Age + \", -2 1 -25 Deviance c(\"Eth + Sex + Age + Lrn + Eth:Sex + Eth:Age + Eth:Lrn + Sex:Age + \", c(\"Eth + Sex + Age + Lrn + Eth:Sex + Eth:Age + Eth:Lrn + Sex:Age + \", -0.789 1 -42.68 which gives problems later as the row names are not unique. --please do not edit the information below-- Version: platform = sparc-sun-solaris2.6 arch = sparc os = solaris2.6 system = sparc, solaris2.6 status = Patched major = 1 minor = 1.0 year = 2000 month = July day = 28 language = R Search Path: .GlobalEnv, package:MASS, Autoloads, package:base -- Brian D. Ripley, ripley@stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272860 (secr) Oxford OX1 3TG, UK Fax: +44 1865 272595 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._