Skip to main content

Manifold Dimensional Expansion

Project description

Manifold Dimensional Expansion (MDE)


Manifold dimensional expansion is a causal discovery and dimensionality reduction technique designed to identify low dimensional maximally predictive observables of a dynamical system with multivariate observations.

The algorithm is based on a greedy implementation of the generalized Takens embedding theorem. However, instead of using time delays for dimensionality expansion, observables that improve the forecast skill of a target variable are added until no further improvement can be achieved. The default predictor is the simplex function in pyEDM providing a fully nonlinear predictor from Empirical Dynamic Modeling (EDM).

Specifically, given a target observable, scan all other observables to find the best 1-D predictor of the target, ensuring the predictor has causal inference with the target. With this 1-D vector scan all remaining observables to find the 2-D embedding with best predictability and causal inference. This greedy algorithm is iterated up to the point that no further prediction skill improvement can be produced.

Causal inference is performed by default with Convergent Cross Mapping (CCM) ensuring the added observable is part of the dynamical system of the interrogated time series. The embedding dimension needed for CCM is automatically determined if parameter E=0, the default. Otherwise the specifed value of E is used. To account for unobserved variables time delay vectors of the top observables can be added.

Output is a DataFrame with a ranked list of observation vectors and predictive skill satisfying MDE criteria for the target variable.


Installation

python -m pip install dimx

Documentation

Documentation is available at MDE Docs


Usage

MDE is an object-oriented class implementation with command line interface (CLI) support. CLI parameters are configured through command line arguments, MDE class arguments through the MDE class constuctor.

MDE can be imported as a module and executed with dimx.Run() or from the command line with theManifoldDimExpand.py executable as shown below.

CLI example:

./ManifoldDimExpand.py -d ../data/Fly80XY_norm_1061.csv 
-rc index FWD Left_Right -D 10 -t FWD -l 1 300 -p 301 600
-C 10 -ccs 0.01 -emin 0.5 -P -title "MDE FWD" -v

MDE class constructor API example:

from dimx import MDE
from pandas import read_csv

df = read_csv( './data/Fly80XY_norm_1061.csv' )

mde = MDE( df, target = 'FWD', 
           removeColumns = ['index','FWD','Left_Right'], 
           D = 10, lib = [1,300], pred = [301,600], ccmSeed = 12345,
           cores = 10, plot = True, title = "MDE FWD" )

mde.Run()

mde.MDEOut
  variables       rho
0      TS33  0.652844
1       TS4  0.792290
2      TS17  0.823024
3      TS71  0.840094
4      TS44  0.840958
5      TS37  0.845765
6       TS9  0.846601
7      TS30  0.859614
8      TS47  0.860541
9      TS67  0.860230

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dimx-1.1.2.tar.gz (624.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dimx-1.1.2-py3-none-any.whl (627.1 kB view details)

Uploaded Python 3

File details

Details for the file dimx-1.1.2.tar.gz.

File metadata

  • Download URL: dimx-1.1.2.tar.gz
  • Upload date:
  • Size: 624.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.6

File hashes

Hashes for dimx-1.1.2.tar.gz
Algorithm Hash digest
SHA256 0bbf50240df89854b67c4a6141760c461d849572cfd30cd79dbf0b52bce0e5f8
MD5 4d883e6859e10009c945b3e6873e9c21
BLAKE2b-256 cb988a34c1fd8ac5b59a64bf943e884b044ad32b7beb860ee11f8bc3a174d613

See more details on using hashes here.

File details

Details for the file dimx-1.1.2-py3-none-any.whl.

File metadata

  • Download URL: dimx-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 627.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.6

File hashes

Hashes for dimx-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 40bef7e0c1d903221ca8f4fec0956602a24d9eeb708f1c5f6f2667e7c6487c83
MD5 827ae05b292b1add33174e6213648101
BLAKE2b-256 ece3420de576ebe5bd2f30d18a89c80c6ef0500c84c4cc9490aa793c592e5b82

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page