Package AdvEMDpy: Algorithmic Variations of Empirical Mode Decomposition in Python
48 Pages Posted: 25 Oct 2021 Last revised: 19 Oct 2022
Date Written: September 29, 2022
This work presents a Python EMD package named AdvEMDpy that is both more flexible, andwhich generalises, existing EMD packages in Python, R, and MATLAB. It is aimed specificallyfor use by the insurance and financial risk communities, for applications such as return modelling, claims modelling, and life insurance applications with a particular focus on mortality modelling. AdvEMDpy both expands upon the EMD options and methods available, and improves their statistical robustness and efficiency, providing a robust, usable, and reliable toolbox. Unlike many EMD packages, AdvEMDpy allows customisation by the user, to ensure that a broader class of linear, non-linear, and non-stationary time series analyses can be performed. The intrinsic mode functions (IMFs) extracted using EMD contain complex multi-frequency structures which warrant maximum algorithmic customisation for effective analysis. A major contribution of this package is the intensive treatment of the EMD edge effect which is the most ubiquitous problem in EMD and time series analysis. Various EMD techniques, of varying intricacy from numerous works, have been developed, refined, and, for the first time, compiled in AdvEMDpy. In addition to the EMD edge effect, numerous preprocessing, post-processing, detrended fluctuation analysis (localised trend estimation) techniques, stopping criteria, spline methods, discrete-time Hilbert transforms (DTHT), knot point optimisations, and other algorithmic variations have been incorporated and presented to the users of AdvEMDpy. This paper and the supplementary materials provide several real-world actuarial applications of this package for the user’s benefit.
Keywords: Empirical Mode Decomposition (EMD), Statistical EMD (SEMD), Enhanced EMD (EEMD), Ensemble EMD, Hilbert transform, time series analysis, filtering, graduation, Winsorization, downsampling, splines, knot optimisation, Python, R, MATLAB
JEL Classification: C02, C14, C22, C32, C61, C63, C65, C88
Suggested Citation: Suggested Citation