# Complex time series I, basics

Many of the data sets with which we usually work are in the form of **time series**. A **time series** can be seen as the evolution of a **dynamic system**, characterized by some **variables** and **parameters**. Depending on the type of dynamic of the system, the series may be **stationary**, **periodic**, **quasiperiodic**, **chaotic** or **random**. In this series of articles, I will focus on the characterization of **chaotic dynamics**, which is presented by **complex systems**, by using graphical methods.

If you are unsure what these **dynamical systems** are, in this article you can see a brief introduction to complex systems.

Although to graphically study these complex models you can use any program that allows you to generate graphics and work with mathematical functions, such as **R program**, I developed a helper application to create graphics using a simple graphical user interface and with which you can export the generated series, or import them from **R**, so that we can work with them also with this application. In this link you can download the executable and source code of the GraphStudy project, written in **CSharp** with **Visual Studio** **2013**.

## The GraphStudy tool

To begin, let's see how to start working with the **GraphStudy** tool. It is an application with which you can write up to three equations and generate a series of graphs from them. The grammar of these expressions is based on that explained in the article design of the grammar for an expressions analyser. You can use the operators **sum**, **difference**, **product**, **division**, and **exponentiation**, and I added the sine (**sin**) and cosine (**cos**) functions. Also you can use the constants **e** and **pi**, to which are automatically given the corresponding value. You can use parentheses to change the precedence of operators.

To write a new system of equations, in the **File** menu select the **New** option:

With the **dX / dt** button you can select if you want to write a system of differential equations or one with iterated functions:

We can have up to three variables; **X**, **Y** and **Z**. Whenever write an equation for one of the variables, the box for editing the next is activated. Thus, we can have equations for **X** and **Y**, but not for **Z** and **X**.

Once written the equations, they must be compiled using the **Build** button. Done this, it will appear in the toolbars the constants and variables used in the equations, and you can give them values to generate the series. As variables can be used only **X**, **Y** and **Z**, as constants, you can use any other text string in unlimited number.

In the **iterations** text box you can define the number of terms of the series you want to generate. If you use differential equations, you have also to define the time step in the **dt** text box.

## The logistic equation

One of the most common models to study the **chaotic dynamics** in **time series** is the **logistic equation**, which, in its reduced form, can be expressed as:

`Xn+1 = µXn(1-Xn)`

This simple equation is used in the study of population dynamics. The variable **X** takes values between 0 and 1. The key of this equation is in the μ parameter. Depending on its value, the series generated has a **stationary**, **periodic** or **chaotic** dynamics. The stationary dynamics is characterized by to tend to a single value. This equation has a stationary dynamic when μ is less than 3. From 3, the function becomes periodic. It begins oscillating between two values and, gradually, as increasing μ, the number of different values will double again and again, up to 3.57. From this value, the dynamics becomes chaotic, it appears sensitivity to initial conditions and the following values in the series begin to be unpredictable. In this link you can see an article to explore the logistic curve with R. With **GraphStudy** simply write the equation as an iterated function and click the **Build** button to compile:

In the toolbar it appears the constant **u**, to which you have to give a value between 0 and 4, and the variable **X**, which you have to give an initial value in the range (0, 1).

Once you have defined and built a system of equations, in the **File** menu you can use the **Save** or **Save as...** options to save it to a file; and you can open it later using the **Open...** option.

With the **Series** button you can generate the series corresponding to the selected parameters and initial values. For example, selecting a value for μ of 2.5, which belongs to the stationary domain of the series, and pressing the **Play** button on the window that appears when you press the **Series** button, you obtain the following graphic:

If you give to µ a value in the periodic zone, for example 3.2, you obtain a periodic series:

As an observation, look that there are a number of starting points in which the system is in an unstable situation until it reaches the final dynamics. Normally, in this series the N initial values are discarded to avoid having into account in the study these transient values, which are not characteristic of the series and can distort the results.

If you try with a value of μ in the **chaotic** zone, for example 3.7, you get the following result:

To check the sensitivity of the series to initial conditions, just open another window with the same equation and change the initial value of the variable **X**. generate the series, change the color of the graph in the window with the original series, by clicking on the button with the three points, and drag & drop the series generated with the new initial value on the window to superimpose them. In this example, you can see the difference between the series with an initial value of 0.1 and another one starting at 0.1001:

You can see that, at first, the two series match, but soon begin to take different values and diverged into two quite different series. We are in the presence of a **complex dynamic**.

The next article in the series is on using web diagrams to detect chaotic dynamics.