Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dimension of source embedding must be 1 to be applicable with surrogate methods ? #355

Open
Datseris opened this issue Oct 5, 2023 · 2 comments
Labels
design-discussion Decisions must be made

Comments

@Datseris
Copy link
Member

Datseris commented Oct 5, 2023

I am confused about the surrogate significance tests...

I get Dimension of source embedding must be 1 to be applicable with surrogate methods if I do something like

embedding = EmbeddingTE(; dS = 3, dT = 3, dC = 3)
estimator = FPVP()
test = SurrogateTest(TEShannon(; embedding), estimator; nshuffles = 100)

and then call independence. How does this limitation makes sense from a scientific perspective? Surely estimating the transfer entropy with only 1 dimension (and hence, no going into the past at all) from the source doesn't really make sense given the definition of transfer entropy, right?

How does this limitation come about? Why is it not possible to first shuffle the source timeseries and then embed it (which is what I would expect would happen)?

@Datseris Datseris added the design-discussion Decisions must be made label Oct 5, 2023
@kahaaga
Copy link
Member

kahaaga commented Oct 5, 2023

This is also related to JuliaDynamics/TimeseriesSurrogates.jl#136.

Surely estimating the transfer entropy with only 1 dimension rom the source doesn't really make sense given the definition of transfer entropy, right?

It does, because TE(x-y) = CMI(y(t+1), x(t)^(-) | y(t)^(-)), where ^(-) indicated an embedding with negative lags. The embedding may be 1-dimensional, meaning that you just use the raw time series. This is perfectly valid, and for very short time series, a 1-dimensional embedding for each marginal is the only reasonable thing to do.

Why is it not possible to first shuffle the source timeseries and then embed it (which is what I would expect would happen)?

This is a design choice. In the current implementation, I decided to shuffle the relevant marginal after embedding (I think because I figured it would save some allocations of new StateSpaceSets for all marginals for every surrogate realization). It is also, of course, possible to shuffle before embedding. I think we should enable both approaches.

@kahaaga
Copy link
Member

kahaaga commented Oct 5, 2023

In fact, we have to enable both approaches to not be too restrictive here. It may happens that one wants to consider multiple timeseries together as the source, and then one would have to use multidimensional surrogates, like described in JuliaDynamics/TimeseriesSurrogates.jl#136

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
design-discussion Decisions must be made
Projects
None yet
Development

No branches or pull requests

2 participants