CrossMappings.ccm
— Methodccm(source,
target,
timeseries_lengths;
kwargs...) -> Vector{Vector{Float64}}
Algorithm
Compute the cross mapping between a source
series and a target
series over different timeseries_lengths
.
Arguments
source
: The data series representing the putative source process.target
: The data series representing the putative target process.timeseries_lengths
: Time series length(s) for which to compute the cross mapping(s).
Keyword arguments to crossmap
dim
: The dimension of the state space reconstruction (delay embedding) constructed from thetarget
series. Default isdim = 3
.τ
: The embedding lag for the delay embedding constructed fromtarget
. Default isτ = 1
.η
: The prediction lag to use when predicting scalar values ofsource
fromthe delay embedding oftarget
.η > 0
are forward lags (causal;source
's past influencestarget
's future), andη < 0
are backwards lags (non-causal;source
's' future influencestarget
's past). Adjust the prediction lag if you want to performed lagged ccm (Ye et al., 2015). Default isη = 0
, as in Sugihara et al. (2012). Note: The sign of the lagη
is organized to conform with the conventions in TransferEntropy.jl, and is opposite to the convention used in therEDM
package (Ye et al., 2016).libsize
: Among how many delay embedding points should we sample time indices and look for nearest neighbours at each cross mapping realization (of which there aren_reps
)?n_reps
: The number of times we draw a library oflibsize
points from the delay embedding oftarget
and try to predictsource
values. Equivalently, how many times do we cross map for this value oflibsize
? Default isn_reps = 100
.replace
: Sample delay embedding points with replacement? Default isreplace = true
.theiler_window
: How many temporal neighbors of the delay embedding pointtarget_embedding(t)
to exclude when searching for neighbors to determine weights for predicting the scalar pointsource(t + η)
. Default istheiler_window = 0
.tree_type
: The type of tree to build when looking for nearest neighbors. Must be a tree type from NearestNeighbors.jl. For now, this is eitherBruteTree
,KDTree
orBallTree
.distance_metric
: An instance of aMetric
from Distances.jl.BallTree
andBruteTree
work with anyMetric
.KDTree
only works with the axis aligned metricsEuclidean
,Chebyshev
,Minkowski
andCityblock
. Default ismetric = Euclidean()
(note the instantiation of the metric).correspondence_measure
: The function that computes the correspondence between actual values ofsource
and predicted values. Can be any function returning a similarity measure between two vectors of values. Default iscorrespondence_measure = StatsBase.cor
, which returns values on $[-1, 1]$. In this case, any negative values are usually filtered out (interpreted as zero coupling) and a value of $1$ means perfect prediction. Sugihara et al. (2012) also proposes to use the root mean square deviation, for which a value of $0$ would be perfect prediction.
References
Sugihara, George, et al. "Detecting causality in complex ecosystems." Science (2012): 1227079. http://science.sciencemag.org/content/early/2012/09/19/science.1227079
Ye, Hao, et al. "Distinguishing time-delayed causal interactions using convergent cross mapping." Scientific Reports 5 (2015): 14750. https://www.nature.com/articles/srep14750
Ye, H., et al. "rEDM: Applications of empirical dynamic modeling from time series." R Package Version 0.4 7 (2016). https://cran.r-project.org/web/packages/rEDM/index.html
CrossMappings.ccm_with_summary
— Methodccm_with_summary(source,
target,
timeseries_lengths;
average_measure::Symbol = :median,
uncertainty_measure::Symbol = :quantile,
quantiles = [0.327, 0.673],
kwargs...)
Algorithm
Compute the cross mapping between a source
series and a target
series over different timeseries_lengths
and return summary statistics of the results.
Arguments
source
: The data series representing the putative source process.target
: The data series representing the putative target process.timeseries_lengths
: Time series length(s) for which to compute the cross mapping(s).
Summary keyword arguments
average_measure
: Either:median
or:mean
. Default is:median
.uncertainty_measure
: Either:quantile
or:std
. Default is:quantile
.quantiles
: Compute uncertainty over quantile(s) ifuncertainty_measure
is:quantile
. Default is[0.327, 0.673]
, roughly corresponding to 1s for normally distributed data.
Keyword arguments to crossmap
dim
: The dimension of the state space reconstruction (delay embedding) constructed from thetarget
series. Default isdim = 3
.τ
: The embedding lag for the delay embedding constructed fromtarget
. Default isτ = 1
.η
: The prediction lag to use when predicting scalar values ofsource
from the delay embedding oftarget
.η > 0
are forward lags (causal;source
's past influencestarget
's future), andη < 0
are backwards lags (non-causal;source
's' future influencestarget
's past). Adjust the prediction lag if you want to performed lagged ccm (Ye et al., 2015). Default isη = 0
, as in Sugihara et al. (2012). Note: The sign of the lagη
is organized to conform with the conventions in TransferEntropy.jl, and is opposite to the convention used in therEDM
package (Ye et al., 2016).libsize
: Among how many delay embedding points should we sample time indices and look for nearest neighbours at each cross mapping realization (of which there aren_reps
)?n_reps
: The number of times we draw a library oflibsize
points from the delay embedding oftarget
and try to predictsource
values. Equivalently, how many times do we cross map for this value oflibsize
? Default isn_reps = 100
.replace
: Sample delay embedding points with replacement? Default isreplace = true
.theiler_window
: How many temporal neighbors of the delay embedding pointtarget_embedding(t)
to exclude when searching for neighbors to determine weights for predicting the scalar pointsource(t + η)
. Default istheiler_window = 0
.tree_type
: The type of tree to build when looking for nearest neighbors. Must be a tree type from NearestNeighbors.jl. For now, this is eitherBruteTree
,KDTree
orBallTree
.distance_metric
: An instance of aMetric
from Distances.jl.BallTree
andBruteTree
work with anyMetric
.KDTree
only works with the axis aligned metricsEuclidean
,Chebyshev
,Minkowski
andCityblock
. Default ismetric = Euclidean()
(note the instantiation of the metric).correspondence_measure
: The function that computes the correspondence between actual values ofsource
and predicted values. Can be any function returning a similarity measure between two vectors of values. Default iscorrespondence_measure = StatsBase.cor
, which returns values on $[-1, 1]$. In this case, any negative values are usually filtered out (interpreted as zero coupling) and a value of $1$ means perfect prediction. Sugihara et al. (2012) also proposes to use the root mean square deviation, for which a value of $0$ would be perfect prediction.
References
Sugihara, George, et al. "Detecting causality in complex ecosystems." Science (2012): 1227079. http://science.sciencemag.org/content/early/2012/09/19/science.1227079
Ye, Hao, et al. "Distinguishing time-delayed causal interactions using convergent cross mapping." Scientific Reports 5 (2015): 14750. https://www.nature.com/articles/srep14750
Ye, H., et al. "rEDM: Applications of empirical dynamic modeling from time series." R Package Version 0.4 7 (2016). https://cran.r-project.org/web/packages/rEDM/index.html
CrossMappings.convergentcrossmap
— Methodconvergentcrossmap(source,
target,
timeseries_lengths;
summarise::Bool = true,
average_measure::Symbol = :median,
uncertainty_measure::Symbol = :quantile,
quantiles = [0.327, 0.673],
kwargs...)
Algorithm
Compute the cross mapping between a source
series and a target
series over different timeseries_lengths
. If summarise = true
, then call ccm_with_summary
. If summarise = false
, then call ccm
(returns raw crossmap skills).
Arguments
source
: The data series representing the putative source process.target
: The data series representing the putative target process.timeseries_lengths
: Time series length(s) for which to compute the cross mapping(s).
Summary keyword arguments
summarise
: Should cross map skills be summarised for each time series length? Default issummarise = true
.average_measure
: Either:median
or:mean
. Default is:median
.uncertainty_measure
: Either:quantile
or:std
. Default is:quantile
.quantiles
: Compute uncertainty over quantile(s) ifuncertainty_measure
is:quantile
. Default is[0.327, 0.673]
, roughly corresponding to 1s for normally distributed data.
Keyword arguments to crossmap
dim
: The dimension of the state space reconstruction (delay embedding) constructed from thetarget
series. Default isdim = 3
.τ
: The embedding lag for the delay embedding constructed fromtarget
. Default isτ = 1
.η
: The prediction lag to use when predicting scalar values ofsource
fromthe delay embedding oftarget
.η > 0
are forward lags (causal;source
's past influencestarget
's future), andη < 0
are backwards lags (non-causal;source
's' future influencestarget
's past). Adjust the prediction lag if you want to performed lagged ccm (Ye et al., 2015). Default isη = 0
, as in Sugihara et al. (2012). Note: The sign of the lagη
is organized to conform with the conventions in TransferEntropy.jl, and is opposite to the convention used in therEDM
package (Ye et al., 2016).libsize
: Among how many delay embedding points should we sample time indices and look for nearest neighbours at each cross mapping realization (of which there aren_reps
)?n_reps
: The number of times we draw a library oflibsize
points from the delay embedding oftarget
and try to predictsource
values. Equivalently, how many times do we cross map for this value oflibsize
? Default isn_reps = 100
.replace
: Sample delay embedding points with replacement? Default isreplace = true
.theiler_window
: How many temporal neighbors of the delay embedding pointtarget_embedding(t)
to exclude when searching for neighbors to determine weights for predicting the scalar pointsource(t + η)
. Default istheiler_window = 0
.tree_type
: The type of tree to build when looking for nearest neighbors. Must be a tree type from NearestNeighbors.jl. For now, this is eitherBruteTree
,KDTree
orBallTree
.distance_metric
: An instance of aMetric
from Distances.jl.BallTree
andBruteTree
work with anyMetric
.KDTree
only works with the axis aligned metricsEuclidean
,Chebyshev
,Minkowski
andCityblock
. Default ismetric = Euclidean()
(note the instantiation of the metric).correspondence_measure
: The function that computes the correspondence between actual values ofsource
and predicted values. Can be any function returning a similarity measure between two vectors of values. Default iscorrespondence_measure = StatsBase.cor
, which returns values on $[-1, 1]$. In this case, any negative values are usually filtered out (interpreted as zero coupling) and a value of $1$ means perfect prediction. Sugihara et al. (2012) also proposes to use the root mean square deviation, for which a value of $0$ would be perfect prediction.
References
Sugihara, George, et al. "Detecting causality in complex ecosystems." Science (2012): 1227079. http://science.sciencemag.org/content/early/2012/09/19/science.1227079
Ye, Hao, et al. "Distinguishing time-delayed causal interactions using convergent cross mapping." Scientific Reports 5 (2015): 14750. https://www.nature.com/articles/srep14750
Ye, H., et al. "rEDM: Applications of empirical dynamic modeling from time series." R Package Version 0.4 7 (2016). https://cran.r-project.org/web/packages/rEDM/index.html
CrossMappings.crossmap
— Methodcrossmap(source, target;
dim::Int = 3,
τ::Int = 1,
libsize::Int = 10,
replace::Bool = false,
n_reps::Int = 100,
theiler_window::Int = 0,
tree_type = NearestNeighbors.KDTree,
distance_metric = Distances.Euclidean(),
correspondence_measure = StatsBase.cor,
η::Int = 0)
Algorithm
Compute the cross mapping between a source
series and a target
series.
Arguments
source
: The data series representing the putative source process.target
: The data series representing the putative target process.dim
: The dimension of the state space reconstruction (delay embedding) constructed from thetarget
series. Default isdim = 3
.τ
: The embedding lag for the delay embedding constructed fromtarget
. Default isτ = 1
.η
: The prediction lag to use when predicting scalar values ofsource
fromthe delay embedding oftarget
.η > 0
are forward lags (causal;source
's past influencestarget
's future), andη < 0
are backwards lags (non-causal;source
's' future influencestarget
's past). Adjust the prediction lag if you want to performed lagged ccm (Ye et al., 2015). Default isη = 0
, as in Sugihara et al. (2012). Note: The sign of the lagη
is organized to conform with the conventions in TransferEntropy.jl, and is opposite to the convention used in therEDM
package (Ye et al., 2016).libsize
: Among how many delay embedding points should we sample time indices and look for nearest neighbours at each cross mapping realization (of which there aren_reps
)?n_reps
: The number of times we draw a library oflibsize
points from the delay embedding oftarget
and try to predictsource
values. Equivalently, how many times do we cross map for this value oflibsize
? Default isn_reps = 100
.replace
: Sample delay embedding points with replacement? Default isreplace = true
.theiler_window
: How many temporal neighbors of the delay embedding pointtarget_embedding(t)
to exclude when searching for neighbors to determine weights for predicting the scalar pointsource(t + η)
. Default istheiler_window = 0
.tree_type
: The type of tree to build when looking for nearest neighbors. Must be a tree type from NearestNeighbors.jl. For now, this is eitherBruteTree
,KDTree
orBallTree
.distance_metric
: An instance of aMetric
from Distances.jl.BallTree
andBruteTree
work with anyMetric
.KDTree
only works with the axis aligned metricsEuclidean
,Chebyshev
,Minkowski
andCityblock
. Default ismetric = Euclidean()
(note the instantiation of the metric).correspondence_measure
: The function that computes the correspondence between actual values ofsource
and predicted values. Can be any function returning a similarity measure between two vectors of values. Default iscorrespondence_measure = StatsBase.cor
, which returns values on $[-1, 1]$. In this case, any negative values are usually filtered out (interpreted as zero coupling) and a value of $1$ means perfect prediction. Sugihara et al. (2012) also proposes to use the root mean square deviation, for which a value of $0$ would be perfect prediction.
References
Sugihara, George, et al. "Detecting causality in complex ecosystems." Science (2012): 1227079. http://science.sciencemag.org/content/early/2012/09/19/science.1227079
Ye, Hao, et al. "Distinguishing time-delayed causal interactions using convergent cross mapping." Scientific Reports 5 (2015): 14750. https://www.nature.com/articles/srep14750
Ye, H., et al. "rEDM: Applications of empirical dynamic modeling from time series." R Package Version 0.4 7 (2016). https://cran.r-project.org/web/packages/rEDM/index.html
CrossMappings.predict_point!
— Methodpredict_point!(predictions, i, source_values, u, w, dists, dim)
The prediction part of the convergent cross mapping algorithm.
Algorithm
Consider the point in the delay embedding of target
point with time index i
. Denote the time indices of its nearest neighbors $t_1, t_2, \ldots, t_{dim+1}$. Denote the scalar values of source
at those time indices $y_1, y_2, \ldots, y_{dim+1}$.
Given distances
$d_1, d_2, \ldots, d_{dim+1}$ from the i
-th point to its nearest neighbors, we compute the weights w
from the cross mapping algorithm (Sugihara et al, 2012; supplementary material, page 4). The weights w
and coefficients u
are stored in pre-allocated vectors.
A prediction for the observation with time index i
in the source
timeseries, call it $\hat{y}(i)$, is computed as the sum
\[\hat{y}(i) = \sum_{j=1}^{dim+1} w_j y_j.\]
We store the prediction $\hat{y}(i)$ in position i
of the pre-allocated vector predictions
.
Arguments
predictions
: A pre-allocated vector in which to store the prediction for the scalar value of thesource
series.i
: The time index of the point of thesource
series being predicted. The prediction is stored inpredictions[i]
.source_values
: Let $t_1, t_2, \ldots, t_{dim + 1}$ be the time indices of the nearest neighbors to the delay embedding point with time indexi
.source_values
contains the scalar values of thesource
series at those time indices.u
: A pre-allocated vector of lengthdim + 1
that holds the normalisation coefficients for computing the weights in the cross mapping algorithm.w
: A pre-allocated vector of lengthdim + 1
that holds the computed weights for the cross mapping algorithm.dists
: The distances from delay embedding point with time indexi
to itsdim + 1
nearest neighbors, in order of increasing distances.dim
: The dimension of the delay embedding.
References
Sugihara, George, et al. "Detecting causality in complex ecosystems." Science (2012): 1227079. http://science.sciencemag.org/content/early/2012/09/19/science.1227079