# Multivariate Multiscale Entropies

## Functions for estimating the multivariate multiscale entropy of a multivariate dataset.

Multivariate multiscale entropy can be calculated using any of the Multivariate Entropies: `MvCoSiEn`, `MvDispEn`, `MvFuzzEn`, `MvPermEn`, `MvSampEn`.

Important

Multivariate multiscale entropy functions have two positional arguments:

1. the multivariate dataset, `Data`, a N (>10) x M (>1) matrix

2. the multiscale entropy object, `Mobj`.

MSobject(EnType='SampEn', **kwargs)

MSobject creates an object to store multiscale entropy parameters.

```[Mobj] = MSobject()
```

Returns a multiscale entropy object (`Mobj`) based on that originally proposed by Costa et al. using the following default parameters: EnType = ‘SampEn’, embedding dimension = 2, time delay = 1, radius = 0.2*SD(`Sig`), logarithm = natural

```[Mobj] = MSobject(EnType)
```

Returns a multiscale entropy object using the specified entropy method (`EnType`) and the default parameters for that entropy method. To see the default parameters for a particular entropy method, type: help(EnType) (e.g. `help(SampEn)`)

```[Mobj] = MSobject(EnType, keyword = value, ...)
```

Returns a multiscale entropy object using the specified entropy method (`EnType`) and the name/value parameters for that particular method. To see the default parameters for a particular entropy method, type: help(EnType) (e.g. `help(SampEn)`)

`EnType` can be any of the following (case sensitive) string names:

Base Entropies:
`'ApEn'`:
• Approximate Entropy

`'SampEn'`:
• Sample Entropy

`'FuzzEn'`:
• Fuzzy Entropy

`'K2En'`:
• Kolmogorov Entropy

`'PermEn'`:
• Permutation Entropy

`'CondEn'`:
• Conditional Entropy

`'DistEn'`:
• Distribution Entropy

`'DispEn'`:
• Dispersion Entropy

`'SpecEn'`:
• Spectral Entropy

`'SyDyEn'`:
• Symbolic Dynamic Entropy

`'IncrEn'`:
• Increment Entropy

`'CoSiEn'`:
• Cosine Similarity Entropy

`'PhasEn'`:
• Phase Entropy

`'SlopEn'`:
• Slope Entropy

`'BubbEn'`:
• Bubble Entropy

`'GridEn'`:
• Grid Distribution Entropy

`'EnofEn'`:
• Entropy of Entropy

`'AttnEn'`:
• Attention Entropy

`'DivEn'`:
• Diversity Entropy

`'RangEn'`:
• Range Entropy

Cross Entropies:
`'XApEn'`:
• Cross-Approximate Entropy

`'XSampEn'`:
• Cross-Sample Entropy

`'XFuzzEn'`:
• Cross-Fuzzy Entropy

`'XK2En'`:
• Cross-Kolmogorov Entropy

`'XPermEn'`:
• Cross-Permutation Entropy

`'XCondEn'`:
• Cross-Conditional Entropy (corrected)

`'XDistEn'`:
• Cross-Distribution Entropy

`'XSpecEn'`:
• Cross-Spectral Entropy

Multivariate Entropies:
`'MvSampEn'`:
• Multivariate Sample Entropy

`'MvFuzzEn'`:
• Multivariate Fuzzy Entropy

`'MvDispEn'`:
• Multivariate Dispersion Entropy

`'MvCoSiEn'`:
• Multivariate Cosine Similarity Entropy

`'MvPermEn'`:
• Multivariate Permutation Entropy

`MSEn`, `MvMSEn`, `cMSEn`, `cMvMSEn`, `rMSEn`, `hMSEn`, `XMSEn`, `rXMSEn`, `cXMSEn`, `hXMSEn`

The following functions use the multiscale entropy object shown above.

MvMSEn(Data, Mbjx, Scales=3, Methodx='coarse', Plotx=False)

MvMSEn Returns the multivariate multiscale entropy of a multivariate dataset.

```MSx,CI = MvMSEn(Data, Mobj)
```

Returns a vector of multivariate multiscale entropy values (`MSx`) and the complexity index (`CI`) of the data sequences in `Data` using the parameters specified by the multiscale object (`Mobj`) over 3 temporal scales with coarse- graining (default).

Caution

By default, the `MvSampEn` and `MvFuzzEn` multivariate entropy algorithms estimate entropy values using the “full” method by comparing delay vectors across all possible `m+1` expansions of the embedding space as applied in [1]. These methods are not lower-bounded to 0, like most entropy algorithms, so `MvMSEn` may return negative entropy values if the base multivariate entropy function is `MvSampEn` and `MvFuzzEn`, even for stochastic processes…

```MSx,CI = MvMSEn(Data, Mobj, keyword = value, ...)
```

Returns a vector of multivariate multiscale entropy values (`MSx`) and the complexity index (`CI`) of the data sequences in `Data` using the parameters specified by the multiscale object (`Mobj`) and the following `keyword` arguments:

Scales:
• Number of temporal scales, an integer > 1 (default: 3)

Methodx:
• Graining method, one of the following: [default: `'coarse'`] {`'coarse'`, `'modified'`, `'generalized'`}

Plotx:
• When `Plotx == True`, returns a plot of the entropy value at each time scale (i.e. the multiscale entropy curve) [default: False]

For further info on these graining procedures see the EntropyHub guide.

`MSobject`, `cMvMSEn`, `MvFuzzEn`, `MvSampEn`, `MvPermEn`, `MvCoSiEn`, `MvDispEn`

References:
[1] Ahmed Mosabber Uddin, Danilo P. Mandic

“Multivariate multiscale entropy analysis.” IEEE signal processing letters 19.2 (2011): 91-94.

[2] Madalena Costa, Ary Goldberger, and C-K. Peng,

“Multiscale entropy analysis of complex physiologic time series.” Physical review letters 89.6 (2002): 068102.

[3] Vadim V. Nikulin, and Tom Brismar,

“Comment on “Multiscale entropy analysis of complex physiologic time series”.” Physical Review Letters 92.8 (2004): 089803.

[4] Madalena Costa, Ary L. Goldberger, and C-K. Peng.

“Costa, Goldberger, and Peng reply.” Physical Review Letters 92.8 (2004): 089804.

[5] Madalena Costa, Ary L. Goldberger and C-K. Peng,

“Multiscale entropy analysis of biological signals.” Physical review E 71.2 (2005): 021906.

[6] Ranjit A. Thuraisingham and Georg A. Gottwald,

“On multiscale entropy analysis for physiological data.” Physica A: Statistical Mechanics and its Applications 366 (2006): 323-332.

[7] Ahmed Mosabber Uddin, Danilo P. Mandic

“Multivariate multiscale entropy: A tool for complexity analysis of multichannel data.” Physical Review E 84.6 (2011): 061918.

cMvMSEn(Data, Mbjx, Scales=3, Refined=False, Plotx=False)

cMvMSEn Returns the composite + refined-composite multivariate multiscale entropy of a multivariate dataset.

```MSx,CI = cMvMSEn(Data, Mobj)
```

Returns a vector of composite multivariate multiscale entropy values (`MSx`) and the complexity index (`CI`) of the data sequences in `Data` using the parameters specified by the multiscale object (`Mobj`) over 3 temporal scales with coarse- graining (default).

Caution

By default, the `MvSampEn` and `MvFuzzEn` multivariate entropy algorithms estimate entropy values using the “full” method by comparing delay vectors across all possible `m+1` expansions of the embedding space as applied in [1]. These methods are not lower-bounded to 0, like most entropy algorithms, so `MvMSEn` may return negative entropy values if the base multivariate entropy function is `MvSampEn` and `MvFuzzEn`, even for stochastic processes…

```MSx, CI = cMvMSEn(Data, Mobj, Refined = True)
```

Returns a vector of refined-composite multiscale entropy values (`MSx`) for the data sequences in (`Data`) using the parameters specified by the multiscale object (`Mobj`) using the refined-composite multivariate multiscale entropy method (rcMSE) over 3 temporal scales. When `Refined == True`, the base entropy method must be `MvSampEn` or `MvFuzzEn`. If the entropy method is `MvSampEn`, cMvMSEn employs the method described in [1]. If the entropy method is `MvFuzzEn`, cMvMSEn employs the method described in [5].

```MSx,CI = cMvMSEn(Data, Mobj, keyword = value, ...)
```

Returns a vector of composite multivariate multiscale entropy values (`MSx`) and the complexity index (`CI`) of the data sequences in `Data` using the parameters specified by the multiscale object (`Mobj`) and the following `keyword` arguments:

Scales:
• Number of temporal scales, an integer > 1 (default: 3)

Refined:
• Refined-composite MvMSEn method. When `Refined == True` and the entropy function specified by `Mobj` is `MvSampEn` or `MvFuzzEn`, `cMvMSEn` returns the refined-composite multivariate multiscale entropy (rcMSEn) [default: False]

Plotx:
• When `Plotx == True`, returns a plot of the entropy value at each time scale (i.e. the multiscale entropy curve) [default: False]

For further info on these graining procedures see the EntropyHub guide.

`MSobject`, `MvMSEn`, `MvFuzzEn`, `MvSampEn`, `MvPermEn`, `MvCoSiEn`, `MvDispEn`

References:
[1] Shuen-De Wu, et al.,

“Time series analysis using composite multiscale entropy.” Entropy 15.3 (2013): 1069-1084.

[2] Shuen-De Wu, et al.,

“Analysis of complex time series using refined composite multiscale entropy.” Physics Letters A 378.20 (2014): 1369-1374.

[3] Ahmed Mosabber Uddin, Danilo P. Mandic

“Multivariate multiscale entropy: A tool for complexity analysis of multichannel data.” Physical Review E 84.6 (2011): 061918.

[4] Ahmed Mosabber Uddin, Danilo P. Mandic

“Multivariate multiscale entropy analysis.” IEEE signal processing letters 19.2 (2011): 91-94.

[5] Azami, Alberto Fernández, Javier Escudero.

“Refined multiscale fuzzy entropy based on standard deviation for biomedical signal analysis.” Medical & biological engineering & computing 55 (2017): 2037-2052.