I have a dataset of daily averaged sea surface temperatures for an entire year. I wish to use an empirical orthogonal function to find the dominant patterns within the data.

Consider that my detrended data is 'F', I can find the first principal components and the spatial patterns of the first and second EOF with:

[C,lambda,eof_b,~] = svds(F1,2);
pc_b = C*lambda; % principal components
F2 = (eof_b*pc_b')'; % reconstruct
pc1 = pc_b(:,1); % first principal component
eof1 = eof_b(:,1); % first eof

which I can then use to plot either a time series of the first principal component:


or a contour plot of the spatial patterns that emerged:

pcolor(eof1); shading flat;

The issue I have is that the units associated with these plots have little meaning. Thus, I was hoping it would be possible to convert the units to temperature, which would show how much the spatial patterns of EOF1 influnce the data.

Someone mentioned that one can achieve this by multiplying the first EOF with the standard deviation of the first principal component, but I can't find any mention of this in the literature. Is this correct, or is there another method of achieving this?


In order to give physical meaning to your plots of the EOFs, you need to renormalize these eigenfunctions (which are traditionally normalized in some arbitrary way, e.g., to have unit modulus), in some meaningful way. One approach to doing so is to multiply eigenmodes with unit modulus by the square root of the associated eigenvalue. This way you obtain a function that corresponds to the rms value of the corresponding mode, and thus has physical meaning.

P.S.: Since the standard deviation of the first principal component is in fact equal to the square root of its eigenvalue, the instructions you have found are equivalent to mine.


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.