# gloMoId: Global Model Identification In GPoM: Generalized Polynomial Modelling

 gloMoId R Documentation

## Global Model Identification

### Description

Algorithm for global modelling in polynomial and canonical formulation of Ordinary Differential Equations. Univariate Global modeling aims to obtain multidimensional models from single time series (Gouesbet & Letellier 1994, Mangiarotti et al. 2012). An example of such application can be found in Mangiarotti et al. (2014) For a multivariate application, see `GPoMo` (Mangiarotti 2015, Mangiarotti et al. 2016).

Example:
For a model dimension nVar=3, the global model will read:
`dX1/dt = X2`
`dX2/dt = X3`
`dX3/dt = P(X1,X2,X3).`

### Usage

``````gloMoId(
series,
tin = NULL,
dt = NULL,
nVar = NULL,
dMax = 1,
dMin = 0,
weight = NULL,
show = 1,
filterReg = NULL,
winL = 9
)
``````

### Arguments

 `series` The original data set: either a single vector corresponding to the original variable; Or a matrix containing the original variable in the first column and its successive derivatives in the next columns. In the latter case, for the construction of n-dimensional model, `series` should have `nVar+1` columns since one more derivative will be necessary to identify the model parameters. Variable `nVar` will be set equal to n. In the former case, that is when only a single vector is provided, the derivatives will be automatically recomputed. Therefore, the dimension nVar expected for the model has to be provided. `tin` Input date vector which length should correspond to the input time series. `dt` Sampling time of the input time series. `nVar` Number of variables considered in the polynomial formulation. `dMax` Maximum degree of the polynomial formulation. `dMin` The minimum negative degree of the polynomial formulation (0 by default). `weight` A vector providing the binary weighting function of the input data series (0 or 1). By default, all the values are set to 1. `show` Provide (2) or not (0-1) visual output during the running process. `filterReg` A vector that specifies the template for the equation structure (for one single equation). The convention defined by `poLabs` is used. Value is 1 if the regressor is available, 0 if it is not. `winL` 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.

### Value

`A` list of five elements :

`\$init` The original time series and the successive derivatives used for the modeling.

`\$filterReg` The structure of the output model. Value is 1 if the regressor is available, 0 if it is not. The terms order is given by function `poLabs`.

`\$K` Values of the identified coefficients corresponding to the regressors defined in `filterReg`.

`\$resTot` The variance of the residual signal of the model.

`\$resSsMod` The variance of the residual signal of the closer submodels.

`\$finalWeight` Weighting series after boundary values were removed.

### Author(s)

Sylvain Mangiarotti, Laurent Drapeau, Mireille Huc

### References

 Gouesbet G., Letellier C., Global vector-field reconstruction by using a multivariate polynomial L2 approximation on nets, Physical Review E, 49 (6), 4955-4972, 1994.
 Mangiarotti S., Coudret R., Drapeau L., & Jarlan L., Polynomial search and global modeling : Two algorithms for modeling chaos, Physical Review E, 86, 046205, 2012.
 Mangiarotti S., Drapeau L. & Letellier C., Two chaotic models for cereal crops observed from satellite in northern Morocco. Chaos, 24(2), 023130, 2014.
 Mangiarotti S., Low dimensional chaotic models for the plague epidemic in Bombay (1896-1911), Chaos, Solitons & Fractals, 81(A), 184-196, 2015.
 Mangiarotti S., Peyre M. & Huc M., A chaotic model for the epidemic of Ebola Virus Disease in West Africa (2013-2016). Chaos, 26, 113112, 2016.

`gPoMo`, `autoGPoMoSearch`, `autoGPoMoTest`, `poLabs`

### Examples

``````
#############
# Example 1 #
#############
data("Ross76")
tin <- Ross76[,1]
data <- Ross76[,2:3]

# Polynomial identification
reg <- gloMoId(data[0:500,2], dt=1/100, nVar=2, dMax=2, show=0)

#############
# Example 2 #
#############
data(NDVI)

# Definition of the Model structure
terms <- c(1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1)
poLabs(3,3)[terms==1]
reg <- gloMoId(NDVI [,1:1], dt=1/125, nVar=3, dMax=3,
show=0, filterReg=terms==1)

#############
# Example 3 #
#############
data("Ross76")
# time vector
tin <- Ross76[1:500,1]
# single time series
series <- Ross76[1:500,3]
series[1:100] <- series[1:100] + 0.01 * runif(1:100, min = -1, max = 1)
series[301:320] <- series[301:320] + 0.05 * runif(1:20, min = -1, max = 1)
# weighting function
W <- tin * 0 + 1
W[1:100] <- 0  # the first hundred values will not be considered
W[301:320] <- 0  # twenty other values will not be considered either
reg <- gloMoId(series, dt=1/100, weight = W, nVar=3, dMax=2, show=1)
visuEq(reg\$K, 3, 2, approx = 4)
# first weight which value not equal to zero:
i1 = which(reg\$finalWeight == 1)
v0 <-  reg\$init[i1,1:3]

reconstr <- numicano(nVar=3, dMax=2, Istep=5000, onestep=1/250, PolyTerms=reg\$K,
v0=v0, method="ode45")
plot(reconstr\$reconstr[,2], reconstr\$reconstr[,3], type='l', lwd = 3,
main='phase portrait', xlab='time t', ylab = 'x(t)', col='orange')
# original data:
lines(reg\$init[,1], reg\$init[,2], type='l',
main='phase portrait', xlab='x', ylab = 'dx/dt', col='black')
# initial condition
lines(v0, v0, type = 'p', col = 'red')

``````

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