I'm running an experiment where I'm continuously sampling from a dial hooked into a physiological recorder as a hack because the dial won't interface with the equipment we're using any other way. By way of the connection, the terminal ends of the dial record at 100 and 21.07 with every value (to the hundredths) represented at other positions along its continuum.

Ultimately I need to normalize these values to a range of 0-100 because that's how we're reporting ratings and how we described the ratings procedure to the subjects. I was using this formula - How to normalize data to 0-1 range? - but have a potential problem.

In this situation the (maximum) value 100 represents the rating of 0 and the (minimum) value of 21.07 represents 100. This obviously messes up my final values if I use the data and formula as is.

I tried the following: I first made all values negative (e.g. minimum value is now -100 and maximum is now -21.07) to flip the min-max continuum. I then simply changed the formula in the link to make both subtraction signs into addition signs. This was my final equation.

$$z_i = \frac{x_i + min(x)}{max(x) + min(x)} * 100$$

The problem is, I'm not sure if this is mathematically sound. Looking at the converted values, they don't seem right either from what I know of participant behavior (e.g. the middle values that look like they should be 50 are coming up as 16).

Is there a normalization process I can use specific to my situation where the max value is actually the min?

  • 2
    $\begingroup$ Take the formula you were given. Subtract its value from $1$. Done. $\endgroup$
    – whuber
    Dec 20, 2016 at 1:54
  • 1
    $\begingroup$ Just to spell out what Bill Huber said. You start with (x_i -min(x))/(max(x)-min(x)). This gives number between 0 and 1. Doing what Bill suggests gives you (max(x)-x_i)/(max(x)-min(x)) also between 0 and 1 but perfectly negatively correlated with the original measure. $\endgroup$ Dec 20, 2016 at 3:47
  • $\begingroup$ Then multiply by 100 if you want it moved to [0,100]. $\endgroup$ Dec 20, 2016 at 3:49
  • $\begingroup$ Thanks guys. This seems way more reasonable in terms of the results I'm getting. Appreciate the help. $\endgroup$ Dec 20, 2016 at 20:39

1 Answer 1


I know you've got your answer but I want to clarify something...

  1. This is a case of reversed scale min max normalization.
    That means - best value is 21.07 and worst value is 100 (for your case).
    Here you should use: $$ x_{normalized} = \frac{max(x)-x_i}{max(x)-min(x)} $$ Example:
    If your normalizing $x_i = 99$ the result should be closer to 0. $$ x_{normalized} = \frac{100-x_i}{100-21.07}=\frac{100-99}{78.93}=0.013 $$
  2. In most cases the formula used for min max scaling is: $$ x_{normalized} = \frac{x_i-min(x)}{max(x)-min(x)} $$ Example:
    If your normalizing $x_i = 99$ the result should be closer to 1.
    Big values produce big results. $$ x_{normalized} = \frac{x_i-21.07}{100-21.07}=\frac{99-21.07}{78.93}=0.987 $$

In both cases:
max(x) - represents the maximum value of the entire population (mesurements)
min(x) - represents the minimum value found in the entire population (mesurements)

Sidenote - a more generalized approach
There is a common issue in MOGA Multi-Objective Genetic Algorithm optimization where the algorithm can minimize the objective function f(x,y). In here sometimes we want to switch from minimization to maximization of the objective function. We can do that in two ways:

  1. Revese scale with unknown range. if you don't know the range of values. Just slap a (-1) multiplication: $$ f(x,y) = (-1)*f(x,y) $$ Example using our normalization formula: $$ (-1)*x_{normalized} = (-1)*0.987 = -0.987 $$ The values are negative (and harder for humans to interpret) but are in correct order of importance.
    Big values $x_i = 99$ get more negative results (smaller) -0.987
    Small values like $x_i = 30$ get more positive results (bigger) -0.113
    Reversed scale just like you want.
    Easy to interpret for computers: $$x_{normalized}(99)<x_{normalized}(30)$$ $$-0.987 < -0.113$$

  2. Revese scale with known range, if you know your range of function values is 0-1. $max_{range} = 1$ of our function (normalized range).
    Example using our normalization formula: $$ max_{range}-x_{normalized} = 1-x_{normalized} = 1-0.987 = 0.013 $$ The advantage of this formula is that you keep the 0-1 range.

Cudos to whuber for providing the shortest answer with a useful formula. Hope my answer provides some light on why use this or that and how it works to next users faced with these problems.

All the best from Ro


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.