How to normalize statistics for a radar map

I use raphaelJS to draw a "radar chart" to display statistics. For each axis, it must take values ​​from 0 to 10.

For example, polygon icons with its center point right in the center of the diagram [10,10,10,10,10,10]. Plain...

However, it may happen that the data looks like this:

[26, 14, 48, 18, 1], [ 3, 14, 8, 9, 5], [10, 6, 4, 16, 3] 

which leads to this (displaying the polygon with its center point in the lower left corner of the diagram):

radar off scale

If I normalized the data based on its largest value (in this case 48), all the other central points would be too close to the center of the diagram, and its informative value would be about 0.


the same data are normalized based on its highest value:

 [5.42, 2.92, 10, 3.75, 0.21], [0.63, 2.92, 1.67, 1.88, 1.04], [2.08, 1.25, 0.83, 3.34, 0.63] 

radar normalized

So, now all the other central points are grouped in the center of the diagram and have lost all their explanatory power ... If there were more than three central points, they most likely overlapped each other.

centered

I was thinking of a relative way to display each polygon without losing too much relationship between each polygon, if possible ...

Any ideas how to do this, or maybe another approach, how to normalize?

+3
source share
2 answers

Converting your data to a logarithmic scale is not an option?

Thus, several extreme values ​​will not distort / interpret other values. Just calculate the total / natural logarithm of the values ​​of your array (e.g. see the w3school page on it ) and pass them to the chart API.

+2
source

As suggested by @daroczig , log data conversion is the way to go. I just wanted to add that there are many types of conversions that you can perform.

Perhaps an example might help with this. I will use the Parallel Coordinates visualization to illustrate this example, but the same concepts should apply for the Radar chart . All experiments are performed in MATLAB.

Consider the Fisher Iris dataset , it contains 150 instances, where each point has 4 dimensions. If we add an ejection point outside the normal range, we get:

org-vs-outlier

As expected, the chart will scale to accommodate a new point, but as a result we lose the detailed view that we had before.

The answer is to normalize the data by applying some kind of transformation. The following is a comparison of four different transformations:

  • Min / Max normalization :

    x_new = (x-min)/(max-min) , so x_new in [0,1]

  • Z-standardization :

    x_new = (x-mean)/std , where x_new ~ N(0,1)

  • softmax normalization with logistic sigmoid :

    x_new = 1/(1+exp(-(x-mean)/std)) and x_new in [0,1]

  • energy normalization :

    x_new = x / ||x|| such that x_new in [0,1] (make each point a unit vector)

minmax-standarize-softmax-energy

+11
source

Source: https://habr.com/ru/post/918881/


All Articles