I have $P$ correlation matrices $(n \times n)$ computed with $P$ sets of $(m \times n)$ data (observed) using the MATLAB function corrcoef.

  • How do I compare and analyze these $P$ correlation matrices with respect to each other?
  • What are the tests, methods and/or checkpoints?

One classical test to compare covariance or correlation matrices is Box's M test. In geometrical sense, it compares average volume of P vector bunches to the volume of their hybrid vector bunch. (Covariance or correlation matrix can be understood as matrix of scalar products therefore constituting a bunch of vectors.) Be aware that the significance level of the test is very sensitive to departures from distributional normality of initial data. I don't know if Matlab has it. Usually the test is computed as part of MANOVA or Discriminant analysis procedures.

Addendum. Departure from normality decreases value of significance level, so if your data are not normal you risk to falsely conclude that the matrices in population differ. If you want to rely on the test of significance the data should be reasonably normal. But you may take interest in the statistic value itself which tells about the degree of difference, or nonhomogeneity, among the matrices. Some programs performing the test print out log determinants for each of the matrices - for you to see which among P matrices are similar and which stand out.

  • $\begingroup$ [Be aware that the significance level of the test is very sensitive to departures from distributional normality of initial data ] So the data from which I am computing the correlation matrices (i.e my observations) should be normally distributed? $\endgroup$
    – armundle
    Aug 30 '11 at 20:24
  • $\begingroup$ @armundle see addendum please. $\endgroup$
    – ttnphns
    Aug 30 '11 at 20:50

You could perform multiple group structural equation modelling where each dataset represents one group. This would allow you to flexibly explore various constraints (e.g., constrain various correlations across the groups). You could also develop a model of the correlations and then constrain aspects of that model.

You could also check out the metaSEM package in R which is designed for fitting structural equation models on multiple correlation matrices. The author of the package also has several articles (e.g., Cheung, 2008, Cheung and Chan, 2005), where he discusses the models and their implementation.


  • Cheung, M.W.L. (2008). A model for integrating fixed-, random-, and mixed-effects meta-analyses into structural equation modeling. Psychological Methods, 13, 182-202. PDF
  • Cheung, M.W.L., & Chan, W. (2005). Meta-analytic structural equation modeling: A two-stage approach. Psychological Methods, 10, 40-64.PDF

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.