# How to compare two or more correlation matrices?

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.

-
[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? –  armundle Aug 30 '11 at 20:24
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.