Best ZScore scaling

JenniferMurphy

Well-known Member
Joined
Jul 23, 2011
Messages
2,687
Office Version
  1. 365
Platform
  1. Windows
I am working on a macro to generate a composite rating for products that are rated on multiple properties. I convert each separate rating to a z score. This puts them all on a common scale. (Mean = 0, Standard Deviation = 1.) I then add up the z scores.

With z scores, it is a little difficult to get a good sense of the relative ratings. The table below has ratings for price and battery life. The corresponding z scores are in columns D & G. The sum of the z scores is in column I. Product D gets the top rating of 2.2812. In second place is Product I with a z score of 2.2556. But how much better is D than I.

My first thought was to "scale" the z scores so that the top score = 100 and the rest retain their relative value in proportion to that one. That is the contents of column K. That looks a lot better to me. We are used to rating things as percentages, so the 100 max looks good. Now we can see that D is less than 2 points better than I, but there is then is a gap of over 25 points to Product A in 3rd place.

I like that the z scores have a mean of zero. That says to me that the ones with a negative sore are less than average.

But I noticed that the lowest score is not -100. In some cases, it can be a lot lower. So my next thought was to scale it so that the top is 100 and the bottom is -200. That result is in column L.

I would appreciate any comments or suggestions. Thanks

Weighted Ratings.xlsx
BCDEFGHIJKLM
5ProductPricePrice ZScorePrice RankBattery LifeBattery ZScoreBattery RankZScore SumZSum RankMax 100Max 100 Min -100
6D$389+1.269719.50+1.01152+2.28121+100.00+100.00
7I$395+1.131929.20+1.12371+2.25562+98.88+99.04
8A$409+0.8105410.00+0.82453+1.63503+71.67+75.75
9G$399+1.0401311.30+0.33845+1.37854+60.43+66.13
10B$449-0.1079510.25+0.73104+0.62315+27.32+37.78
11J$449-0.1079512.75-0.20386-0.31176-13.66+2.71
12F$475-0.7049712.90-0.25997-0.96487-42.29-21.80
13H$479-0.7967813.25-0.39088-1.18758-52.06-30.15
14C$500-1.27891015.90-1.38179-2.66069-116.63-85.43
15E$499-1.2559917.00-1.793010-3.048910-133.66-100.00
16Mean$4440.000012.210.00000.00000.0014.40
17Std Dev$441.00002.671.00001.945585.2973.00
18MaxMax2.2812
19MinMin-3.0489
20RangeRange5.3301
Scaling
Cell Formulas
RangeFormula
E6:E15E6=-([@Price]-TblScalings[[#Totals],[Price]])/PriceStdDev
F6:F15F6=RANK.EQ([@[Price ZScore]],[Price ZScore])
H6:H15H6=-([@[Battery Life]]-TblScalings[[#Totals],[Battery Life]])/BattStdDev
I6:I15I6=RANK.EQ([@[Battery ZScore]],[Battery ZScore])
L6:L15L6=[@[ZScore Sum]]/ZSumMax*100
M6:M15M6=(([@[ZScore Sum]]-ZSumMin)/(ZSumRange)*200)-100
L16L16=SUBTOTAL(101,[Max 100])
M16M16=SUBTOTAL(101,[Max 100 Min -100])
L17L17=STDEV.S(TblScalings[Max 100])
M17M17=STDEV.S(TblScalings[Max 100 Min -100])
K6:K15K6=RANK.EQ([@[ZScore Sum]],[ZScore Sum])
D16D16=SUBTOTAL(101,[Price])
E16E16=SUBTOTAL(101,[Price ZScore])
D17D17=STDEV.S(TblScalings[Price])
E17E17=STDEV.S(TblScalings[Price ZScore])
G16G16=SUBTOTAL(101,[Battery Life])
H16H16=SUBTOTAL(101,[Battery ZScore])
G17G17=STDEV.S(TblScalings[Battery Life])
H17H17=STDEV.S(TblScalings[Battery ZScore])
J6:J15J6=[@[Price ZScore]]+[@[Battery ZScore]]
J16J16=SUBTOTAL(101,[ZScore Sum])
J17J17=STDEV.S(TblScalings[ZScore Sum])
J18J18=MAX(TblScalings[ZScore Sum])
J19J19=MIN(TblScalings[ZScore Sum])
J20J20=J18-J19
Named Ranges
NameRefers ToCells
BattStdDev=Scaling!$G$17H6:H15
PriceStdDev=Scaling!$D$17E6:E15
ZSumMax=Scaling!$J$18J20, L6:L15
ZSumMin=Scaling!$J$19J20, M6:M15
ZSumRange=Scaling!$J$20M6:M15
 

Excel Facts

Does the VLOOKUP table have to be sorted?
No! when you are using an exact match, the VLOOKUP table can be in any order. Best-selling items at the top is actually the best.
I would think it to be better if you don't have negative scores, but go from 100 to 10 (no product has zilch value), or if you really want, 100 to 0.
 
Upvote 0
I would think it to be better if you don't have negative scores, but go from 100 to 10 (no product has zilch value), or if you really want, 100 to 0.
Thanks. I came to the same conclusion, more or less.

I started with 10 products with fictional data about price and battery life. How would you rate them if you wanted to minimum price and maximize battery life? A better battery life tends to correlate with a higher price. Note that the prices are ranked in ascending order, whereas the battery life values are ranked in descending order.

1685570901148.png


We can sort them by price or by battery life, but not both.

1685571028907.png


It’s difficult to compare these two sets of data. Not only are they two completely different scales, but they are in the opposite order. The best prices are the lowest, whereas the best battery life values are the highest. Sorting one tends to reverse sort the other. This is where z-scores can be useful. Let’s convert both the prices and battery life data to z-scores. Note that, as with the ranks above, we used the standard formula for the battery life z-scores, but reverse (negative) formula for the prices. Adding them should give us a sense of the combined ratings. That sum is in Column J. It tells us that Product G has the best combination of price and battery life. It ranked #3 on price and #6 on battery life. Product E is second and Product D is third.

1685571264063.png


Z-scores make it possible to combine multiple ratings and see how the products rank overall. It’s easy to see which one is best and next best, but not easy to tell by how much. In this case, they are all fractional numbers less than 1. It’s a little difficult to get a good sense of the relative strengths.

My first thought was to scale the z-scores so that the top score is 100. That way the scores would be more like percentages, with which most people are more familiar. To do that, divide the scores by the maximum z-score then multiply by 100.

1685571451860.png


The results are in Column L. These values seem easier to understand than the ones in Column J. Product G is 23 points ahead of E.

1685571490612.png


The “-120” for Product B bothered me a bit. I didn’t like the asymmetry. I decided to scale the z-scores from +100 to -100. The formula for that is:

1685571542408.png


These results are in Column M. The symmetry has been achieved and the scores are tighter overall due to being spread across a shorter range. Now Product E is just 21 points behind G.

1685571590245-png.92669


I thought mapping the scores onto a range of +100 to -100 would allow the reader to pay attention to the positive scores and reject the negative ones. But then I realized that if my goal is to simulate percentages, the negative scores don’t really fit. My next try was to scale the scores to a range of 100 to 0. The formula for that is a bit simpler than the previous one.

1685571692778.png


These results are in Column N. Of the four options (J, L, M, & N), I think N is the cleanest and clearest. The scores are tighter and more like actual percentages. And it eliminates the plus and minus signs.

1685571723760.png


Note: The numbers are not actual percentages. Product G does not meet 100% of the user’s requirements nor does B meet none (0%) of them. G meets 100% of the product that best meets the user’s requirements. The definition of B’s 0% rating is less clear. 🤔🤨🙄
 

Attachments

  • 1685571590245.png
    1685571590245.png
    35.1 KB · Views: 24
Upvote 0

Forum statistics

Threads
1,223,885
Messages
6,175,180
Members
452,615
Latest member
bogeys2birdies

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top