JuliaDynamics / ComplexityMeasures.jl

Estimators for probabilities, entropies, and other complexity measures derived from data in the context of nonlinear dynamics and complex systems
MIT License
59 stars 14 forks source link

`probabilities_and_outcomes` for permutation estimators #160

Closed kahaaga closed 2 years ago

kahaaga commented 2 years ago

Fixes #149, kind of, and partly. We're still missing #87. But as a replacement, we can just return the integer (non-decoded) symbols. These are the same for SymbolicPermutation, SymbolicWeightedPermutation and SymbolicAmplitudeAwarePermutation.

I'll do SpatialSymbolicPermutation in a separate PR. I'll probably do it as part of #126.

Changes:

codecov[bot] commented 2 years ago

Codecov Report

Merging #160 (3fb3011) into main (410996f) will increase coverage by 0.48%. The diff coverage is 97.05%.

@@            Coverage Diff             @@
##             main     #160      +/-   ##
==========================================
+ Coverage   82.14%   82.62%   +0.48%     
==========================================
  Files          33       33              
  Lines         812      823      +11     
==========================================
+ Hits          667      680      +13     
+ Misses        145      143       -2     
Impacted Files Coverage Δ
...imators/permutation_ordinal/SymbolicPermutation.jl 75.60% <94.44%> (+2.63%) :arrow_up:
...tors/permutation_ordinal/SymbolicAmplitudeAware.jl 100.00% <100.00%> (+5.26%) :arrow_up:
...permutation_ordinal/SymbolicWeightedPermutation.jl 100.00% <100.00%> (+5.55%) :arrow_up:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

kahaaga commented 2 years ago

Ultimately, I think the outcomes here should be m-dimensional vectors with the numbers 1 to m in them sorted in whatever order. 1 meaning "smallest value" and m meaning "largest value". That would be the most intuitive way to provide the outcomes.

You mean outcomes = Vector{SVector{M}, where o[i] ∈ outcomes is the ordinal pattern for probs[i] (i.e. what sortperm would return)? If so, I absolutely agree, but that requires the inverse function, which is in #87, to be implemented.

I'm happy just returning symbols for now, and we can work on that later.

Datseris commented 2 years ago

Yes, this is what I mean. Okay then #87 it is. But then #87 has to be done before 2.0 because it would be breaking otherwise? Or do we just provide an additional function, like int_to_ordinalpattern(i::Int, m::Int)? I guess the later is the simplest.