Empirical Orthogonal Functions (EOF) homework.

Background reading: Hsieh book chapter 2


1. First, a question about the sense of EOF's:

You have some data(x,t) with space-time structure: 144 space bins (in this case, just longitude), by 240 time bins (months).
You want to decompose it into a set of orthogonal terms that add together to give the total.
Since they are orthogonal, each term represents some variance: cross terms disappear when you average the square of the sum.
If you keep enough terms you will get back all the variance (and more importantly, you can reconstruct the data in all its detail).

In the case of EOF (also known as Principal Components (PC)) analysis, you express your data as:
 {EOF}_1(bold x) {PC}_1(t) + {EOF}_2(bold x) {PC}_2(t) + {EOF}_3(bold x) {PC}_3(t) + ... = mydata(x,t)
{EOF}_1(bold x) {PC}_1(t) + {EOF}_2(bold x) {PC}_2(t) + {EOF}_3(bold x) {PC}_3(t) + ... = mydata(x,t)

  1. How many values (numbers) are in your input data array? this is longitude vs. time, so 144 x 240
  2. How many values (numbers) are needed to build each term on the left? EOF: 144 ; PC's: 240
  3. If 5 EOFs capture most of the data's variance, how much smaller (in the above sense) is the EOFxPC representation compared to the full data set? (144*240) - 5(144+240)


2. Read in your field1: SLP (let's call it x again). Use the same data from HW3 data sourcehere.


Perform and display an EOF analysis of your first field.
  • IDL: here is an example code HW5_EOF_BEM.pro
  • IDL results are at the bottom of the page

  • Matlab: x should be (x,t) or (240,144), but in the file it is (144 x 240), so you need to transpose it.
  • Then call [COEFF, SCORE, latent, tsquare] = princomp(x);
    • COEFF is a 144 x 144 array of coefficients ("projection" or "loadings" or "weights" in the x domain)
    • SCORE is a 240 x 144 array of the PC(240) associated with each EOF(144).

ac_hw5eof1.jpg

ac_hw5eof2.jpg

ac_hw5eof3.jpg
ac_hw5eof4.jpg
ac_hw5eof5.jpg
ac_hw5eof6.jpg
ac_hw5eof7.jpg