web analytics

NBA Adjusted Efficiencies 1-4-2011

January 5, 2011

Hi, I’m Daniel (known as DSMok1 elsewhere), and this will be my first attempt at some fancy Google Visualizations.  On my fancy new website.

This viz plots the 5-game TRAILING moving averages for each team in the NBA up through January 4th. It’s a bunch of data; we’ll see if the Google API can handle it. Here we go:

Notes: Efficiencies were adjusted for:

  • Opponent (recursively)
  • Game location
  • Rest days of each team

Here’s an example of some of the data–this is what Miami’s season has looked like:

GameAdjusted OEAdjusted DEAdjusted MarginResult
10/26/10 @ BOS-5.6-8.52.9L
10/27/10 @ PHI1.4-10.311.7W
10/29/10 vs. ORL2.7-27.530.2W
10/31/10 @ NJN12.0-12.424.4W
11/02/10 vs. MIN15.7-7.122.8W
11/05/10 @ NOH3.4-0.33.7L
11/06/10 vs. NJN-2.0-5.43.4W
11/09/10 vs. UTA2.63.8-1.1L
11/11/10 vs. BOS17.318.8-1.5L
11/13/10 vs. TOR5.47.7-2.2W
11/17/10 vs. PHO11.7-11.022.7W
11/19/10 vs. CHA-6.1-4.3-1.8W
11/20/10 @ MEM8.75.82.8L
11/22/10 vs. IND-21.4-1.7-19.6L
11/24/10 @ ORL6.49.0-2.6L
11/26/10 vs. PHI7.82.75.1W
11/27/10 @ DAL-1.63.1-4.7L
11/29/10 vs. WAS0.6-3.84.4W
12/01/10 vs. DET-0.8-17.416.5W
12/02/10 @ CLE21.8-6.928.6W
12/04/10 vs. ATL-4.4-15.911.6W
12/06/10 @ MIL3.2-9.312.5W
12/08/10 @ UTA21.8-0.222.0W
12/10/10 @ GSW10.7-11.622.3W
12/11/10 @ SAC3.7-15.218.9W
12/13/10 vs. NOH10.7-1.812.5W
12/15/10 vs. CLE-1.06.4-7.3W
12/17/10 @ NYK9.8-17.727.5W
12/18/10 @ WAS-5.4-7.11.7W
12/20/10 vs. DAL3.52.21.3L
12/23/10 @ PHO-7.6-23.015.4W
12/25/10 @ LAL5.3-20.125.4W
12/28/10 vs. NYK5.6-1.77.2W
12/29/10 @ HOU19.86.813.0W
01/01/11 vs. GSW5.06.4-1.5W
01/03/11 @ CHA4.9-8.012.9W
01/04/11 vs. MIL11.10.610.5W

(For offense, positive is good. For defense, negative is good.)

Again, all of those numbers are adjusted for opponent, location, etc.

Another way to look at this is through a chart.  This chart does not show offense and defense, but it does show margin and the result.

Team Chart MIA 1

Miami's performance through the season

Sometimes you play good and lose (say, if you’re on the road vs. a good team on the second night of a back-to-back), and sometimes you play bad and win.  Like against Cleveland at home with advantageous rest.

For more on how I adjusted efficiencies, look at the rest-days analysis I conducted at the APBRMetrics forum.

P.S. Welcome to my new stats blog!  I will probably not post often (how’s that to inspire confidence!).  Primarily I’m putting this together because I post so much stuff elsewhere and wanted a personal repository for my work (who knows when some of the forums may crash?).

Tags: , , ,

5 Responses to NBA Adjusted Efficiencies 1-4-2011

  1. Thursday Bolts – 1.6.11 | Daily Thunder.com on January 6, 2011 at 10:15 am

    [...] of DT’s commenters has made his own stats site and the first post is one of those cool Google motion charts. [...]

  2. Daniel on January 8, 2011 at 7:22 pm

    Hey Daniel,
    nice work, I like this – especially they way of presentation through Google motion charts.

    I have two quick questions to Your method:
    - When You adjust efficiency for opponent strength – You take into account their YTD efficiency, or the one from the observed period?
    - In order to ‘smooth’ results (Yes, I know it’s moving average, still You see some one-game peaks) weren’t You thinking to use f.ex trimmed mean?

    Additionally – how frequently will You update it?
    + will it be possible to see also data for other teams – as presented above for MIA?

    • DanielM on January 8, 2011 at 10:13 pm

      Thanks, Daniel

      I adjusted for opponent over the whole year (it’s the same opponent strength as in my team efficiency rankings). YTD wouldn’t take into account all of the data that we have.

      I’ve never dealt with a trimmed mean. How would that be implemented? I used 5 game moving average because people know how that works.

      I have the full data in a spreadsheet that’s easy to update; I’ll post the spreadsheet once I clean it up a bit. I don’t know how often I’ll update this, but once the spreadsheet is out there anybody can do it.

      • Daniel on January 9, 2011 at 9:27 am

        Hey Daniel,

        as for adjusting for strength of opponent – I meant to take level of opponent’s play not from whole season, but from shorter period, which better represents opponents strength during analyzed period.
        As we analyze teams during the season their level of play differentiates due to changes of roster, injuries, tanking, etc. so it’s important not to take whole data without f.ex weighting, etc.

        As for trimmed mean – I meant here to reject some % of ‘outlier’ observations from calculation of a mean, f.ex. if You analyze 5-game buckets, You can trim observations by 40%, which means that You don’t take into account 2 extreme observations (the highest and the lowest one). Personally I use trimmed means with a little bit higher no. of observations (at least 8).
        Still with 5 observations You can f.ex. put some treshold for maximum margin (f.ex. 20 points – which means that if one team will win by 40 points, You take into calculations only 20 points).

        • DanielM on January 11, 2011 at 12:11 pm

          I don’t really like to adjust for only a segment of play in evaluating opposition, because:
          1. The computation requirements are complicated
          2. Sample size

          I will explore other methods of evaluating besides moving average.

Leave a Reply

Your email address will not be published. Required fields are marked *

Current day month ye@r *

DSMok1 on Twitter

To-Do List

  1. Salary and contract value discussions and charts
  2. Multi-year APM/RAPM with aging incorporated
  3. Revise ASPM based on multi-year RAPM with aging
  4. ASPM within-year stability/cross validation
  5. Historical ASPM Tableau visualizations
  6. Create Excel VBA recursive web scraping tutorial
  7. Comparison of residual exponents for rankings
  8. Comparison of various "value metrics" ability to "explain" wins
  9. Publication of spreadsheets used
  10. Work on using Bayesian priors in Adjusted +/-
  11. Work on K-Means clustering for player categorization
  12. Learn ridge regression
  13. Temporally locally-weighted rankings
  14. WOWY as validation of replacement level
  15. Revise ASPM with latest RAPM data
  16. Conversion of ASPM to" wins"
  17. Lineup Bayesian APM
  18. Lineup RAPM
  19. Learn SQL