Skip to content

Cross mapping

Given two data series, the putative driver and the putative response, the the crossmap(driver, response; kwargs...) function computes how well a delay embedding of response predicts scalar values of driver. This is the original cross mapping algorithm from Sugihara et al. 1.

To perform lagged CCM analysis 2 as Ye et al., you can tune the ν parameter.

Documentation

# CrossMappings.crossmapFunction.

crossmap(driver, response;
    dim::Int = 3,
    τ::Int = 1,
    libsize::Int = 10,
    replace::Bool = false,
    n_reps::Int = 100,
    surr_func::Function = randomshuffle,
    which_is_surr::Symbol = :none,
    exclusion_radius::Int = 0,
    tree_type = NearestNeighbors.KDTree,
    distance_metric = Distances.Euclidean(),
    correspondence_measure = StatsBase.cor,
    ν::Int = 0)

Algorithm

Compute the cross mapping between a driver series and a response series.

Arguments

  • driver: The data series representing the putative driver process.
  • response: The data series representing the putative response process.
  • dim: The dimension of the state space reconstruction (delay embedding) constructed from the response series. Default is dim = 3.
  • τ: The embedding lag for the delay embedding constructed from response. Default is τ = 1.
  • ν: The prediction lag to use when predicting scalar values of driver fromthe delay embedding of response. ν > 0 are forward lags (causal; driver's past influences response's future), and ν < 0 are backwards lags (non-causal; driver's' future influences response'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 the rEDM 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 are n_reps)?
  • n_reps: The number of times we draw a library of libsize points from the delay embedding of response and try to predict driver values. Equivalently, how many times do we cross map for this value of libsize? Default is n_reps = 100.
  • replace: Sample delay embedding points with replacement? Default is replace = true.
  • exclusion_radius: How many temporal neighbors of the delay embedding point response_embedding(t) to exclude when searching for neighbors to determine weights for predicting the scalar point driver(t + ν). Default is exclusion_radius = 0.
  • which_is_surr: Which data series should be replaced by a surrogate realization of the type given by surr_type? Must be one of the following: :response, :driver, :none, :both. Default is :none.
  • surr_func: A valid surrogate function from TimeseriesSurrogates.jl.
  • 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 either BruteTree, KDTree or BallTree.
  • distance_metric: An instance of a Metric from Distances.jl. BallTree and BruteTree work with any Metric. KDTree only works with the axis aligned metrics Euclidean, Chebyshev, Minkowski and Cityblock. Default is metric = Euclidean() (note the instantiation of the metric).
  • correspondence_measure: The function that computes the correspondence between actual values of driver and predicted values. Can be any function returning a similarity measure between two vectors of values. Default is correspondence_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


  1. Sugihara, G., May, R., Ye, H., Hsieh, C. H., Deyle, E., Fogarty, M., & Munch, S. (2012). Detecting causality in complex ecosystems. Science. https://doi.org/10.1126/science.1227079 

  2. Ye, H., Deyle, E. R., Gilarranz, L. J., & Sugihara, G. (2015). Distinguishing time-delayed causal interactions using convergent cross mapping. Scientific Reports. https://doi.org/10.1038/srep14750