function eCE = CondEn( x, delay, order, windowSize )
computes efficiently conditional entropy of ordinal patterns from 1D time series in sliding windows for orders 1...8 of ordinal patterns [1].
See more ordinal-patterns based measures at www.mathworks.com/matlabcentral/fileexchange/63782-ordinal-patterns-based-analysis--beta-version-.
INPUT
- indata - 1D time series (1 x N points)
- delay - delay between points in ordinal patterns (delay = 1 means successive points)
- order - order of the ordinal patterns (order + 1 is the number of points in ordinal patterns)
- windowSize - size of sliding window (= number of ordinal patterns within sliding window)
OUTPUT
- outdata - values of conditional entropy of ordinal patterns (1 x (N - windowSize – (order+1)*delay) points since each sliding window contains windowSize ordinal patterns but uses in fact (windowSize + order*delay + 1) points).
CITING THE CODE
[a] Unakafova, Valentina (2015). Conditional entropy of ordinal patterns in sliding windows (fast algorithm), (www.mathworks.com/matlabcentral/fileexchange/48684-conditional-entropy-of-ordinal-patterns-in-sliding-windows--fast-algorithm-), MATLAB Central File Exchange. Retrieved Month Day, Year.
[b] Unakafov, A.M. and Keller, K., 2014. Conditional entropy of ordinal patterns. Physica D: Nonlinear Phenomena, 269, pp.94-102
[c] Unakafova, V.A., Keller, K., 2013. Efficiently measuring complexity on the basis of real-world data. Entropy, 15(10), 4392-4415.
EXAMPLE OF USE (with a plot):
indata = rand( 1, 7777 ); % generate random data points
for i = 4000:7000 % generate change of data complexity
indata( i ) = 4*indata( i - 1 )*( 1 - indata( i - 1 ) );
end
delay = 1; % delay 1 between points in ordinal patterns (successive points)
order = 3; % order 3 of ordinal patterns (4-points ordinal patterns)
windowSize = 512; % 512 ordinal patterns in one sliding window
outdata = CondEn( indata, delay, order, windowSize );
figure;
ax1 = subplot( 2, 1, 1 ); plot( indata, 'k', 'LineWidth', 0.2 );
grid on; title( 'Original time series' );
ax2 = subplot( 2, 1, 2 );
plot( length(indata) - length(outdata)+1:length(indata), outdata, 'k', 'LineWidth', 0.2 );
grid on; title( 'Values of conditional entropy of ordinal patterns' );
linkaxes( [ ax1, ax2 ], 'x' );
The method is based on precomputing values of successive ordinal patterns of order d, using the fact that they are "overlapped" in d=order points [4].
CHOICE OF ORDER OF ORDINAL PATTERNS
The larger order of ordinal patterns is, the better permutation entropy estimates complexity of the underlying dynamical system [2]. But for time series of finite length too large order of ordinal patterns leads to an underestimation of the complexity because not all ordinal patterns representing the system can occur [2]. Therefore, for practical applications, orders = 3...7 are often used [3,5,7]. In [2] the following rule for choice of order is recommended:
5*(order + 1)!(order +1) < windowSize.
though (order +2)! is usually sufficient.
CHOICE OF SLIDING WINDOW LENGTH
Window size should be chosen in such way that time series is stationary within the window (for example, for EEG analysis 2 seconds sliding windows are often used) so that distribution of ordinal patterns would not change within the window [3], [2, Section 2.2], [6, Section 5.1.2].
CHOICE OF DELAY BETWEEN POINTS IN ORDINAL PATTERNS
I would recommend choosing different delays and comparing results (see, for example, [2, Section 2.2-2.4] and [6, Chapter 5] for more details) though delay = 1 is often used for practical applications.
Choice of delay depends on particular data analysis you perform [2,5] and on sampling rate of the data. For example, if you are interested in low-frequency part of signals it makes sense to use larger delays.
REFERENCES
[1] Unakafov, A.M. and Keller, K., 2014. Conditional entropy of ordinal patterns. Physica D: Nonlinear Phenomena, 269, pp.94-102
[2] Keller, K., Unakafov, A.M. and Unakafova, V.A., 2014. Ordinal patterns, entropy, and EEG. Entropy, 16(12), pp.6212-6239.
[3] Bandt, C. and Pompe, B., 2002. Permutation entropy: a natural complexity measure for time series. Physical review letters, 88(17), p.174102.
[4] Unakafova, V.A. and Keller, K., 2013. Efficiently measuring complexity on the basis of real-world data. Entropy, 15(10), pp.4392-4415.
[5] Riedl, M., Muller, A. and Wessel, N., 2013. Practical considerations of permutation entropy. The European Physical Journal Special Topics, 222(2), pp.249-262.
[6] Unakafova, V.A., 2015. Investigating measures of complexity for dynamical systems and for time series (Doctoral dissertation, Ph. D. Thesis, draft version, University of Lubeck, Lubeck, Germany).
[7] Zanin, M., Zunino, L., Rosso, O.A. and Papo, D., 2012. Permutation entropy and its main biomedical and econophysics applications: a review. Entropy, 14(8), pp.1553-1577.
引用格式
Valentina Unakafova (2024). Conditional entropy of ordinal patterns (fast algorithm) (https://www.mathworks.com/matlabcentral/fileexchange/48684-conditional-entropy-of-ordinal-patterns-fast-algorithm), MATLAB Central File Exchange. 检索来源 .
MATLAB 版本兼容性
平台兼容性
Windows macOS Linux类别
- Sciences > Neuroscience > Human Brain Mapping > EEG/MEG/ECoG >
- Sciences > Neuroscience > Frequently-used Algorithms >
- Engineering > Biomedical Engineering > Biomedical Signal Processing >
标签
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!CE
版本 | 已发布 | 发行说明 | |
---|---|---|---|
1.2.4 | Cover picture has been changed |
||
1.2.3.2 | Description has been renewed |
||
1.2.3.1 | Description is renewed |
||
1.2.3.0 | Description is renewed |
||
1.2.2.0 | Example of use is corrected |
||
1.2.1.0 | Example of use is added |
||
1.2.0.0 | Cover picture has been added |
||
1.1.0.0 | 1 Error in computing values of conditional entropy of ordinal patterns in sliding windows is corrected
|
||
1.0.0.0 | - |