Really short problem description: users earn "points" for different actions in the online application. Each action earns different amount of points, based on how "important" action was (creating content is more important than reading).

Points are accumulated during the day and I have some number for each user.

Now, I would like to have a score that represents how "active" user was relative to the rest of the population for the day, preferably in some fixed scale like 0-100.

My naive approach was to calculate average points for the whole user base and treat it as 50 (half of the scale) and clamp values over 100.

Is there any better way to do it?

First of all I'm not sure that average is a good baseline.

I can't take most active user and compare rest of the user base against him - there are always users who are much more active than the rest.

Also, I can't come up with some fixed baseline score and compare against it, because user participation is seasonal - users would do more during certain seasons and do less during others.

Thank you.


You could use a z-score approach. I am assuming that the raw score would look more or less like a normal distribution, once you chop off the users who are always active. Here is what I would do:

  1. Delete the top 5% of the users who are always active (It may or may not be 5%; you need to check the distribution to see what percent of the users are always active.)
  2. Calculate the mean score for the day Formula
  3. Calculate the standard deviation of the score Formula

  4. Then get the Z score Formula

The Z score would tell you how active the user relative to the mean user on a given day. This way you do not have to worry about the benchmark. Benchmark here is the score of the average user on a given day and this will change on a daily basis. So does your Z score. So you only have to compare the Z scores.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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