[R] Extracting variance components from a Manova
Charles Goodnight
charles.goodnight at uvm.edu
Mon Feb 25 18:20:55 CET 2008
I am trying to run a simple nested manova with two levels of nesting,
Sires, and Dams within Sires. The goal is to extract the among sires
covariance matrix and secondarily, the among Dams within Sires
covariance matrix. Both sires and dams are random effects. At present
there are four dependent variables, but that may change. This is part of
a larger bootstrapping project, so efficiency and the ability to
automate the extraction are worth considering. Because it is a bootstrap
computationally simpler approaches may be better, even if slightly
biased (as long as the bias is consistent)
Two other important points. (1) We will be comparing the sire/dam data
set to a similar data set that has only sires (dams have a single
offspring, so “dams” becomes residuals). (2) The data are mildly
unbalanced (one of the reasons for using a bootstrap approach). As a
result of the differences in the structure of the two data sets and the
unbalance using estimates of the variance components based on the sums
of squares from summary.manova()$SS is leading to an unacceptably large
bias. It is clear we need to use a better method (ReML?) to estimate the
covariance matrices!
The code we use for running the manova:
Y <- cbind(Pupal_Mass, Dev_Time, Dry_Weight, Rel_Fitness)
sire <- factor(Sire)
dam<- factor(Dam)
fit <- manova(Y ~ sire + dam:sire)
sireSS <- summary(fit)$SS$sire
etc.
the sire covariance matrix = (MS(sires) – MS(dams)/(offspring/sire)
which gives us the correct answer with balanced data, but of course not
with unbalanced data.
--
Charles Goodnight
Professor of Biology
University of Vermont
Burlington Vermont
802 656-8521
More information about the R-help
mailing list