Skip to content

Recommendation of decomposition method for non-linear, quasi-stationnary 3D dataset #250

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
1 task done
vdevauxchupin opened this issue May 7, 2025 · 1 comment
Open
1 task done
Labels
documentation Improvements or additions to documentation

Comments

@vdevauxchupin
Copy link

vdevauxchupin commented May 7, 2025

Hello,

Context
I have a 3D dataset (time, lat, lon, only 1 variable) that has non-linear patterns (in time and space), quasi-stationnary in time. This dataset is made of glacier surface velocities (always positive).

Request
I am looking for the most appropriate PCA/EOF-based technique, reproducible, that would allow me to analyze the variance modes of my dataset given its non-linearity. It can be assumed stationary, or non-stationary. I have tried REOF, EOF, and Complex-EOF, but I wanted to know if another method would be more appropriate ?

Suggestion
Other than the xeofs paper, is there a guide that would help choosing the most appropriate method based on dataset characteristics ? (linearity, stationarity, geophysical, etc...).

Thank you !

Declaration

  • I have consulted the documentation but could not find a solution.

Desktop (please complete the following information):

  • OS: [Ubuntu]
  • xeofs version [e.g. 3.0.4]

Additional context
I was initially working with ROCK-PCA method, but the Python code (translated from Matlab) does not reproduce the Matlab results from the demo, and the method is not maintained anymore. I contacted the authors to no avail.

@vdevauxchupin vdevauxchupin added the documentation Improvements or additions to documentation label May 7, 2025
@vdevauxchupin vdevauxchupin changed the title Recommendation for decomposition of non-linear, quasi-stationnary 3D dataset Recommendation of decomposition method for non-linear, quasi-stationnary 3D dataset May 7, 2025
@nicrie
Copy link
Contributor

nicrie commented May 12, 2025

Hey, great question, it actually reminds me of your earlier suggestion about putting together a guideline paper on which methods are best suited for different situations. Unfortunately, I don’t have a solid answer for this one right now, and I likely won’t have the time in the near future to expand the documentation enough to address it properly.

That said, here are a few quick pointers that might help, especially for cases involving non-linearity and quasi-stationarity. Besides the kernel-based ROCK-PCA (which honestly sounds like a great fit), you might want to look into neural network–based methods like the non-linear Hilbert PCA proposed by Rattan & Hsieh — method paper, application. It's a bit under the radar, probably because neural nets weren’t mainstream in the early 2000s, but it's definitely doable now with tools like PyTorch.

Just a note: Hilbert-based methods assume the signals are roughly narrow-band. If you're dealing with broader-band signals, Dynamic Mode Decomposition (DMD) might be more appropriate. I recently came across a variant called mrCOST at EGU, could be worth a look. There’s also a Python implementation in PyDMD.

Lastly, have you explored Koopman operator-based spectral decomposition? Might be relevant too (see #245).

Sadly, none of these are currently implemented in xeofs, but hopefully, this gives you a few directions to explore!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

2 participants