Changelog is kept with respect to version 0.11 of Entropies.jl. From version v2.0 onwards, this package has been renamed to ComplexityMeasures.jl.
- Updated to StateSpaceSets.jl v2.0
- Fixed a bug in
codify
withStateSpaceSet
. Now it does exactly as described in the docstring.
- New information measure:
FluctuationComplexity
.
- New multiscale API.
- New spatial outcome space:
SpatialBubbleSortSwaps
. - A script in the documentation now calculates explicitly the total possible complexity measures one can estimate with ComplexityMeasures.jl. For version 3.5 this is roughly 1,600.
- New complexity measure:
BubbleEntropy
. - New outcome space:
BubbleSortSwaps
. - New encoding:
BubbleSortSwapsEncoding
.
- Added the
SequentialPairDistances
outcome space. In the literature, this outcome space has been used to compute the "distribution entropy", which can be reproduced withinformation(Shannon(), SequentialPairDistances(x), x)
. It can of course also be used in combination with any other information measure. - Added the
PairDistanceEncoding
encoding. - Added the
entropy_distribution
convenience function.
missing_outcomes
only works with count-based outcome spaces, which is what it should be doing based on its conceptual definition. Previous signature has been deprecated.- New function
missing_probabilities
that works with probability estimators and does the same asmissing_outcomes
.
- Pretty printing for
Encoding
s,OutcomeSpace
s,ProbabilitiesEstimator
s,InformationMeasure
s,InformationMeasureEstimator
s andComplexityEstimator
s.
ComplexityMeasures.jl has undergone major overhaul of the internal design. Additionally, a large number of exported names have been renamed. Despite the major version change, this release does not contain strictly breaking changes. Instead, deprecations have been put in place everywhere.
The main renames and re-thinking of the library design are:
- We have renamed the concept of "entropy" to "information measure", and
entropy
has been renamed toinformation
. We consider as "information measures" anything that is a functional of probability mass/density functions, and these are estimated usingDiscreteInfoEstimator
s orDifferentialInfoEstimator
s. - We realized that types like
ValueBinning
,OrdinalPatterns
andDispersion
don't actually represent probabilities estimators, but outcome spaces. To convery this fact, from 3.0, these types are subtypes ofOutcomeSpace
. - Subtypes of
ProbabilitiesEstimator
s now represent distinct ways of estimating probabilities from counts or pseudo-counts over someOutcomeSpace
.RelativeAmount
is the simplest (and default) probabilities estimator.BayesianRegularization
,Shrinkage
andAddConstant
are some more complex probabilities estimators.
The online documentation now comes with a tutorial that nicely summarizes these new concepts/changes.
- New dedicated counting interface for mapping observations into outcome counts. See
the
counts_and_outcomes
function andCounts
struct. - New function
allprobabilities
that is likeprobabilities
but also includes 0 entries for possible outcomes that were not present in the data. - New extropy definitions that count as information measures (and thus can be given to
information
):ShannonExtropy
,RenyiExtropy
,TsallisExtropy
. StatisticalComplexity
is now compatible with any normalizableInformationMeasure
(previouslyEntropyDefinition
).StatisticalComplexity
can now estimate probabilities using any combination ofProbabilitiesEstimator
andOutcomeSpace
.- Add the 1976 Lempel-Ziv complexity measure (
LempelZiv76
). - New entropy definition: identification entropy (
Identification
). - Minor documentation fixes.
GaussianCDFEncoding
now can be used with vector-valued inputs.- New
LeonenkoProzantoSavani
differential entropy estimator. Works withShannon
,Renyi
andTsallis
entropies. - New encodings available:
RelativeMeanEncoding
,RelativeFirstDifferenceEncoding
,UniqueElementsEncoding
andCombinationEncoding
(the latter combines multiple encodings). - New
codify
function that encodes sequences of observations (vectors or state space sets) into discrete symbol sequences.
SymbolicPermutation
is nowOrdinalPatterns
.SymbolicWeightedPermutation
is nowWeightedOrdinalPatterns
.SymbolicAmplitudeAwarePermutation
is nowAmplitudeAwareOrdinalPatterns
.SpatialSymbolicPermutation
is nowSpatialOrdinalPatterns
.
- Passing
m
as a positional or keyword argument to ordinal pattern outcome space or encoding is deprecated. It is given as a type parameter now, e.g.,OrdinalPatterns{m}(...)
instead ofOrdinalPatterns(m = ..., ...)
.
outcome_space
forDispersion
now correctly returns the all possible sorted outcomes (as promised by theoutcome_space
docstring).decode
withGaussianCDFEncoding
now correctly returns only the left-sides of the[0, 1]
subintervals, and always returns the decoded symbol as aVector{SVector}
(consistent withRectangularBinEncoding
), regardless of whether the input is a scalar or a vector.- Using the
TransferOperator
outcome space with aRectangularBinning
orFixedRectangularBinning
withprecise == false
will now trigger a warning. This was previously causing random bugs because some bins were encoded as-1
, indicating that the point is outside the binning - even if it wasn't. WaveletOverlap
now computes probabilities (relative energies) over the correct number of transform levels. Previously, the *scaling *coefficients for the max transform level were incorrectly included, as an extra set of coefficients in addition to the (correctly included) wavelet coefficients. This caused a lot of energy to be concentrated at low frequencies, even for high-frequency signals. Thus the correspondingProbabilities
had an extra element which in many cases dominated the rest of the distribution.
- Fix bug in calculation of statistical complexity
- Add generalized statistical complexity as complexity measure.
- Fixed differential entropy "unit" bug caused by erroneous conversion between logarithm
bases and introduced the
convert_logunit
function to convert between entropies computed with different logarithm bases.
- Moved to StateSpaceSets.jl v1 (only renames of
Dataset
toStateSpaceSet
).
- Rectangular binnings have been reformed to operate based on ranges. This leads to much more intuitive bin sizes and edges. For
RectangularBinning
nothing changes, while forFixedRectangularBinning
the ranges should be given explicitly. Backwards compatible deprecations have been added. - This also allows for a new
precise
option that utilizes Base JuliaTwinPrecision
to make more accurate mapping of points to bins at the cost of performance.
- Like differential entropies, discrete entropies now also have their own estimator type.
- The approach of giving both an entropy definition, and an entropy estimator to
entropy
has been dropped. Now the entropy estimators know what definitions they are applied for. This change is a deprecation, i.e., backwards compatible. - Added
PlugInEntropy
discrete entropy estimator.
- Corrected documentation for
SymbolicPermutation
,SymbolicAmplitudeAwarePermutation
, andSymbolicWeightedPermutation
, indicating that the outcome space is the set offactorial(m)
permutations of the integers1:m
, not the rank orderings, as was stated before.
- Added
Gao
estimator for differential Shannon entropy. - Added
Lord
estimator for differential Shannon entropy. Probabilities
now wrapsAbstractArray{T, N}
instead ofAbstractVector{T}
, so that it can also represent multidimensional probability mass functions. For vectors, it behaves as before.
The API for Entropies.jl has been completely overhauled, and the package has been renamed to ComplexityMeasures.jl. Along with the overhaul comes a massive amount of new features, an entirely new API, extendable and educative code, dedicated documentation pages, and more!
We believe it is best to learn all of this by visiting the online documentation.
We tried our best to keep pre-2.0 functions working and throw deprecation warnings. If we missed code that should be working, let us know by opening an issue.
- Common generic interface function
entropy
,entropy_normalized
andmaximum
(maximum entropy) that dispatches on different definitions of entropies (e.gRenyi()
Shannon()
,Tsallis()
) and estimated probabilities. - Convenience functions for common entropies, such as permutation entropy and dispersion entropy still exist.
- New interface
DifferentialEntropyEstimator
that is also used inentropy
. - The
base
of the entropy is now a field of theInformationMeasure
type, not the estimator. - An entirely new section of entropy-like complexity measures, such as the reverse dispersion entropy.
- Many new estimators, such as
SpatialPermutation
andPowerSpectrum
. - Check the online documentation for a comprehensive overview of the changes.
- No more deprecation warnings for using the old keyword
α
for Renyi entropy. - The
KozachenkoLeonenko
estimator now correctly fixes its neighbor search to the closest neighbor only, and its constructor does no longer acceptk
as an input. It also uses correct scaling factor and adapts to dimension. - Using a logarithm
base
different fromMathConstants.e
now yields correct results forKraskov
andKozachenkoLeonenko
.
- New probability estimator
SpatialSymbolicPermutation
suitable for computing spatial permutation entropies - Introduce Tsallis entropy.
- Added dispersion entropy.
- Introduce convenience function
permentropy
. - Several type instabilities fixed.
No actual changes, just first major version release.
- Nearest neighbor searches now use Neighborhood.jl and the Theiler window properly.
probabilities(data, n::Int)
now uses a rectangular binning ofn
bins for each dimension. Before, while not documented as possible in the public API, using integern
would take it as the bin size.