First, I've corrected some egregious typos and errors above. Let's ignore those and I'll restate how to proceed here, showing examples.
But let's simplify.
- Instead of inverting many lists, let's just invert the AMG list.
- Convert all lists to range from 0 to n, where a 0 value is worst, n is best
- Use the max value of a list as our normalizing scaling factor
- Use the weighted mean formula, setting the scale factors appropriately
- I've use simple list names - change to your own as necessary.
AMG now ranges from 0 to 5, at .5 increments, scaled as 0 to 10 with an increment of 1. Inverting, means a raw score of .5 (scaled 1) value will be a 4.5 (scaled 9) value.
Using the original example scores from above plus another sample, attached Example 1 shows the raw scores, AMG scaled and inverted scores, normalized scores, and both unweighted and weighted means.
We'll simply use the weighted score formula, setting the weights to be equal. Then, you can just change the weights if you want later, easily enough.
The formula for the weighted scores is then simple:
For all n's, the sum of all (weighted_scale_factor_n * normalized score_n)
For AMG, the normalized scores are calculated as:
(max scaled AMG - scaled AMG) / max AMG value
= (10 - ([AMG] * 2)) / 10
All other normalized scores are calculated as:
list score / max list value
In MC, here's the calculation:
math(
(.33 * ((10 - ([_AMG] * 2)) // 10)) +
(.33 * ([_L2] // 100 )) +
(.33 * ([_L3] // 300 ))
)
Now, let's include the 1001 list. It is simply a list of 0 or 1 values. You wanted to set the default value as 650/100, so that's equivalent to .65 normalized. And now that we have 4 lists, and each list's score contributes equally in weight (25%), we can just scale .65 by 25% to get a weight factor of .1625 for the 1001 list. If the 1001 list has a weight of .1625, all the other lists must contribute (1 - .1625) / 3 or 0.2791666667.
Example 2 shows some sample calculated values.
So the new formula for our 4 lists is now:
math(
(.2791666667 * ((10 - (formatnumber([_AMG],2) * 2)) // 10)) +
(.2791666667 * (formatnumber([_L2]) // 100 )) +
(.2791666667 * (formatnumber([_L3]) // 300 )) +
(.1625 * formatnumber([_L4]))
)
You can use calculated values for the weights if you want, rather than the hardcoded values I used - I wanted to simplify how the expression appear.
If you want to know how your new calculation compares to any given list, multiple it by the list size. For AMG, you'll have to multiply, invert, and then scale by .5.