[R] two way ANOVA with unequal sample sizes
John Fox
jfox at mcmaster.ca
Wed Oct 17 01:42:15 CEST 2001
Dear Julien,
At 09:33 PM 16/10/2001 +0200, julien claude wrote:
>Hi,
>
>I am trying a two way anova with unequal sample sizes but results are not
>as expected:
>
>I take the example from Applied Linear Statistical Models (Neter et al.
>pp889-897, 1996)
>
>growth rate gender bone development
>1.4 1 1
>2.4 1 1
>2.2 1 1
>2.4 1 2
>2.1 2 1
>1.7 2 1
>2.5 2 2
>1.8 2 2
>2 2 2
>0.7 3 1
>1.1 3 1
>0.5 3 2
>0.9 3 2
>1.3 3 2
You've apparently reversed the data columns for gender and bone development.
>expected results are
>
>source of variation SS df MS F
>gender 0.12 1 0.12 0.74
>bone development 4.1897 2 2.0949 12.89**
>interaction 0.0754 2 0.377 0.23
>Error 1.3 8 0.1625
>
># I use
>aov (growrate ~ gender * bonedevelopment)->m
>summary(m)
>
> Df Sum Sq Mean
> Sq F value Pr(>F)
>as.factor(gender) 2 4.3063
> 2.1531 13.2501
>0.002891 **
>as.factor(bonedevlopment) 1 0.0926
>0.0926 0.5697
>0.472022
>as.factor(gender:bonedevlopment) 2 0.0754 0.0377
> 0.2321 0.798034
>Residuals 8 1.3000
>0.1625
>
>#if I change the order of factors, results are different
>aov (growrate ~ bonedevelopment * gender)->m
>summary(m)
>
> Df Sum Sq Mean Sq F
> value
>Pr(>F)
>as.factor(bonedevlopment) 1 0.0029 0.0029 0.0176
>0.897785
>as.factor(gender) 2 4.3960 2.1980
> 13.5262 0.002713 **
>as.factor(gender:bonedevlopment) 2 0.0754 0.0377
> 0.2321 0.798034
>Residuals 8 1.3000 0.1625
>
>#In the both cases, results for main effects differ from those expected in
>Neter et al.
>However interaction and residuals are well estimated.
>Can anyone help, either I am wrong in the formula, or either is there an
>other problem? Is there a mean to conduct easily the test as in it is in
>Neter et al. ?
>The same problems occurs with anova(lm(....))?
The problem is that the analysis in Neter et al. uses what are sometimes
called "type III" sums of squares -- that is, testing each term in the
model 'after' all others (including main effects 'after' interactions to
which the main effects are marginal). Some would argue that this *never*
makes sense, but it *certainly* doesn't make sense if you use
"contr.treatment" to code contrasts for factors, which is the default in R.
To get the results in Neter, you can use contr.sum or contr.helmert with
lm, along with the Anova function in the car package:
> library(car)
>
> Anova(lm(growth.rate ~ gender * bone,
+ contrasts=list(gender='contr.sum', bone='contr.sum')),
+ type='III')
Anova Table (Type III tests)
Response: growth.rate
Sum Sq Df F value Pr(>F)
(Intercept) 34.680 1 213.4154 4.729e-07 ***
gender 0.120 1 0.7385 0.415160
bone 4.190 2 12.8914 0.003145 **
gender:bone 0.075 2 0.2321 0.798034
Residuals 1.300 8
---
Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1
>
> Anova(lm(growth.rate ~ gender * bone,
+ contrasts=list(gender='contr.helmert', bone='contr.helmert')),
+ type='III')
Anova Table (Type III tests)
Response: growth.rate
Sum Sq Df F value Pr(>F)
(Intercept) 34.680 1 213.4154 4.729e-07 ***
gender 0.120 1 0.7385 0.415160
bone 4.190 2 12.8914 0.003145 **
gender:bone 0.075 2 0.2321 0.798034
Residuals 1.300 8
---
Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1
>
You might think about whether you really prefer this analysis to one that
obeys marginality (producing what are sometimes called "type II" sums of
squares). The anova function in R computes so-called "sequential" (or "type
I") sums of squares which rarely correspond to hypotheses of interest.
How to calculate F-tests in unbalanced Anova models with interactions is a
subject that seems to produce a lot of heat, so you can expect conflicting
advice.
I hope that this is useful to you.
John
-----------------------------------------------------
John Fox
Department of Sociology
McMaster University
Hamilton, Ontario, Canada L8S 4M4
email: jfox at mcmaster.ca
phone: 905-525-9140x23604
web: www.socsci.mcmaster.ca/jfox
-----------------------------------------------------
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help 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-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list