https://github.com/helske/rlibeemd
Ensemble Empirical Mode Decomposition (EEMD) and Its Complete Variant (CEEMDAN)
Science Score: 23.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
○codemeta.json file
-
○.zenodo.json file
-
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org -
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.6%) to scientific vocabulary
Keywords
Repository
Ensemble Empirical Mode Decomposition (EEMD) and Its Complete Variant (CEEMDAN)
Statistics
- Stars: 39
- Watchers: 6
- Forks: 13
- Open Issues: 7
- Releases: 2
Topics
Metadata Files
README.md
Rlibeemd
An R interface for libeemd C library for ensemble empirical mode decomposition (EEMD) and its complete variant (CEEMDAN). These methods decompose possibly nonlinear and/or nonstationary time series data into a finite amount of components (called IMFs, insintric mode functions) separated by instantaneous frequencies. This decomposition provides a powerful method to look into the different processes behind a given time series, and provides a way to separate short time-scale events from a general trend.
If you use Rlibeemd/libeemd for scientific work please cite
Luukko, P.J.J., Helske, J., Räsänen, E., Comput. Stat. *31*, 545 (2016) (also on arXiv).
This article also describes in detail what libeemd actually computes.
You should definitely read it if you are unsure about what EMD, EEMD and CEEMDAN are.
OpenMP parallel computing support
Current CRAN policies do not allow the use of SHLIB_OPENMP_CFLAGS combined
with linking with C++. Therefore the CRAN version does not use OpenMP at all
anymore (OpenMP flags have been removed from Makevars), but the the version
on GitHub version does. So if you want to use parallel version of the Rlibeemd, please install the package via
install.packages('Rlibeemd', repos = 'https://helske.r-universe.dev')
Example
Here a CEEMDAN decomposition is performed for the UK gas consumption series (length n = 108).
By default, ceemdan extracts [log_2(n)] components, so here we get five IMFs and the residual.
{r, fig.height = 4, fig.width = 8}
library("Rlibeemd")
data(UKgas, package = "datasets")
imfs <- ceemdan(UKgas, ensemble_size = 1000)
plot(imfs, main = "Five IMFs and residual extracted by CEEMDAN algorithm")

The residual components shows smooth trend whereas the first IMF contains clear multiplicative trend. The remaining IMFs are bit more complex, and one could argue that they are partly seasonal, trend or just some irregularity i.e. noise.
Let us compare the decomposition with basic structural time series model fit from StructTS (for smoothing of more complex state space models, one could use KFAS)
{r, fig.height = 4, fig.width = 8}
bsm <- tsSmooth(StructTS(UKgas))
plot(bsm[, c(1, 3)], main = "Local linear trend and seasonal components by StructTS")

StructTS decomposes the data for three components, where one of the components is (possibly time varying) slope, which has no direct effect to overall signal (it is the slope of the level component).
{r, fig.height=4, fig.width=8}
ts.plot(cbind(UKgas, imfs[, ncol(imfs)], rowSums(imfs[, 5:6]), bsm[,"level"]), col = 1:4,
main = "Quarterly UK gas consumption", ylab = "Million therms")
legend("topleft", c("Observations", "Residual", "Last IMF + residual", "Trend from BSM"),
col = 1:4, lty = 1)

The IMF_5 + residual is quite close to the trend obtained by structural time series model of StructTS.
Owner
- Name: Jouni Helske
- Login: helske
- Kind: user
- Location: Finland
- Company: University of Jyväskylä
- Website: https://jounihelske.netlify.app
- Twitter: jouni_helske
- Repositories: 48
- Profile: https://github.com/helske
Bayesian statistics, time series, causal inference, state space models, hidden Markov models, visualization.
GitHub Events
Total
- Watch event: 3
- Delete event: 1
- Push event: 17
- Fork event: 1
- Create event: 1
Last Year
- Watch event: 3
- Delete event: 1
- Push event: 17
- Fork event: 1
- Create event: 1
Committers
Last synced: over 2 years ago
Top Committers
| Name | Commits | |
|---|---|---|
| Jouni Helske | j****e@j****i | 76 |
| helske | j****e@i****i | 21 |
| unknown | j****e@M****i | 1 |
| Jouni Helske | j****e@u****i | 1 |
| unknown | j****e@M****i | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 9
- Total pull requests: 1
- Average time to close issues: 3 days
- Average time to close pull requests: N/A
- Total issue authors: 6
- Total pull request authors: 1
- Average comments per issue: 1.33
- Average comments per pull request: 2.0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- chuckcoleman (3)
- barracuda156 (2)
- flasorte (1)
- swarajnanda (1)
- ghost (1)
- helske (1)
Pull Request Authors
- chuckcoleman (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- cran 676 last-month
- Total docker downloads: 43,390
- Total dependent packages: 6
- Total dependent repositories: 2
- Total versions: 12
- Total maintainers: 1
cran.r-project.org: Rlibeemd
Ensemble Empirical Mode Decomposition (EEMD) and Its Complete Variant (CEEMDAN)
- Documentation: http://cran.r-project.org/web/packages/Rlibeemd/Rlibeemd.pdf
- License: GPL-3
-
Latest release: 1.4.4
published 11 months ago
Rankings
Maintainers (1)
Dependencies
- Rcpp >= 0.11.0 imports
- stats * imports
- testthat * suggests