Because I have been posting a lot of announcements lately, and because I don’t want people to start hating me for unending spam, I will announce two new packages in JuliaDynamics in this post: SignalDecomposition.jl and TimeseriesSurrogates.jl ! Both packages provide tools about timeseries analysis and have a very common API and are in 1.0.
SignalDecomposition.jl allows one to decompose an input signal/timeseries into basic components. This is used for example to de-seasonalize a signal, or to do noise-reduction. TimeseriesSurrogates.jl is a package that creates surrogates. These are new timeseries created from the input timeseries that preserve some properties in the original timeseries and are used in hypothesis testing. Have a look at the docs for a more detailed information on surrogate timeseries!
Both packages have similar API: a function surrogate(s, method) or decompose(s, method) that makes surrogates / decomposes s via multiple dispatch on the method.
@Balinus, I have actually done some extentions of SignalDecomposition.jl in my private code, because I use it for climate data. E.g. I made it work with date times better, and also dispatch on DimensionalArrays. Maybe you are interested to talk about this.
I also wanted to add a method based on Empirical Mode Decomposition, where a user specifies the first n modes to be taken as “trend” and the rest as residual. But I unfortunately didn’t find a codebase whose source code was explained enough in terms of what the keyword arguments mean. If anyone has a codebase that I can wrap or directly include in the repo I would appreciate it! The EMD method is broadly very useful.