2
$\begingroup$

Apologies if this is the completely wrong verbiage for this sort of thing... kinda new to this.

We're designing a social website, where users on the site have several statistics associated with them. We want to assign each user a "score," which is a weighted interpretation of all their statistics.

We don't have a solid relationship between our stats yet, so I'm not looking for an exact formula, just general advice on how to build a formula like this (especially as I'm not terribly mathematically inclined). You know, something like User 1 who has 10,000 for Stat 2 might have a score of 34, and User 2 might who has 10 for Stat 1 might have a score of 16 (with 1 being the top-rated User), because of the weighted formula.

Our system has 3-4 user statistics we want to mix into this formula (basically, metrics involving the user's involvement on the site, like comments written and posts viewed, etc.)

Does that make sense? Please let me know if I need to clarify anything. Thanks!

$\endgroup$
3
  • $\begingroup$ I'm confused -- user 1 has a value for stat 2, while user 2 has a value for stat 1? It it such that user $i$ has a value for stat $j$ whenever $i\ne j$ (that is, a number for each pair of users that you want to condense into a single number per user?) $\endgroup$ Commented Apr 5, 2012 at 19:22
  • $\begingroup$ Sorry, that was an unclear example... what I meant to show is that stat 1 would be weighted more heavily than stat 2... but that both users would have values for both stats (and 2 more). Does that clarify? $\endgroup$
    – neezer
    Commented Apr 5, 2012 at 19:32
  • $\begingroup$ To add to Henning's answer. For each user, the $score(u)$ is a function of $stat_1(u), stat_2(u), \ldots, stat_n(u)$. The exact combination, and how you weight each $stat_i(u)$ will drastically change the scoring scheme. The linear weighted sum is a simple and popular scheme. But it really depends on the application in mind. You can also introduce non-linear scheme. For example: $score = age/weight$ gives high score to thin old people, and a low score for fat kids. I hope you got the idea. $\endgroup$
    – user2468
    Commented Apr 5, 2012 at 21:24

1 Answer 1

2
$\begingroup$

The most basic way of doing what you describe is with a weighted sum. For each statistic you decide on a "weight" which is basically just a number saying how many "score" points each point in that particular statistic counts for.

In your example the weight for statistic 2 might be around $0.003$ (very small, so it takes a lot of stat-2 points to earn a single increase in score), whereas the weight for statistic 1 should probably be around $1$.

Then compute the score for each user as $$\mathit{score}(u) = \mathit{stat}_1(u)\cdot w_1 + \mathit{stat}_2(u)\cdot w_2 + \cdots + \mathit{stat}_n(u)\cdot w_n$$ where there are $n$ separatet statistics, and $w_1, w_2, \ldots, w_n$ are the weights. You'll probably want to round the scores to integers for display.

There are various ways to tweak this if it cannot produce the effects you're looking for, but you don't have to look into them until and unless you find that the simple weighted sum is definitely not meeting your requirements.

$\endgroup$
1
  • $\begingroup$ Thanks; this is very helpful information. I'm going to play around with this and get back to ya. :) $\endgroup$
    – neezer
    Commented Apr 5, 2012 at 21:33

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .