eliocamp / metR

Tools for Easier Analysis of Meteorological Fields
https://eliocamp.github.io/metR/
139 stars 22 forks source link

ImputeEOF temporal filter #155

Closed claysa closed 9 months ago

claysa commented 2 years ago

Hi! Awesome package, I've been playing around with ImputeEOF and I'm wondering if there are any plans to add the temporal filter described in Aida Alvera-Azcarate's 2009 paper: https://www.researchgate.net/publication/40892450_Enhancing_temporal_correlations_in_EOF_expansions_for_the_reconstruction_of_missing_data_using_DINEOF

I've compared the results of ImputeEOF with the results from the DINEOF program using the temporal filter in a large region in the Northwest Atlantic, and the filter gives huge improvements. The DINEOF program takes forever to run in comparison to ImputeEOF, I'm not sure yet if it's the extra temporal filter or the settings I'm using, but it would be interesting to see how well ImputeEOF would do with the filter in place.

-Steph

eliocamp commented 2 years ago

Glancing at the paper it seems like the filtering process is, in principle, independent of the DINEOF algorithm. You need to filter your input data using equations 6-8 and then use that to interpolate, if I'm not misreading. The paper does state that they apply the filter to the XtX matrix, but my implementation computes EOFs directly from the data using SVD instead of from the eigenvalues of the XtX matrix (because it's much faster).