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.crossmap — Function.
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 theresponseseries. Default isdim = 3.τ: The embedding lag for the delay embedding constructed fromresponse. Default isτ = 1.ν: The prediction lag to use when predicting scalar values ofdriverfromthe delay embedding ofresponse.ν > 0are forward lags (causal;driver's past influencesresponse's future), andν < 0are backwards lags (non-causal;driver's' future influencesresponse'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 therEDMpackage (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 oflibsizepoints from the delay embedding ofresponseand try to predictdrivervalues. 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.exclusion_radius: How many temporal neighbors of the delay embedding pointresponse_embedding(t)to exclude when searching for neighbors to determine weights for predicting the scalar pointdriver(t + ν). Default isexclusion_radius = 0.which_is_surr: Which data series should be replaced by a surrogate realization of the type given bysurr_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 eitherBruteTree,KDTreeorBallTree.distance_metric: An instance of aMetricfrom Distances.jl.BallTreeandBruteTreework with anyMetric.KDTreeonly works with the axis aligned metricsEuclidean,Chebyshev,MinkowskiandCityblock. Default ismetric = Euclidean()(note the instantiation of the metric).correspondence_measure: The function that computes the correspondence between actual values ofdriverand 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
-
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 ↩
-
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 ↩