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

Multidimensional version of RandomShuffle and BlockShuffle. #136

Open
kahaaga opened this issue Jan 16, 2023 · 1 comment
Open

Multidimensional version of RandomShuffle and BlockShuffle. #136

kahaaga opened this issue Jan 16, 2023 · 1 comment
Labels
enhancement New feature or request good first issue Good for newcomers method request

Comments

@kahaaga
Copy link
Member

kahaaga commented Jan 16, 2023

Is your feature request related to a problem? Please describe.

It would be nice to have more surrogate methods that operate on multidimensional input data. This becomes necessary in conditional independence testing for multivariate data, for example in the context of conditional mutual information with high-dimensional marginal spaces.

Currently, we only have the ShuffleDimensions multivariate surrogate, but shuffling the dimensions is not the desired behaviour when, for example, one wants to break temporal associations.

Describe the solution you'd like

The RandomShuffle and BlockShuffle surrogate methods can be straight-forwardly extended to multivariate Datasets (from the StateSpaceSets package) Since these methods just permute the indices of the datasets, they can also be used to shuffle the SVectors of a Dataset.

Implementation strategy

This should be pretty easy to implement. It is just a matter of allocating the proper re-useable storage container in the SurrogateGenerator struct. Instead of enforcing surrogenerator(x::AbstractVector, rf::RandomShuffle, args...), the first argument should be allowed to be any iterable surrogenerator(x, rf::RandomShuffle, args...) and similar(x)/copy(x) should be used to allocate the re-usable container.

@kahaaga kahaaga added enhancement New feature or request good first issue Good for newcomers method request labels Jan 16, 2023
@kahaaga
Copy link
Member Author

kahaaga commented Feb 17, 2023

Further info: AbstractDataset/Dataset is found in the StateSpaceSets.jl package. However, these types are going to change names in the StateSpaceSets.jl, so whoever implements need to use the correct name for the datasets.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers method request
Projects
None yet
Development

No branches or pull requests

1 participant