Friday, February 23, 2018

QGM: Playing through some Seasons with the busted PER / Player EVAL

I don't have a simple answer for Quidditch PER rating yet, so I'm going to play a few seasons.

To make it fun, I'm going to exploit the AIs as best I can. So far, in Quidditch GM, bigs are basically worthless. I want to add in Beaters and bludgers to fill that gap, but for now I'm going to trade all my bigs away before their crappy adv. stats make them worthless.





















Trading away Ashton Wilson, Sophie Adam, Kate Mason, Chloe Weaver
Let's see what I can get for them:

Wow, Look at the Offer for Weaver (41 OVR):








I'll take that.

Next, I got
Sophia Saunders 3BPs PG 33 52 52

Not great, but better than what I traded.

For Hannah Bruce:







Not bad.

For Kate Mason:

There's a killer deal on the table with a 69 rater, but my cap space is too full for it.

Instead, I got a second round draft pick, and a 58 OVR 3 pointer.

For Sophie Adam:

Not a whole lot, so I'll keep 1 big I guess. I look with my other big, and I've either got too much salary, or the low hanging fruit is already picked over. So enough of that. Time to look at my new Ravenclaw roster:



















It's not a great team, but way better than before for catching snitches.

Let's see how I do: I'll sim 40 games, and then I want to do a Live watch of one, and then make a few more trades and sim out of the season.

My team started the season like 1 - 7, and now have climbed up to the bad territory of 17 - 21.

Let's pretend that the PER displayed makes sense, then I have a negative PER player on my starters, and a 80 per player on my bench. Let's sell the bad PER player.




I'll trade him for





I'm setting 0 minutes for my 3 players with PER of -10. What will happen?

Live Game Time:

48 minutes a quarter make these long

46:03 - CHU - Evie Hawkins grabbed the defensive rebound
46:03 - RAV - James Lee missed a three pointer
46:18 - RAV - Priya Thompson grabbed the defensive rebound
46:18 - CHU - Evie Hawkins missed a dunk/layup
46:32 - CHU - Mohammed Thomas grabbed the defensive rebound
46:32 - RAV - James Lee missed a three pointer
46:47 - RAV - James Lee grabbed the defensive rebound
46:47 - CHU - Bethany Nelson missed a mid-range shot
47:01 - CHU - Emil Hills grabbed the defensive rebound
47:01 - RAV - Priya Thompson missed a three pointer
47:16 - CHU - Mohammed Thomas made a low post shot (0-10)
47:30 - CHU - Evie Hawkins grabbed the defensive rebound
47:30 - RAV - Priya Thompson missed a dunk/layup

ZZZs

0:00 - CHU - Summer Jones made a three pointer shot (assist: Emil Hills) (40-185)

First Quarter Over, Game Over.

So now, I want to hand calculate and add up all the unadjusted PER at the end of the season, and see if I get a negative total.
Simming the rest of the season.

Wait, I stopped the sim. All of a sudden, I went on a tear, up to 38 - 33. By Zeroing out these negative PER performers.
Let's see how my weekly standings go from there?

But wait, let me give my roster + and - based on time. I have another player that needs to stop playing according to PER. He has -60 PER
















Here we go, was it my -60 PER player responsible for success:

3-2 Week
0-5 Week

HMM.

Let's try the playoffs on the opposite assumption: that our negative PER players are the best.
Woops, I missed the playoffs with that last slide.

Is my league average unadjusted per still negative? With the 3P term below replaced with 28 * 3P





It comes to my mind now, that since 3 pointers are so hard to make now, and since they are worth so much, Winning is WAY more random at this point. 
Your opponent can always score a three.

3 Pointers Made / Game vs. Wins










The system can't record more than 1 decimal point for 3P / Game, so there are bands, but the correlation is very clear. However, if you look at 3PA / game: 3 Attempts are slightly positively correlated with winning.











Excel doesn't let me regress more than 16 variables with Wins. And, it's probably stupid to regress that much with only 41 data points.

What about 20 seasons?
Turn on God Mode, and run some seasons. I know how to make Excel do regressions, even if it's own tool doesn't for more than 16 vars.







With the correct end of game rules and the lower fatigue, 20 seasons didn't take that long. Ever since I set the population for the school teams lower, they have had a lot less success, my Ravenclaw team only made 4 playoffs in 20 years.
No 1 team won more than 2 championships. Durmstrang was the only Scholastic team to win, and they had 2.
Stats time:
While compiling stats from 20 seasons, I discovered a bug in my Teams. Somehow the team code BAL is showing up in Team Stats 11 times! They all show up as Ballycastle.
I've got 4 teams with the same 3 letter code (BAL), and they all show up as Ballycastle when you click on them in the UI. Oops.
Looking at my JSON file, let's see:
Ooops!, all the new teams I added from the Irish and English Quidditch league, I forgot to change their initials.
I wonder if Basketball GM looks up teams by initials for stat calculations?
So, let's play a season with teams that have correct 3 letter codes and see?
PER definitely looks a bit more reasonable, still a lot of high values all over the place, but no crazy negatives, at least on my team.
The player with the best PER has Three Pointers: 91.
Durmstrang won 26 games, but has a player with 351 EWA. Something's still way off, but it's closer.
According to the js file, someone with 351 EWA would be following this equation:

EWA = players[i].stats.min * (PER[i] - prl) / 67 / 30 * 0.8

The 351 EWA player has: PER 72.2
14432 minutes : 185 m / game
Hallie Marsh is a PG. PRL for PGs is 11

185 * (75 - 11) / 67 / 30 * 0.6 = 
If we plug in her full minutes, I get 367 EWA.
Let's get the actual average PER by position, for curiosity. I can't get all of the player PERs at once in BBGM as it currently works.
So I'll export the json. I can't easily get each PER by position without diving into working with JSON in more depth, but I can get the overall distribution of PERs, by sorting all lines in Notepad++ and copying the lines with per.
Average PER: 10.93
(per is supposed to be average 15.)

Average of Positive PER: 25
# of Positive PER Cases: 407

Average of Negative PER: -13
# of Negative PER Cases: 236

Bar Chart of Quidditch PER










It looks vaguely normal-ish.
NBA PER Bar Chart










The Two shapes are broadly similar, just translated and stretched differently.
QGM PER has a mean of 10.93, median of 8.35 and st. dev of 25!
NBA PER has a mean of 14.43, median of 13.9 and st. dev of 4.75

QGM's median is lower relative to mean than NBAs.
I don't know much about advanced statistical numbers like moments and skewness and kurtosis, but let's look at them.
They both have positive skew, but QGM is at 0.41, while NBA is at 0.58.
This means their right tail is longer, but it's less so for QGM.

I'd like to go back to first principles and figure out what stats relate to winning for QGM next post.

No comments:

Post a Comment