Measuring the Effects of Consistency on Winning for Individuals
10 March, 1996
Shaquille O'Neal and Nick Van Exel are both very good examples
of the difficulty of evaluating players. O'Neal
is clearly a dominant force every time he steps on
the court, but his inability to make free throws often makes
him a liability at "Winning Time", as Magic Johnson calls it.
As a result, there are many that have called him just a dunking machine who
should not be classified with the greats of the game.
On the other hand, Van Exel is a point guard and outside
shooter whose hot streaks can demoralize an opponent.
His amazing runs of great shooting helped the Lakers upset
the Sonics in last year's playoffs (something no one will let
the Sonics forget) and personally earned Van Exel a few All-NBA
votes (really!), a Reebok ad or two, and cover spots on numerous
basketball publications. at the same time, he was being called
Nick Van Brick (or Brick Van Exel) and shooting a meager 42%
from the field during the '94-95 season.
Both O'Neal and Van Exel are, well, human, unlike Mr. Jordan
who comes from the air out there. Both players have strengths
and weaknesses to their game that are striking enough that those who evaluate
their overall games form very different opinions. This is a
terrible problem for GM's trying to build a team and for a coach
trying to decide upon a lineup for various periods of a game.
I'm going to shed some light on this question by looking at the characteristics
of these two players and how they influence their teams' success.
There are two principal ways for evaluating the offensive
abilities of individual players. One of them, floor percentage,
is an estimate of the percentage of times a player contributes
to his team scoring. The other, his offensive rating, is an estimate
of the number of points created by that player per 100 possessions.
Originally, floor percentage was developed as the principal measure of
a player's offensive ability. Later, in order to maintain consistency with the
predictive ability of a team's offensive rating, the individual offensive rating
became the principal measure of offensive ability. Formally, this
is still true, but I have come to the reailization that both numbers are
actually quite important in evaluating the offensive contribution
of an individual, especially with individuals like Van Exel and O'Neal.
Specifically, when one looks at the floor percentage and
offensive rating for O'Neal and Van Exel, one gets a conflicting picture
of the relative offensive abilities of the two. O'Neal dominates
Van Exel in floor percentage, 0.608 to 0.506 in '95, indicating
a tremendously superior offensive player, one who can score with
much more regularity. On the other hand, Van Exel and O'Neal have
very similar offensive ratings, with O'Neal edging Van Exel 115.0
to 114.1 in '95. Since offensive rating looks at points and
floor percentage looks at the number of scores per possessions, something
not as "bottom line" as points, it is natural to use offensive ratings
as a better evaluator of talent than floor percentage .... but that would
indicate that Van Exel and O'Neal are similarly offensively skilled.
I almost convinced myself of this at one time, but ultimately this
conclusion didn't make sense to me.
Floor percentage and offensive ratings are not ratings, despite
the unfortunate name on points per 100 possesssions. By this, I mean
that they are not designed to evaluate the player's offense entirely;
rather they are meant to be estimates of measurable quantities, ones that
I see on the court. What percentage of the time a player wants to score
does he actually score? That is his floor percentage. How many points does
he create with those possessions? That is his offensive rating. For teams,
these are clearly measurable using the
and I have developed the theory for players as well. By having statistically
measurable quantities (and not subjective ratings), we can
perform realistic statistical studies. This is the basis of the
comparison I will make here.
The Program for Making the Comparison
What I decided to do was to let my readers do some of the research
on this issue using a program I have written in JavaScript. If you
don't have Netscape 2.0,
you won't be able to operate the program, which is a bummer; however,
I have also written the program in Visual Basic to run on Windows machines
and I can probably make this available to people if they want it. The program
uses an individual's floor percentage and their offensive rating to
simulate how often they outscore a hypothetical opponent using
the same number of possessions in a game as they do. In this program, the player's
floor percentage indicates how often the player scores, and the
ratio of their offensive rating to their floor percentage indicates
how many points they score on each possession. This is obviously
not quite true in a game because no player scores 2.131 points on
a possession -- it's always 1, 2, or 3 (or 4) -- but this is the
first version of the program and improvements will be made.
Here is a summary of the input information necessary, most of
which is available here:
- Floor Percentage: the percentage of possessions on which there is a score
- Offensive Rating: the number of points produced per 100 possessions
- Possessions Per Game: Possessions used per game
- Spread of Possessions Per Game: I don't have measurements or
estimates how much a player's possessions vary from game to game,
so this number represents a guesstimate of how much above or
below the player's average possessions per game they normally go.
For example, a value of 20 possessions per game with a value of 8 for
this indicates that player's possessions used in a game vary
uniformly between 20-8=12 and 20+8=28.
- Number of Simulated Games: Number of games to simulate
(recommended 1000+ for stable stats)
- Opponent's Rating: Opponents points produced per 100 possessions
When you enter each of these things,
the program calculates a winning percentage.
This percentage is subject to noise because of the randomness of the
program, but the noise dissipates with more games simulated. Warning: I recommend 1000+ games for getting
stable statistics, but this will take 30 seconds or so per 1000
games if you have a pentium. Also,
you might want to consider that seasons are only 82 games long
and see how winning percentage can fluctuate over a normal season
with constant mean parameters.
Please report back to me
with your results, including both your input parameters and the final winning
percentage. If the input data came from a specific player, please
mention their name, too. (Note: if you used this before 3/13, a slight
change was made to fix a small error in varying the possessions per game.
The program is now faster and more accurate ... how often does that happen?)
General Conclusions
I have made some preliminary conclusions, but I will wait until I get
some feedback from readers before I make final ones. I have generally
seen that "low variance players" like O'Neal do better than "high
variance players" like
Van Exel because
they have higher floor percentages, scoring more frequently.
The difference is pretty small,
smaller than I would expect, but I believe it will be bigger
when I improve the program to be more realistic. Something that
is more clear is that increasing the spread in the number of possessions
used by a player in a game brings that player closer to 0.500.
This is a theme I stressed in Basketball's
Bell Curve, but now I have further evidence.
Again, I do not want to bias people too much as I wait for some
of their research reports.
Program Notes
The JavaScript program was based on one by
Jonathan Weesner,
whose program I found and modified for my purposes. (This is called
computer engineering.) I am not an expert JavaScript programmer; in fact,
I have only written one very small one previously. And my java skills
are rusting a little because I program in other languages at
my other job. So what you see here is primitive and probably
not free of bugs. I am using two random number generators in this
program because it is my understanding that one is not
built into JavaScript for non-unix platforms. The first is a random number
generator I found
on the web that, because it accesses the time on your computer, is very
slow. I use it to generate a seed for the other random number generator,
which is a linear congruential one (a word I learned today) that is
quick and dirty, but probably good enough for my purposes.
It is much quicker, though still slow, in my opinion.
Note that I use the random number generator to get a uniform distribution.
I use the uniform to determine when a player with a given floor percentage
scores. I also use a uniform distribution to represent how many possessions
a player uses in a game, which probably isn't a great approximation, but
makes the point here. Again, for more details on the program, feel free to
view the source code or contact me.