Skip to content

formulas for nba awards#389

Closed
nicidob wants to merge 3 commits into
zengm-games:masterfrom
nicidob:nba_awards
Closed

formulas for nba awards#389
nicidob wants to merge 3 commits into
zengm-games:masterfrom
nicidob:nba_awards

Conversation

@nicidob
Copy link
Copy Markdown
Contributor

@nicidob nicidob commented Jun 11, 2021

Just some linear regressions from NBA results. Added a new stat (frac_ws) for fractional win shares, to reward players who are clearly the best player on their team, not just part of a duo or big 3.

not sure if I truly believe or if I did all the frac_ws stuff right. But posted for reference

@dumbmatter
Copy link
Copy Markdown
Member

If it's only used in awards, I'd probably compute frac_ws on demand rather than store it in the database. You don't have to do it, I can change that if I decide to merge the PR, I'm just talking for the sake of talking.

But are the awards in BBGM actually a problem now? Will anybody notice much of a difference with this new method? I'll try to play around with it soon and see if I can tell, but if you have some examples already, please share :)

Also if you happen to have any details about the regression you did, would be good to put it in a comment or something, otherwise it will look very magical 6 months from now.

p.currentStats.dws +
((p.currentStats.blk + p.currentStats.stl) * p.currentStats.gp) /
defaultGameAttributes.numGames;
p.currentStats.ewa + 2 * p.currentStats.vorp + p.currentStats.pts;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably should scale by games played, like in my old formula. Otherwise you could get a ROY with very few games played. Maybe same thing for SMOY.


export const dpoyScore = (p: PlayerFiltered) => {
return (
p.currentStats.dws + p.currentStats.blk / 406 + p.currentStats.stl / 84
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These coefficients for blk and stl are so low they barely do anything, should we just get rid of them if that's what they data really suggests?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i screwed up. those used totals not per-game numbers. also why i thought no scaling

dumbmatter added a commit that referenced this pull request Jun 16, 2021
@dumbmatter
Copy link
Copy Markdown
Member

https://github.com/zengm-games/zengm/compare/nicidob-awards?expand=1 is my version of this. Differences:

  • Dynamically computes fracWS
  • ROY formula scales pts by gp

Overall it's a pretty minor change from the old award formulas, and I think hardly anyone would notice. But in my unscientific testing, when there is a difference, it tends to look reasonable. So I'll probably merge that branch, I just wanted to give you a chance to say something if you want.

@dumbmatter
Copy link
Copy Markdown
Member

I'm going to put it in the next update.

@dumbmatter dumbmatter closed this Jun 19, 2021
@nicidob
Copy link
Copy Markdown
Contributor Author

nicidob commented Jun 19, 2021

@dumbmatter so yeah my bad. Here's a script that generates those coefficients from a "all historical data" league file.

https://github.com/nicidob/bbgm/blob/master/historical-gen.ipynb

I had a minor mistake in the DPOY one where I didn't use per-game BLK and STL. This script should output dividing numbers for the coefficients

First Team All-League
winp        1.0
ewa        22.0
vorp       32.3
frac_ws    10.2
dtype: float64

Sixth
winp     1.0
pts_g    9.9
ewa      5.5
vorp     2.3
ws       4.9
dtype: float64

Rookie of
ewa      2.1
vorp     1.0
pts_g    2.0
dtype: float64

First Team All-Defensive
dws      1.3
blk_g    3.0
stl_g    1.0
dtype: float64

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants