|
|||||||
| OOTP 9 - General Discussions Discuss the latest and greatest OOTP ever, version 9! |
![]() |
|
|
LinkBack | Thread Tools | Display Modes |
|
|
#1 (permalink) |
|
Major Leagues
Join Date: May 2004
Location: 1968 Cat Olympics
Posts: 424
|
League Totals and Modifiers
We read in the manual:
OOTP generates a 'proposed' league total for each category. The overall performance of players over the course of a season will ultimately produce approximately that number. For example, if the league total for home runs is 5400, then the total home run output each season will be somewhere in the neighborhood of 5400.For my AAA league in 1871 the proposed triples and HRs are: 898 and 5451. Now these numbers can't be the "proposed" stats for the league as this implies more than 5 HRs per triple which is not what one saw in 1871 (HRs were relatively rare and triples were relatively common). But I notice that the modifiers are not set equal to one. So it seems that maybe the game is doing what it can via modifiers to generate proper stats. We read in the manual: To make this more intuitive, the right column contains a modifier column, similar to the other modifiers we have seen, with a default setting of 1.000-you guessed it, equivalent to modern professional baseball level. These modifiers are a more intuitive way of modifying the league totals. For example, if you want 10% more home runs, you could leave the league total at 5400, and just change the home runs modifier to 1.100. Editing the totals directly and editing the modifier have identical effects, so you can use either. Just remember that they work in opposite ways.Okay so because HRs are common in modern baseball and rare in 1870s baseball the modifier for HRs should be really small, like maybe 0.05. But the actual modifier see in my game for HRs is 4! If the above paragraph of the manual is correct, we should see 4 times MORE HRs in my 1871 league than in modern baseball. Really odd. But when the season is played out HRs are really rare, as they should be, and players generally hit at most 1 or 2 HRs. So what is the relationship between the numbers in league totals and modifiers and the stat output of the game? What is the relationship between the manual discussion of league totals and modifiers and what one sees in the game? Remember, the situation I'm describing above is for an AAA league in 1871 which might be why I'm seeing odd things. What am I missing? |
|
|
|
|
|
#2 (permalink) | |
|
Hall Of Famer
Join Date: Aug 2003
Posts: 6,218
Thanked 3x in 2 posts
|
Quote:
League totals are really not totals at all. They are values that determine the "rates" of the average pitcher/hitter matchup. Prove it by taking a quickstart league and running a few years. Then restart a new league with the same quickstart league, but multiply all the league totals by 2, and run a few years. I expect fully that, despite the fact that your totals increased by 2, your actual performance in the two leagues will be very similar. Last edited by RonCo; 08-24-2008 at 09:41 AM. |
|
|
|
|
|
|
#3 (permalink) | |
|
Major Leagues
Join Date: May 2004
Location: 1968 Cat Olympics
Posts: 424
|
Quote:
But, be that as it may, the relationship between what the manual says and what the game does seems, at times, very great. In the example I gave about, the rate of HRs should be 5 times the rate of triples. But that isn't what should be the case for 1871. And, the game itself does not generate such stats regardless of what appears in the game setup screens. So I wonder why it appears the wrong numbers appear in the league totals and modifiers. And, why editing these numbers in game creation has no impact on the numbers appearing after the game is started. |
|
|
|
|
|
|
#4 (permalink) | |
|
Minors (Double A)
Join Date: Jun 2006
Posts: 175
|
Quote:
Also, like the other #'s instead of modifiers, is the relationship of at bats inverse? So if I dropped AB's would we actually see more at bats? |
|
|
|
|
|
|
#5 (permalink) |
|
All Star Starter
Join Date: Jun 2004
Posts: 1,304
|
The game automatically calculates the modifiers needed to produce the proper historical ratios of everything. Just let it do its job. It is designed to be hands-off.
The engine totals are what the game references when it calculates results HR, BB, 2B, etc. These ratios are only approximate and only represent the year of import. For subsequent seasons OOTP uses the modifiers to get the correct ratios according to history. If you were to look at league batting average across say a 10-yr span you'd find that OOTP is beter than 99% on target with historical batting averages. If you look at 100 years worth of data we're talking about 99.98% accuracy with each season weighted equally. Just turn on the modifiers and play. I wouldn't be to concerned with minor league stats with historicals. All the players in historicals are major leaguers anyway. |
|
|
|
|
|
#6 (permalink) | |
|
Major Leagues
Join Date: May 2004
Location: 1968 Cat Olympics
Posts: 424
|
Quote:
Plus it is hard to see what pitchers are doing well in the minors because their stats are all way off the high end: 15+ K's per 9 innings Plus, you have realism to consider. ![]() I'd love to just let the game do its thing...but this problem seems both harmful to game play (as I play it) and it must be a bug. Last edited by BPS; 07-10-2008 at 01:02 PM. |
|
|
|
|
|
|
#7 (permalink) | ||
|
Hall Of Famer
Join Date: Aug 2003
Posts: 6,218
Thanked 3x in 2 posts
|
Quote:
I'll try to post some numbers on this tomorrow, as the question is really interesting and the answer reveals a whole lot about how the game engine works--and therefore its "flaws." Quote:
The most intriguing stat in this whole mix, at least to me, is BABIP. Stay tuned for that discussion tomorrow, though, as I really don't have time this evening to do that discussion justice. Last edited by RonCo; 07-12-2008 at 11:19 PM. |
||
|
|
|
|
|
#8 (permalink) | |
|
Hall Of Famer
Join Date: Aug 2003
Posts: 6,218
Thanked 3x in 2 posts
|
Quote:
Unfortunately, you really can't just let the game do its thing in the environment you want to play in, and it's not a coding bug, but a series of design choices that causes the issue. |
|
|
|
|
|
|
#10 (permalink) | |
|
Minors (Triple A)
Join Date: Dec 2006
Posts: 204
|
Quote:
|
|
|
|
|
|
|
#11 (permalink) |
|
Hall Of Famer
Join Date: Aug 2003
Posts: 6,218
Thanked 3x in 2 posts
|
It's not easy--or at least it's time consuming. I've got some posts around here on it, but basically, I get the minor league data for the past year then tweak each minor league OOTP League Totals (generally down) and run test leagues until the numbers line up.
|
|
|
|
|
|
#12 (permalink) |
|
Hall Of Famer
Join Date: Aug 2003
Posts: 6,218
Thanked 3x in 2 posts
|
To study the effect of the AB league totals modifier, I took a vanilla league of 8 teams and ran a total of four seasons. The first two seasons I set the AB league total to be very high (1,000,000) without changing any other total value. After two seasons I set the league totals very low (90,000):
Default League Totals: AB: 167353 H: 44522 2B: 8919 3B: 898 HR: 5451 BB: 16222 HBP: 1850 K: 31828 BABIP: .296 Here are the results. Hitting: Code:
R/G G AB H 2B 3B HR BB SO SB AVG OBP SLG OPS 2008 36.2 1296 54928 22576 4874 580 3900 40852 30241 1159 .411 .681 .734 1.415 2009 34.9 1296 54350 21946 4641 548 3683 40501 30133 1103 .404 .676 .713 1.389 2010 2.1 1296 43199 6608 1646 166 876 2323 3864 282 .153 .200 .260 .459 2011 2.1 1296 42813 6657 1649 154 854 2245 3675 295 .155 .201 .261 .462 Code:
R/G G CG SHO SV ERA IP HA HRA BB K WHIP OAVG BABIP 2008 36.2 1296 26 0 55 36.55 11329.1 22576 3900 40852 30241 5.600 0.411 .898 2009 34.9 1296 24 0 75 35.09 11366 21946 3683 40501 30133 5.490 0.404 .889 2010 2.1 1296 408 230 361 1.73 12410.2 6608 876 2323 3864 .720 0.153 .149 2011 2.1 1296 444 268 335 1.71 12270.2 6657 854 2245 3675 .730 0.155 .152 1) The chasm between 2008-9 (AB Totals High) and 2010-11 (AB Total Low) show us how radical changes in the AB totals effect every league total category. Mechanically, this is because the League total ratios are used as League Average values in the Bill James Log5 (or see Odds Ratio in math/stats books, they are essentially the same). Given this, raising the AB League Total makes the expected average at bat result in low offense (the expected average hitter in this league is poor, the expected average pitcher in this league is good). Since our actual batters have higher ratings than this, it makes our normally average major league hitter look like Sammy Sosa in his prime, and he achieves great results. Make sense--by setting the league totals with AB very high, we've told the game that we're playing in a High School level league, and placed a major league hitter into it. Similarly, if we make league totals AB drop, we tell the game that the average hitter is really good. So our normal major league player will not perform as well. It's a little more complex than this, of course. This is because of the nature of league totals. This leads us to the question ... 2) Just what _are_ league totals representing? This is a great question. Some folks think they are a target that the league is shooting for. This is wrong. Some folks think they are just mechanical bars you use to influence outcomes. While this is technically correct, it is not complete enough for the question. I state above that the league totals represent the expected result of the average pitcher/hitter matchup. This is correct, but not deep enough. From a modeling perspective, the result of a real-life AB is molded by a collection of things: 1) ability of the hitter, 2) ability of the pitcher, 3) ballpark, 4) defense behind the pitcher, 5) "context of the league." OOTP has ratings that model items (1), (2), (3), and (4). The game has no immediate way to determine (5). Item (5)--league context--is what League Totals are here to model. So, then ... 3) What is league context in OOTP terms? "Context" is a catch-all that includes lots of things. It's easiest to think of as a definition of the average result of the pairing between an average pitcher and average hitter, but that's an oversimplification and (despite the fact that I say it all the time) is "wrong." It's really a way to define the effect of rules differences, or training differences, or whatnot. For example, a league total change is required to make the league behave properly to the late 60s process of lowering the mound and reducing the strike zone area. A league total change is required to reflect the rule change about marring the ball, or to reflect lighter/heavier bats. Play a league on Mars, and a league total change is required. This is a real issue from a modeling perspective. League totals are attempting to do two things: (1) Define the quality of players in the league, and (2) define the special environmental rules in effect. You can tell this because you have to go to league totals in order to influence either historical baseball era settings, or to influence minor league performance in any league. This is a flaw, actually. I'm not educated enough on the actual algorithms to know what to do to correct it, but it seems intuitive that Markus could and should get "league average" by doing a true average of the players in the league at any time--this would be calculated in the background and perhaps displayed in a set-up screen. This would remove that aspect of the model fromthe league totals, leaving only an "Era/Environmental adjustment" setting. I think this would make the whole thing less confusing. 4) What have we done to the model to create these stats? Since the OOTP League Totals model includes "expected quality of the players in the league" it is assuming some things about the ratings of players in the league. In other words, if the average quality (ratinngs) of the players in the league are in the ballpark of the league totals, you'll get those results. What we've done, though, is tell the game engine that we've got a league of a level of quality that is far different from the actual players in the league. This means that almost every AB is being made by a player that the game engine views as being an outlier. If the game engine thinks every hitter is effectively made into a Steve Jeltz, or a Babe Ruth, then you can see that things will get out of whack quickly. So essentially we are either lying to the game engine with league totals by telling it that the average player is far out of whack with reality, or by entering these skewed League Totals we're telling the game engine tha the rules/environment we've selected to play in is very different from "real baseball." All that said, there are still things to learn from this set of league data... 5) When you adjust the AB Totals, you can see how the game has implemented the DIPS theory. DIPS says that pitchers control only strikeouts, walks, and HR. So it's interesting to look at these numbers as we adjust AB. When we have High AB League Totals, we find that strikeouts soar. Remember that every result is influenced by pitcher and hitter. So this is because the "league average pitcher" is very poor, so a major league pitcher will strike out a ton of hitters in this environment. Similarly, walks soar because the league average hitter will almost never walk, and the average major league hitter and pitcher walk and give up more walks. Home runs also soar, for the same reason. Of more interest, though, is BABIP. BABIP in this environment is an astronomical .898/.890. So almost every result is either a hit or a strikeout. Similarly, when we lower the AB League total we find the counter to be true--BABIP drops to a paltry .149/.152. What the heck? We didn't change the BABIP setting at all. How can this be? 6) What's going on with BABIP? Time for a caveat. I really know nothing about how the game engine does its thing. Markus has described it before, but in the end only he knows the truth of the engine. But here's my theory, the results engine is not as robust as it needs to be because it determines results in the wrong order. I've said this lots of times, and shown thought-logic to defend my position. But the data above, in my mind, confirms this beyond any shadow of a doubt. Two other things could be aggravating this -- (1) the that BABIP rating could be mapped to values that are too high, but I would guess that's not the case as Markus is ususally pretty diligent about those kinds of things and that would be a moderately big and obvious miss. (2) Markus could still be using the Contact rating to determine events, but I don't think he is. Let's look at some additional data: Code:
League Batting Stats AB/G H/AB 2B/AB 3B/AB HR/AB BB/AB SO/AB BABIP 2B/H 3B/H HR/H 2008 42.4 .411 .089 .011 .071 .744 .551 .898 .216 .026 .173 2009 41.9 .404 .085 .010 .068 .745 .554 .889 .211 .025 .168 2010 33.3 .153 .038 .004 .020 .054 .089 .149 .249 .025 .133 2011 33.0 .155 .039 .004 .020 .052 .086 .152 .248 .023 .128 League Pitching Stats H/9 HR/9 BB/9 K/9 K/BB 2008 17.9 3.1 32.5 24.0 .740 2009 17.4 2.9 32.1 23.9 .744 2010 4.8 0.6 1.7 2.8 1.663 2011 4.9 0.6 1.6 2.7 1.637 Note, also, the three columns to the right (2B/H, 3B/H, and HR/H). Note espeically that our 2B/H and HR/H ratios behave in inverse when the totals flip-flop in dramatic fashion. By this I mean the numbers of 2B/H increase while the numbers of HR/AB decrease, and visa versa. I think this is an important indicator of something, and could speculate on it ... but only Markus would know for sure. 7) Last thoughts This exercise is so interesting because it's stretching the game engine a couple ways--it's saying hitters are better or worse in the same breath (increasing BB, SO, HR all at the same time), and the same for pitchers (increasing BB, SO, and HR). It gives you lots to think about, and shows exactly how complex the game engine really is. It also exposes a few places where it struggles to provide results due to the model's abstraction being made at too high of a level to properly deal with more detailed issues. This is the case for pretty much all baseball simulations (think of the major abstractions in our old dice or spinner games), but it drives a lot of confusion when you get into the details. I recommend that sometime in the future Markus: 1) Calculate the real league average player rating and use that in the definition of League Totals (I'm sure this will be complex, and cause further issues with the historical/fictional crowds) 2) Provide a "Era Adjustments" screen rather than league totals 3) Add the use of GB/FB/LD data to the early stages of the results engine, and determine defense, hit, and HR events at the proper locations (again, I'm sure this is complex). Last edited by RonCo; 07-13-2008 at 11:45 AM. |
|
|
|
|
|
#13 (permalink) |
|
All Star Starter
Join Date: Dec 2001
Location: Redmond Wa and Cape Coast Ghana
Posts: 1,446
Thanked 21x in 15 posts
|
I also notice that if one has ghost players on and 40% to 60% ghost players in a minor league the stats come out way closer to something approaching normal. The more "real" players in a historical minor league the farther off center it gets.
League with ghost players ERA = 3.48, League with almost no ghosties ERA=1.89 League BA with ghosts .263, no ghosties .211 So ghosties seem to have a little bit of an effect as well. |
|
|
|
|
|
#14 (permalink) |
|
Hall Of Famer
Join Date: Aug 2003
Posts: 6,218
Thanked 3x in 2 posts
|
It would make some sense that ghost players would stabilize things a bit, regardless. I assume ghost players are of a "known," stable quantity relative to the game engine. Whethe things will be closer or further away from "normal" really depends on the rest of the "regular" players in the league.
On big message here is that, since the skills and talents in any particular league can and will be different, two leagues with the very same League Totals will provide different results. Output in a league is a function of the quality of the players in the league, the ballparks in the league, and the league totals. Change one and you change the stats output. |
|
|
|
|
|
#15 (permalink) |
|
All Star Starter
Join Date: Dec 2001
Location: Redmond Wa and Cape Coast Ghana
Posts: 1,446
Thanked 21x in 15 posts
|
I have been experimenting with this situation and have found one additional piece of info.
OOTP creates/applies the modifiers once per year. I hand generated the modifiers once per month for my test and changed them by hand. That way it kept bringing the league stats back in line. At years end I came very close to the league-wide stats I was gunning for. I wanted a 4.00 ERA and I got a 4.02. I was shooting for a .250 BA and got .258. Pitcher SO leader had 240, the leader using the default modifiers had 426 SO's. This is what I do during year one of a newly created game at the major league level as the default 1.000 modifiers used during an initial season always creates goofy stats. Apparently the generated default modifiers for minor leagues has a very similar problem. So it appears a possible fix for the well documented initial seasons challenge is the same as a possible fix for the minor league problem. If one adjusts modifiers monthly rather than yearly things are looking up. I think that is called killing two bugs with one whack of the bug killing bat. Last edited by Spritze; 07-13-2008 at 03:45 PM. |
|
|
|
|
|
#16 (permalink) |
|
All Star Starter
Join Date: Apr 2007
Location: Richmond, VA
Posts: 1,834
|
Well, aren't league totals only trying to 'corral' the stat output of the majors level? That is how I understood it. I also say that because the minor leagues take the same league totals as the majors every season (when progressively updated). And minors stats wouldn't mirror the majors overall stats in reality.
So then, it would seem that while the majors are, as I said, being statistically corralled by those league totals, the minors are running free, and pumping out stats based upon the individual player ratings. Which leads me to ask two questions: 1) On what date (or event) are the league totals updated when progressing historically? 2) What would happen if we did this: a) allowed league totals to be updated for upcoming seasons b) turned off league totals until season was completed c) turned league totals on once more for updating, then off again after updating, and so on I am wondering if the game will then function according to player ratings only (as you'd have your modifiers in place), allowing the players to post up stats as they possibly could. Of course, I could be completely missing the boat here with the whole system.
Last edited by SittingDuck; 08-24-2008 at 10:38 AM. |
|
|
|
|
|
#17 (permalink) |
|
Hall Of Famer
Join Date: Aug 2003
Posts: 6,218
Thanked 3x in 2 posts
|
I don't understand your use of the term "corral." But you cannot turn off League Totals in the OOTP results engine. They are used to define "League Average" in the Log5 equation, hence are an active part of the result of any single pitcher/hitter matchup.
League totals do not provide any cap or target for the actual number of any particular event in any particular league. This makes complete sense because otherwise you could not use the same League Totals on a league with 8 teams and one with 30 teams. Last edited by RonCo; 08-24-2008 at 10:59 AM. |
|
|
|
|
|
#18 (permalink) |
|
Hall Of Famer
Join Date: Aug 2003
Posts: 6,218
Thanked 3x in 2 posts
|
And, to address a couple other points in your post:
Minor leagues: They have League Totals, too. Older versions of OOTP used the major league League Totals everywhere, newer versions allow you to change them at every level. Timing of Changes: I assume historical League Totals are updated each January 1, but I really don't know. Above, Spritz showed that you can change league totals any time, but really the better solution sould seem to be to change them once in a way that would make the process work based on the actual players in the league. |
|
|
|
|
|
#20 (permalink) |
|
Hall Of Famer
Join Date: Aug 2003
Posts: 6,218
Thanked 3x in 2 posts
|
I wrote this to respond to someone in another thread, but thought it went better here...so...here are some more League Total thoughts with examples:
------------------------------------- You are right in that the ratings are deciding the percentage chances of an outcome. In an old-time board game (I was all about Sports Illustrated's game in the early 70s), you rolled a dice on a card to see the outcome. Most games found a way to make some results be driven by the pitcher, and others driven by the hitter. My SI game did this by making two separte rolls--one on the pitcher chart, and if nothing occurred, then the offense rolled against the hitter chart. As I think most games do anymore, OOTP uses a more sophisticated approach that is based on Bill James's "Log5" equations. These are really just a special case of what stats folks know, I think, as the Odds Ratio. Truth is, the Odds Ratio would probably give a better result, but it would be more complicated to discuss. Regardless, the game is trying to do the same thing in this equation that we used to do by either rolling multiple times or combining pitcher and hitter cards as in the old Strat/APB kinds of games. You can read a bit about the James equation here: A Short Digression into Log5 -- The Hardball Times Here is the James Log5 equation with the league expected values colored to show their impact on the final equation: Code:
(BAVG * PAVG) / LgAVG) Expected = -------------------------------------------------------- ((BAVG * PAVG) / LgAVG + ((1-BAVG)*(1-PAVG)/(1-LgAvg)) For example, let's try to decide how often Aramis Ramirez will hit a home run off Randy Johnson. For simplicity sake, we'll ignore platoon advantages. You can see by this equation, we need three values: Ramirez's HR ratio, Johnson's HRA ratio, and the league average. For the player's rates, we'll use their actual stats to date: Code:
Ramirez: .0451 HR/AB (22/488) Johnson: .0322 HRA/AB (620BF-61XXXX) (Where XXXX = BB+HP+IBB) Code:
MLB (NL) 2008: .0296 HR/AB (2101/70973) Default OOTP: .0326 HR/AB (5451/167353) Code:
MLB (NL) 2008: = .0499 default OOTP = .0446 Let's fiddle with the OOTP Totals. Now we raise the HR League Total UP from 5451 to 6000. Now OOTP League Expected HR/AB = 6000/167353 = .0359 HR/AB Note that now Johnson's HRA rate is considerably better than league average. And, indeed, a Ramirez/Johnson matchup will result in a HR at a new rate of .0400. If we then lower the HR League total to something lower than the default value (let's say 4000), we get: League Expected: 4000/167353 = .0239 HR/AB Ramirez/Johnson Match-up Expected = .0603 A fairly astronomical increase...because we've told the game engine that Ramirez is much better than the average hitter (.0451 vs. .0239) and Johnson is much worse (.0322 vs. .0239) than the league average pitcher. So, creating a table from all the above: Code:
Ramirez/Johnson HR/AB %: ------------------------ Real Life: .0499 OOTP Default: .0446 OOTP HR Up: .0400 OOTP HR Down: .0603
Last edited by RonCo; 08-25-2008 at 04:24 PM. |
|
|
|
![]() |
| Bookmarks |
| Thread Tools | |
| Display Modes | |
|
|