ComplexityMeasures.jl
ComplexityMeasures.jl copied to clipboard
Generalized interface for multivariate multiscale methods.
Describe the feature you'd like to have
With #132, we'll have a nice interface for computing any multiscale entropy or complexity measure of a timeseries x
, as long as a relevant MultiScaleAlgorithm
and corresponding downsample
method is defined.
However, we haven't yet implemented methods for multivariate input. This is used for example in Morabito et al. (2012), where the compute the multivariate multiscale permutation entropy.
If possible, sketch out an implementation strategy
Implementing this is probably straight-forward. We just need to define downsample(::MultiScaleAlgorithm, x::AbstractDataset)
.
I'm just submitting this issue to remember actually doing so.
Cite scientific papers related to the feature/algorithm
Morabito, F. C., Labate, D., Foresta, F. L., Bramanti, A., Morabito, G., & Palamara, I. (2012). Multivariate multi-scale permutation entropy for complexity analysis of Alzheimer’s disease EEG. Entropy, 14(7), 1186-1202.
downsample(a::MultiScaleAlgorithm, x::AbstractDataset) = Dataset(map(t -> downsample(a, t), columns(x))...)
?
downsample(a::MultiScaleAlgorithm, x::AbstractDataset) = Dataset(map(t -> downsample(a, t), columns(x))...) ?
Excellent. This will work generically. I'll add this to #132 straight away.
Reminder: we have two existing signature for probabilities(x::AbstractVector, est::SymbolicPermutation)
and probabilities(x::AbstractDataset, est::SymbolicPermutation)
. The multivariate permutation approach (ignored the multi-scale aspect for now) conflicts with the latter. We need to decide on what to do about that. Perhaps it is best to replace the latter method with one that interprets each column of x
as a timeseries, rather than interpreting the rows of x
as pre-embedded state vectors to be symbolized.