> -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of Coghlan, Avril > Sent: 25 August 2011 16:02 > To: r-help@r-project.org > Cc: Coghlan, Avril > Subject: [R] within-groups variance and between-groups variance > > Hello, > > I have been looking for functions for calculating the > within-groups variance and between-groups variance, for the > case where you have several numerical variables describing > samples from a number of groups.
There doesn't seem to be a function in the core distribution for estimating variance components from linear model anova. If I want to do this from a balanced nested design I usually do something like a <- anova(lm(Sepal.Length~Species, data=iris)) a s2.within<-a[2,3] s2.between <- (a[1,3]-a[2,3])/( (1+a[1,1]+a[2,1])/(a[1,1]+1)) This is just the usual balanced one-way ANOVA estimate of variance components from the expected mean squares, with the within-group replicate number calculated from the degrees of freedom. However, you can very easily, and more generally, use lme to obtain the REML estimates,: library(nlme) iris.lme <- lme(Sepal.Length~1, random=~1|Species, data=iris) VarCorr(iris.lme) In this instance, because of the model specification the (Intercept) term gives you the between-species component of variance, and the residual term gives the within-species term. For this particular example, too, the REML estimates are identical to the linear model version above to six or so places. S Ellison LGC ******************************************************************* This email and any attachments are confidential. Any use...{{dropped:8}} ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.