From version v4.0 onwards, this package has been renamed to to Associations.jl.
- New association measure:
AzadkiaChatterjeeCoefficient
.
- New association measure:
ChatterjeeCorrelation
.
The package has been renamed from CausalityTools.jl to Associations.jl.
This release contains several breaking changes. Any code from before v3.0 will need updating to continue working with v3.0.
The main reason for these breaking changes is that estimators now store the definitions they estimate. This way, we reduce the amount of code we have to write maintain, document and test. At the same time, we hope it is a bit more user-friendly to only relate to "one way of thinking" about estimating association measures.
- The function
association(measure_or_est, input_data...)
is the central function that computes all association measures. The first argument is either a measure definition (if it has no estimator), or an estimator. This means that ifinput_data
consists of two input datasets, then a pairwise association is estimated. Ifinput_data
consists of three input datasets, then typically a conditional association is estimated (but exceptions are possible).
SurrogateTest
is nowSurrogateAssociationTest
SurrogateTestResult
is nowSurrogateAssociationTestResult
- All example systems are removed.
The crossmap API has been overhauled.
CrossmapEstimator
s now take theCrossmapMeasure
definition as their first argument. For example, you'll have to doExpandingSegment(CCM(); libsizes = 10:10:50)
instead ofExpandingSegment(; libsizes = 10:10:50)
.
The information API has been overhauled.
- Multivariate information measures now store their parameters explicitly, instead
of using
ComplexityMeasures.EntropyDefinition
to do so. For example, to define Shannon-type conditional mutual information, one should doCMIShannon(base = 2)
instead ofCMIShannon(Shannon(base = 2))
. - New generic discrete estimator
JointDistribution
for estimating multivariate information measures. This estimators explicitly computes the joint distribution based on the given discretization, and can be applied to any measure which is defined as a function of a joint distribution. - New generic decomposition-based estimator
EntropyDecomposition
. This estimator computes some multivariate information measure by rewriting the measure definition as a combination of some lower-level measure. For example,CMIShannon
can be rewritten as a sum ofShannon
entropies. Each of these terms can then be estimated using some differential entropy estimator, e.g.ZhuSingh
orKraskov
. - New generic decomposition-based estimator
MIDecomposition
. This estimator computes some multivariate information measure by rewriting the measure definition as a combination of some mutual information measure. - New generic decomposition-based estimator
CMIDecomposition
. This estimator computes some multivariate information measure by rewriting the measure definition as a combination of some conditional mutual information measure.
- There was an error in the implementation of
PartMutualInformation
. It is now fixed using explicit loops for computing the measures from a probability distribution.
- Progress bars in some independence tests (surrogate, local permutation) can be
enabled by passing keyword
show_progress = true
in the test constructors.
- Fixed bug in
transferentropy
function which yielded identical results in both directions for the bivariate case. - Fixed bug that occurred when using
LocalPermutationTest
withTEShannon
as the measure and a dedicatedTransferEntropyEstimator
(e.g.Zhu1
orLindner
). This occurred because theLocalPermutationTest
is, strictly speaking, a test using conditional mutual information as the measure. Therefore, naively applying aTransferEntropy
measure such asTEShannon
would error. This is fixed by performing a similar procedure where the source marginal is shuffled according to local neighborhoods in the conditional marginal. This is similar, but not identical to the CMI-basedLocalPermutationTest
, and adapts to the specific case of transfer entropy estimation using dedicated transfer entropy estimators instead of some lower-level estimator. - Fixed bug in
Zhu1
transfer entropy estimator where when box volumes were extremely small, taking the logarithm of volume ratios resulted inInf
values. This was solved by simply ignoring these volumes.
Moved to DynamicalSystemsBase v3.0 (trajectory
now returns both the data and the time
indices).
- Fixed bug in
GaussianMI
that occurred when the keywordnormalize
was set totrue
.
- Fixed an import warning.
- New association measure:
PMI
(part mutual information).
- New causal graph inference algorithm:
PC
.
- New independence test:
CorrTest
, based on (partial) correlations.
- Added partial distance correlation measure. To compute it, simply provide a
third input argument to
distance_correlation
. DistanceCorrelation
is now compatible with bothSurrogateTest
andLocalPermutationTest
in its conditional form.
- The
MesnerShalisi
estimator is now deprecated and renamed toMesnerShalizi
(with correct spelling).
- Significant speed-ups for
OCE
by sorting on maximal measure, thus avoiding unnecessary significance tests. - Default parameters for
OCE
default lag parameter have changed. Now,τmax = 1
, since that is the only case considered in the original paper. We also use theMesnerShalisi
CMI estimator for the conditional step, because in contrast to theFPVP
estimator, it has been shown to be consistent. - Source code for
OCE
has been drastically simplified by merging the pairwise and conditional parent finding steps. OCE
result can now be converted to aSimpleDiGraph
from Graphs.jl.
infer_graph
now accepts theverbose
keyword.- Fixed a bug in backwards elimination step of
OCE
algorithm that was caused due to an undefined variable.
- Added
MCR
andRMCD
recurrence based association measures, along with the correspondingmcr
andrmcd
methods.
- Bugfix for
OCE
for certain conditional variable cases. - Improve docstring for
OCE
. - Updated readme.
- Fixed bug related to
DifferentialInfoEstimator
"unit" conversion.
The entire package has been completely redesigned. Previous methods are deprecated, and will disappear completely in a v2.X release. For a full overview of new functionality, see the online documentation.
- Added
conditional_mutualinfo
.
- Added continous example system
repressilator
.