[R] Efficient computation of average covariance matrix over a list

Moshe Olshansky m_olshansky at yahoo.com
Tue Dec 4 01:34:48 CET 2007


I believe that computing covariance matrices takes
much more time than computing their average and so it
does not matter how you do this, but one possibility
is:

z<- lcov[[1]]*0
y <- sapply(lcov,function(x) {z<<-z+x;0;})
y <- y/length(lcov)

--- Rick DeShon <deshon at msu.edu> wrote:

> Hi All.
> 
> I would like to compute a separate covariance matrix
> for a set of
> variables for each of the levels of a factor and
> then compute the
> average covariance matrix over the factor levels.  I
> can loop through
> this computation but I need to perform the
> calculation for a large
> number of levels and am looking for something more
> elegant.  To be
> concrete....
> 
> u    <- 3
> n    <- 10
> 
> x    <- rnorm((id*u))
> y    <- rnorm((id*u))
> z    <- rnorm((id*u))
> id   <- gl(u,n)
> 
> df   <- data.frame(id,x,y,z)
> df.s <- split(xxx,id)
> 
> lcov <- lapply(df.s,cov)
> lcov
> 
> What's an efficient way to compute the average
> covariance matrix over
> the list members in "lcov"?
> 
> Thanks in advance,
> 
> Rick DeShon
> 
> ______________________________________________
> R-help at 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.
>



More information about the R-help mailing list