gPoMo: Generalized Polynomial Modeling

gPoMoR Documentation

Generalized Polynomial Modeling


Algorithm for a Generalized Polynomial formulation of multivariate Global Modeling. Global modeling aims to obtain multidimensional models from single time series [1-2]. In the generalized (polynomial) formulation provided in this function, it can also be applied to multivariate time series [3-4].

Note that nS provides the number of dimensions used from each variable

case I
For nS=c(2,3) means that 2 dimensions are reconstructed from variable 1: the original variable X1 and its first derivative X2), and 3 dimensions are reconstructed from variable 2: the original variable X3 and its first and second derivatives X4 and X5. The generalized model will thus be such as:
dX1/dt = X2
dX2/dt = P1(X1,X2,X3,X4,X5)
dX3/dt = X4
dX4/dt = X5
dX5/dt = P2(X1,X2,X3,X4,X5).

case II
For nS=c(1,1,1,1) means that only the original variables X1, X2, X3 and X4 will be used. The generalized model will thus be such as:
dX1/dt = P1(X1,X2,X3,X4)
dX2/dt = P2(X1,X2,X3,X4)
dX3/dt = P3(X1,X2,X3,X4)
dX4/dt = P4(X1,X2,X3,X4).


  tin = NULL,
  dtFixe = NULL,
  dMax = 2,
  dMin = 0,
  nS = c(3),
  winL = 9,
  weight = NULL,
  show = 1,
  verbose = 1,
  underSamp = NULL,
  EqS = NULL,
  AndManda = NULL,
  OrMandaPerEq = NULL,
  IstepMin = 2,
  IstepMax = 2000,
  nPmin = 1,
  nPmax = 14,
  tooFarThr = 4,
  FxPtThr = 1e-08,
  LimCyclThr = 1e-06,
  nPminPerEq = 1,
  nPmaxPerEq = NULL,
  method = "rk4"



Input Time series: Each column is one time series that corresponds to one variable.


Input date vector which length should correspond to the input time series.


Time step used for the analysis. It should correspond to the sampling time of the input data. Note that for very large and very small time steps, alternative units may be used in order to stabilize the numerical computation.


Maximum degree of the polynomial formulation.


The minimum negative degree of the polynomial formulation (0 by default).


A vector providing the number of dimensions used for each input variables (see Examples 1 and 2). The dimension of the resulting model will be nVar = sum(nS).


Total number of points used for computing the derivatives of the input time series. This parameter will be used as an input in function drvSucc to compute the derivatives.


A vector providing the binary weighting function of the input data series (0 or 1). By default, all the values are set to 1.


Provide (2) or not (0-1) visual output during the running process.


Gives information (if set to 1) about the algorithm progress and keeps silent if set to 0.


Number of points used for undersampling the data. For undersamp = 1 the complete time series is used. For undersamp = 2, only one data out of two is kept, etc.


Model template including all allowed regressors. Each column corresponds to one equation. Each line corresponds to one polynomial term as defined by function poLabs.


AND-mandatory terms in the equations (all the provided terms should be in the equations).


OR-mandatory terms per equations (at least one of the provided terms should be in each equation).


The minimum number of integration step to start of the analysis (by default IstepMin = 10).


The maximum number of integration steps for stopping the analysis (by default IstepMax = 10000).


Corresponds to the minimum number of parameters (and thus of polynomial term) allowed.


Corresponds to the maximum number of parameters (and thus of polynomial) allowed.


Divergence threshold, maximum value of the model trajectory compared to the data standard deviation. By default a trjactory is too far if the distance to the center is larger than four times the variance of the input data.


Threshold used to detect fixed points.


Threshold used to detect the limit cycle.


Corresponds to the minimum number of parameters (and thus of polynomial term) allowed per equation.


Corresponds to the maximum number of parameters (and thus of polynomial) allowed per equation.


The integration technique used for the numerical integration. By default, the fourth-order Runge-Kutta method (method = 'rk4') is used. Other methods such as 'ode45' or 'lsoda' may also be chosen. See package deSolve for details.


A list containing:

$tin The time vector of the input time series

$inputdata The input time series

$tfiltdata The time vector of the filtered time series (boudary removed)

$filtdata A matrix of the filtered time series with its derivatives

$okMod A vector classifying the models: diverging models (0), periodic models of period-1 (-1), unclassified models (1).

$coeff A matrix with the coefficients of one selected model

$models A list of all the models to be tested $mToTest1, $mToTest2, etc. and all selected models $model1, $model2, etc.

$tout The time vector of the output time series (vector length corresponding to the longest numerical integration duration)

$stockoutreg A list of matrices with the integrated trajectories (variable X1 in column 1, X2 in 2, etc.) of all the models $model1, $model2, etc.


Sylvain Mangiarotti, Flavie Le Jean, Mireille Huc


[1] Gouesbet G. & Letellier C., 1994. Global vector-field reconstruction by using a multivariate polynomial L2 approximation on nets, Physical Review E, 49 (6), 4955-4972.
[2] Mangiarotti S., Coudret R., Drapeau L. & Jarlan L., Polynomial search and Global modelling: two algorithms for modeling chaos. Physical Review E, 86(4), 046205.
[3] Mangiarotti S., Le Jean F., Huc M. & Letellier C., Global Modeling of aggregated and associated chaotic dynamics. Chaos, Solitons and Fractals, 83, 82-96.
[4] S. Mangiarotti, M. Peyre & M. Huc, 2016. A chaotic model for the epidemic of Ebola virus disease in West Africa (2013-2016). Chaos, 26, 113112.

See Also

gloMoId, autoGPoMoSearch, autoGPoMoTest

autoGPoMoSearch, autoGPoMoTest, visuOutGP, poLabs, predictab, drvSucc


#Example 1
tin <- Ross76[,1]
data <- Ross76[,3]
out1 <- gPoMo(data, tin = tin, dMax = 2, nS=c(3), show = 1,
              IstepMax = 1000, nPmin = 9, nPmax = 11)
visuEq(out1$models$model1, approx = 4)

#Example 2
tin <- Ross76[,1]
data <- Ross76[,3]
# if some data are not valid (vector 'weight' with zeros)
W <- tin * 0 + 1
W[1:100] <- 0
W[700:1500] <- 0
W[2000:2800] <- 0
W[3000:3500] <- 0
out2 <- gPoMo(data, tin = tin, weight = W,
                 dMax = 2, nS=c(3), show = 1,
                 IstepMax = 6000, nPmin = 9, nPmax = 11)
visuEq(out2$models$model3, approx = 4)

#Example 3
tin <- Ross76[,1]
data <- Ross76[,2:4]
out3 <- gPoMo(data, tin=tin, dMax = 2, nS=c(1,1,1), show = 1,
              IstepMin = 10, IstepMax = 3000, nPmin = 7, nPmax = 8)
# the simplest model able to reproduce the observed dynamics is model #5
visuEq(out3$models$model5, approx = 3, substit = 1) # the original Rossler system is thus retrieved

#Example 4
tin <- Ross76[,1]
data <- Ross76[,2:3]
# model template:
EqS <- matrix(1, ncol = 3, nrow = 10)
EqS[,1] <- c(0,0,0,1,0,0,0,0,0,0)
EqS[,2] <- c(1,1,0,1,0,1,1,1,1,1)
EqS[,3] <- c(0,1,0,0,0,0,1,1,0,0)
visuEq(EqS, substit = c('X','Y','Z'))
out4 <- gPoMo(data, tin=tin, dMax = 2, nS=c(2,1), show = 1,
      EqS = EqS, IstepMin = 10, IstepMax = 2000,
      nPmin = 9, nPmax = 11)
visuEq(out4$models$model2, approx = 2, substit = c("Y","Y2","Z"))

#Example 5
# load data
#multiple (six) time series
tin <- TSallMod_nVar3_dMax2$SprK$reconstr[1:400,1]
TSRo76 <- TSallMod_nVar3_dMax2$R76$reconstr[,2:4]
TSSprK <- TSallMod_nVar3_dMax2$SprK$reconstr[,2:4]
data <- cbind(TSRo76,TSSprK)[1:400,]
# generalized Polynomial modelling
out5 <- gPoMo(data, tin = tin, dMax = 2, nS = c(1,1,1,1,1,1),
              show = 0, method = 'rk4',
              IstepMin = 2, IstepMax = 3,
              nPmin = 13, nPmax = 13)

# the original Rossler (variables x, y and z) and Sprott (variables u, v and w)
# systems are retrieved:
visuEq(out5$models$model347, approx = 4,
       substit = c('x', 'y', 'z', 'u', 'v', 'w'))
# to check the robustness of the model, the integration duration
# should be chosen longer (at least IstepMax = 4000)

GPoM documentation built on July 9, 2023, 6:23 p.m.