I have recently been doing some basic Empirical Orthogonal Function (EOF) analysis of some oceanographic data and have found the literature to be rather confusing. Here I have collected a few notes on the subject, matlab code and useful references. The discussion is very basic and is not designed to be an in-depth discussion of doing EOF analysis. If you have any corrections to these notes, my contact information is here.

EOFs = principal component loading patterns or, at times, just principal componentsThere is also talk of covariance matrices and communalities. I will explain what these are later.

ECs = EOF time series, expansion coefficient time series, principal component time series, principal component scores, principal component amplitudes or, at times, just principal components

That is really all there is to it. The EOFs are really the columns of the EOFs matrix. I have included matlab code that performs step 3 above. See the references for a more detailed discussion.

- Put your data into a matrix so that the rows indicate temporal development and the columns are variables or spatial data points. The temporal relationship between rows is unimportant (ie. doesnt have to be uniform). Same for the spatial relationship between columns.
- Detrend the columns of the resulting matrix. Some EOF routines do this for you, but I prefer to do it separately.
- Use singular value decomposition (svd) to break up your data into 3 matrices:

Z = U * D * Vwhere U and V are orthonormal and D is diagonal. Then,^{t}

EOFs = V

ECs = U * D

covariance matrix = ECs^{t}* ECs / (n-1) = D^{2}/ (n-1)

communalities matrix = ECs * ECs^{t}

After finishing these calculations, you will probably want to reduce the EOFs and ECs to only those which explain a significant percentage of the overall variance by just selecting out those columns of the ECs and EOFs. You then may or may not wish to rotate the EOFs to increase the physical explainability of the resulting patterns. Finally, there are a number of useful ways to visualize the results of your analysis. I will not discuss visualization here. I will also not discuss EOF analysis of several fields.

I will only discuss a particularly common orthogonal rotation known as varimax. It seems to be the most popular and certainly has a logical explanation. It looks to reduce the variances of the projection of the data onto the rotated basis (for the EOFs, this projection is just the ECs), thereby putting the basis closer to the actual data and increasing interpretability.

I have included matlab code and references for doing varimax rotation. The code has extensive documentation that represents my best understanding of varimax rotation.

EOF.m

varimax.m

H. Bjornsson and S. A. Venegas. 1997. A Manual for EOF and SVD Analyses of Climatic Data, Feb. 1997, 52 pages. CCGCR Report No. 97-1.These references are more technical, but useful nonetheless (links might not function outside of U. of California):

Rudolph W. Preisendorfer and Curtis D. Mobley. 1988. Principal component analysis in meteorology and oceanography. Elsevier.

M.B. Richman. Rotation of principal components. 1986. Journal of Climatology, vol. 6, no. 3, pp. 293-335.

H. v. Storch and A. Navarra. 1999. Analysis of climate variability : applications of statistical techniques : proceedings of an autumn school organized by the Commission of the European Community on Elba from October 30 to November 6, 1993. Springer.

J.D. Horel. 1984. Complex principal component analysis: theory and examples. Journal of Climate and Applied Meteorology , vol. 23,no. 12 , pp. 1660-73 , Dec. 1984.

N.E. Huang. 2001. Review of empirical mode decomposition. pp. 71-80 , published as Proceedings of the SPIE - The International Society for Optical Engineering , vol. 4391.

I.T. Jolliffe and M.B. Richman. 1987. Rotation of principal components: some comments (with reply). Journal of Climatology, vol. 7, no. 5, pp. 507-20.

M.A. Merrifield and R.T. Guza. 1990. Detecting propagating signals with complex empirical orthogonal functions: a cautionary note. Journal of Physical Oceanography, vol. 20, no. 10 , pp. 1628-33, Oct. 1990.

Zwiers, F.W. 1999. The detection of climate change. In: Anthropogenic climate change, Edited by: von Storch, H.; Floser, G. Berlin, Germany: Springer-Verlag. p.161-206.