pyhctsa.operations.correlation.oversampling

pyhctsa.operations.correlation.oversampling(y)

Detects temporal oversampling relative to a series’ own dynamics.

Implements the oversampling-detection statistic eta (and its downsampling correction) from the ‘oversampling’ stage of the Chaos Decision Tree Algorithm [1]:

\[\eta = \frac{\mathrm{range}(y)}{\langle |\Delta y| \rangle}\]

A large eta means consecutive samples are, on average, tiny relative to the full dynamic range the series explores – i.e., the series is sampled much faster than its own dynamics move, so consecutive points are close to redundant. Toker et al. flag eta > 10 as ‘oversampled’: this inflates the apparent smoothness/determinism of a series and can bias downstream nonlinear statistics (their motivation: left uncorrected, it distorts their 0-1 test for chaos – cf. zero_one_test). Their correction is to iteratively halve the sampling rate (keep every second point) until eta <= 10 or fewer than 100 points remain.

cf. zero_one_test for the chaos-classification stage of the same pipeline, and permutation_entropy/surrogate_test for its stochasticity-testing stage; this function covers the oversampling-diagnosis stage instead. Note eta is scale- and location-invariant (a ratio of two amplitude-unit quantities), so z-scored or raw y give identical results.

References

Parameters:
y : array-like

The input time series.

Returns:

Dictionary containing:
  • ’eta’: The oversampling statistic, range(y)/mean(|diff(y)|).

  • ’etaRobust’: The same ratio with range replaced by a 5th-95th percentile range, since eta’s numerator (a global max-min) is a single-outlier-sensitive statistic; etaRobust asks the same oversampling question without letting one extreme point set the scale.

  • ’numHalvings’: The number of times Toker et al.’s halving procedure would downsample y before eta <= 10 (or fewer than 100 points would remain) – a direct, interpretable severity measure.

  • ’etaAfterDownsampling’: The value of eta after applying numHalvings halvings (<=10, unless the series was too short to fully correct).

Return type:

dict