[R] aov() and anova() making faulty F-tests

Rolf Turner rolf.turner at xtra.co.nz
Wed Mar 6 03:56:46 CET 2013



Your subject line is patent nonsense.  The aov() and anova() functions
have been around for decades.  If they were doing something wrong
it would have been noticed long since.

You should realize that the fault is in your understanding, not in these
functions.

I cannot really follow your convoluted and messy code, but it would
appear that you want to consider "M" and "I" to be random effects.

Where have you informed aov() as to the presence of these
random effects?

     cheers,

         Rolf Turner

On 03/06/2013 03:36 PM, PatGauthier wrote:
> Dear useRs,
>
> I've just encountered a serious problem involving the F-test being carried
> out in aov() and anova(). In the provided example, aov() is not making the
> correct F-test for an hypothesis involving the expected mean square (EMS) of
> a factor divided by the EMS of another factor (i.e., instead of the error
> EMS).
>
> Here is the example:
>
>
>                    Expected Mean Square            df
> Mi                     σ2+18σ2M                              1
> Ij                  σ2+6σ2MI+12Ф(I)                      2
> MIij                   σ2+6σ2MI                              2
> ε(ijk)l                        σ2                                   30
>
> The clear test for Ij is EMS(I) / EMS(MI) -  F(2,2)
>
> However, observe the following example carried out in R,
>
> M <- rep(c("M1", "M2"), each = 18)
> I <- as.ordered(rep(rep(c(5,10,15), each = 6), 2))
> y <-
> c(44,39,48,40,43,41,27,20,25,21,28,22,35,30,29,34,31,38,12,7,6,11,7,12,15,10,12,17,11,13,22,15,27,22,21,19)
> dat <- data.frame(M, I, y)
> summary(aov(y~M*I, data = dat))
>                         Df    Sum Sq       Mean Sq         F value
> Pr(>F)
> m                     1     3136.0           3136.0            295.85      <
> 2e-16 ***
> i                        2      513.7              256.9              24.23
> 5.45e-07 ***
> m:i                   2      969.5              484.7              45.73
> 7.77e-10 ***
> Residuals   30       318.0                10.6
> ---
>
> In this example aov has taken the F-ratio of MS(I) / MS(ε) -  F(2,30) =
> 24.23 with F-crit = qf(0.95,2,3) = 9.55 -- significant
>
> However, as stated above,  the correct F-ratio is MS(I) / MS(MI) -  F(2,2) =
> 0.53 with F-crit = qf(0.95,2,2) = 19 -- non-significant
>
> Why is aov() miscalculating the F-ratio, and is there a way to fix this
> without prior knowledge of the appropriate test (e.g., EMS(I)/EMS(MI)?
>
> Thanks for your help,



More information about the R-help mailing list