# How to get an "averaged" score?

Assume a game wherein a character's "power" is made up of several factors, like speed, weight, body build, etc. And let's say that each of these factors were scored 0, 1, 2 wherein 0 means average, 1 means slightly above average, and 2 means above average. If there were, say, 5 factors that affected power, it means the character could score a maximum of 10 points. If the scores of the individual factors were added, that could be used as the character's "power rating" (e.g. 7/10).

What if sometimes the score can be 0, -1, and -2 for a particular factor? Would the same formula apply to compute the character's power? The maximum score would no longer be 10 points (assuming some combination of factors that have 0 and positive values AND 0 and negative values).

I'm just looking for some way to fairly compute such a score.

Why not just use the sample average: $\bar{X} = \dfrac{1}{n}\sum_{i=1}^n X_i$. In your first example their average would be $7/5 = 1.4$. For 5 'factors' this average ranges from $-2$ to $2$.

This average does not distinguish the factors in any way (perhaps 'speed' should contribute more to 'power' than 'body build'?) In that case you can use a weighted average and weight your 'factors' according to your beliefs on how much they contribute to 'power'. The weights just have to sum to 1.

• Would that mean that 0 = 0%, 2 = 100% and -2 = -100%? Oct 7, 2013 at 22:27
• Sure you can think about it that way. Oct 8, 2013 at 0:04

Let's say you have 10 factors describing the power of a player.

5 of them give give scores between 0 and 2 (0, 1, 2).

5 others, give scores between -2 and 0 (-2, -1, 0).

As a result the mean combined score for a player is 0 (assuming the probability of receiving any score for any factor is uniform / identical).

The range of possible combined scores is [-1, +1].

You can "translate" the score in the range [-1, +1] to any other range such as [0, 10] to get a familiar player assessment like 7/10.

A sample R code:

> n <- 1e6
>
> score <- matrix(NA,n,10)
>
> for (i in 1:n) {
+
+  score[i,1:5] <- round(runif(5,0,2))
+  score[i,6:10]<- round(runif(5,-2,0))
+
+ }
>
> total.score <- sapply(1:n, function(i) sum(score[i,])/10)
>
> mean(total.score)
[1] 0.0001154
> range(total.score)
[1] -1  1
>
> (sample.total.scores <- c(-1,-0.1,0,0.5,1))
[1] -1.0 -0.1  0.0  0.5  1.0
>
> (sample.total.scores+1)/diff(range(total.score))*10
[1]  0.0  4.5  5.0  7.5 10.0