TISEAN package: Difference between revisions

1,158 bytes removed ,  14 August 2015
→‎Testing for Nonlinearity: updated with good example
(→‎Tutorials: added section: testing for nonlinearity)
(→‎Testing for Nonlinearity: updated with good example)
Line 193: Line 193:


=== Testing for Nonlinearity ===
=== Testing for Nonlinearity ===
This section is discussed on the [http://www.mpipks-dresden.mpg.de/~tisean/Tisean_3.0.1/docs/chaospaper/node29.html#SECTION00080000000000000000 TISEAN documentation page]. One of the functions discussed is {{Codeline|d2}}. It is used to estimate the correlation sum, correlation dimension and correlation entropy of a time series. The time series used here will be the Henon map.
This section is discussed on the [http://www.mpipks-dresden.mpg.de/~tisean/Tisean_3.0.1/docs/chaospaper/node35.html#SECTION00090000000000000000 TISEAN documentation page]. The focus of this section will be the function {{Codeline|surrogates}}. It uses surrogate data to determine weather data is nonlinear. Let us first create the input data which will be a stationary Gaussian linear stochastic process. It is measured by {{Codeline|s(xn) = xn^3}}. We then run it through {{Codeline|surrogates}} and plot the data.
{{Code|Calculation correlation sum, dimension and entropy|<syntaxhighlight lang="octave" style="font-size:13px">
{{Code|Creating data from Gaussian process|<syntaxhighlight lang="octave" style="font-size:13px">
# Create maps
# Create Gaussian process data
hen      = henon (10000);
g = zeros (2000,1);
# Calculate the correlation sum, dimension and entropy
for i = 2:2000
vals = d2 (hen, 'd', 1, 'm', 5, 't',50);
  g(i) = 0.7 * g(i-1) + (-6 + sum (rand ([size(1), 12]), 3));
# Plot correlation sum
endfor
subplot (2,3,1)
# Create a measurement of it
do_plot_corr = @(x) loglog (x{1}(:,1),x{1}(:,2),'b');
spike = g.^3;
hold on
# Create the surrogate
arrayfun (do_plot_corr, {vals.c2});
sur  = surrogates (spike);
hold off
# Plot the data
xlabel ("Epsilon")
subplot (2,1,1)
ylabel ("Correlation sums")
plot (spike,'g');
title ("c2");
title ("spike")
# Plot correlation entropy
subplot (2,1,2)
subplot (2,3,4)
plot (sur,'b');
do_plot_entrop  = @(x) semilogx (x{1}(:,1),x{1}(:,2),'g');
title ("surrogate")
hold on
arrayfun (do_plot_entrop, {vals.h2});
hold off
xlabel ("Epsilon")
ylabel ("Correlation entropies");
title ("h2")
# Plot correlation dimension
subplot (2,3,[2 3 5 6])
do_plot_slope = @(x) semilogx (x{1}(:,1),x{1}(:,2),'r');
hold on
arrayfun (do_plot_slope, {vals.d2});
hold off
xlabel ("Epsilon")
ylabel ("Local slopes")
title ("d2");
</syntaxhighlight>}}
[[File:d2_out.png|400px|center]]
The output of {{Codeline|d2}} can be further processed using the following functions: {{Codeline|av_d2}}, {{Codeline|c2t}}, {{Codeline|c2g}}. This tutorial will show how to use {{Codeline|av_d2}} which smooths the output of {{Codeline|d2}} (usually used to smooth the "{{Codeline|d2}}" field of the output).
{{Code|Smooth output of d2|<syntaxhighlight lang="octave" style="font-size:13px">
# Smooth d2 output
figure 2
smooth = av_d2 (vals,'a',2);
# Plot the smoothed output
do_plot_slope = @(x) semilogx (x{1}(:,1),x{1}(:,2),'b');
hold on
arrayfun (do_plot_slope, {smooth.d2});
hold off
xlabel ("Epsilon")
ylabel ("Local slopes")
title ("Smooth");
</syntaxhighlight>}}
</syntaxhighlight>}}
[[File:tisean_av_d2_out.png|400px|center]]
[[File:tisean_av_d2_out.png|400px|center]]
Optionally the line "{{Codeline|figure 2}}" can be omitted, which will cause the smoothed version to be superimposed on the "raw" version that came straight from {{Codeline|d2}}.
It is crucial that the input to surro


[[Category:Octave-Forge]]
[[Category:Octave-Forge]]
156

edits