Chaos theory and fractal geometry: Constructing from data

812 Views Asked by At

I understand that fractal geometry represents behaviour of 'chaotic' system, if I am not wrong. And also, fractals are generated by a recursive function. But, lets say I have random data lying with me. For simplicity, lets say i have list of float values representing price of a particular product over a month. I want to see if the values fit into a fractal and draw it. How can I achieve this?

My motive is to see if there is any sort of pattern in the data.

2

There are 2 best solutions below

7
On BEST ANSWER

You could try trend-lines looking for the generator function and you could look for recursive sub-trendlines among the error values.
You could also plot the data on top of each other looking for a cantor set.
You could plot the data sequentially looking for a strange attractor.

The first column is some example data. This data is an example of chaotic data. I used the formula $x=4 * x *(1-x)$ as the generating function and added randomness to it, so it simulates what you might end up collecting.
This is the formula for the bifurcation fractal.
The second column is the first column shifted down one. This is how you would plot it sequentially. when you plot the points on a coordinate plane you get the image below. You can see that it looks like an inverted parabola and it is! Using more data would make the parabola clearer.

0.305372857624972 0.804020845211788
0.804020845211788 0.325491291512869
0.325491291512869 0.779803464138198
0.779803464138198 0.394154076391838
0.394154076391838 0.876924271655633
0.876924271655633 0.0958522787997829
0.0958522787997829 0.387014731516238
0.387014731516238 0.872526861148915
0.872526861148915 0.194631238286909
0.194631238286909 0.59625160628628
0.59625160628628 0.771960135020603
0.771960135020603 0.39577955474798
0.39577955474798 0.882509011035024
0.882509011035024 0.106385004019107
0.106385004019107 0.363729067802707
0.363729067802707 0.826503741808698
0.826503741808698 0.33967086709861
0.33967086709861 0.821094205678186
0.821094205678186 0.338647653662555
0.338647653662555 0.85991509512391
0.85991509512391 0.157460863377767
0.157460863377767 0.534514751325599
0.534514751325599 0.797401509576693
0.797401509576693 0.327754748707517
0.327754748707517 0.767182533144349
0.767182533144349
Plot of given data:

Chaotic data plotted on a chart

2000 values of data:
More data

0
On

The main problem is defining "fractal". It was originally intended to refer to only the most pathological of functions because they were "fractured" or corrupt. Now we know that even squares can be considered "fractals" under the right conditions, Hilbert mappings, multi-fractals, self-similarity.

Here's the most relevant advice to your problem.

Everything is Self-Similar: This might be surprising, but its true on a mathematical, philosophical, and physical basis. However, the self-similarity may not be what you desire. For instance, the letter $\mathbf A$ on your screen is self similar since you can squeeze the shape down to a line and use that resulting line to construct a new letter $\mathbf A$.

What we want is a measure of self-similarity: You could find the fractal dimensionality of your data set, for instance you could take the correlation dimension. However, every object has a dimensionality. Keep in mind that there are many "fractals" with integer dimensions. You could try identifying fractal transformations that are identities of the original object. However, many picture compression algorithms already do this and not all photos are fractals. In addition, I've already shown that objects that "clearly" aren't fractals can have self-similarity.

So what do I do? Use your gut, the saying "I know it when I see it" really applies here. And note that the non-integer dimensionality of your object is a good indicator that its a fractal.

My take: Prepare for some hand-wavy math... $$D_f={{\ln(N)} \over {\ln(S)}}$$ This should be familiar, its the formula for the box counting dimension, one of the only practical ways of determining a fractal's dimensionality. However, any object will have a box count, so in reality, this formula is rather useless for determining whether or not an object is a "fractal". So instead lets say that all geometrical objects are fractals, and instead lets focus on making a metric that measures how "efficient" a fractal is at self-similarity.

Heuristically, it would work something like this, an object that can be mapped onto itself with 5 transformations has a higher self-similarity index than say another object that takes 50 transformations to map onto itself. For instance, under this scheme, straight lines (2 transformations) would be more self-similar than the Sierpinski triangle (3 transformations). The goal then would be to find the minimum number of transformations that creates an object within some error margin of the original.

Heuristically, the equation would have an self-similarity index $S_i$ as an output, that relies on the minimum number of transformations needed $N_t$, and the error tolerance $\epsilon$. Obviously, $N_t \gt 1$. The index would go up if $N_t$ went up, and the index would go down if $\epsilon$ went down.

$$S_i=f(N_t,\epsilon)$$