One of the most interesting trends in baseball is the offensive explosion that’s occurred over the last three years. This year, teams are scoring an average of 4.66 runs per game, the most since 2007. That’s a remarkable increase from the 4.07 runs per game in 2014—which happened to be the fewest since 1981.

Within the span of three seasons, Major League Baseball went from having one of the weakest offensive environments since the dead-ball era to having one of the strongest. It’s still not entirely clear how and why that happened, although there are plenty of theories to go around.

What’s particularly striking is how this trend has manifested itself in individual players’ stats. Metrics like wRC+ and ERA- are valuable because they put players’ production on a simple scale—with 100 being average—while accounting for the year, league, and ballpark in which those players play. A hitter with a 110 wRC+ and a pitcher with a 90 ERA- are 10% better than league-average when accounting for those factors.

Because these stats are context neutral, they allow us to make fair comparisons between players who played in different years. For example, by comparing players on the 2017 Mets to those on the 2014 team using these metrics, we get a pretty stunning look at the rise of offense in baseball. The following stats are current as of Monday morning.

Year Player AVG OBP SLG wRC+ 2014 Travis d'Arnaud .242 .302 .416 102 2017 Neil Walker .253 .331 .430 102

By the traditional rate stats, Neil Walker is having a very solid year for the Mets. His .331 on-base percentage and .430 slugging percentage would typically make him a safely above-average offensive player. This year, not so much. Walker’s 102 wRC+ indicates that, in baseball’s current offensive environment, he is just about league-average.

Compare Walker’s production to that of Travis d’Arnaud in 2014. d’Arnaud was considered somewhat of a disappointment in his first full season as the Mets’ catcher, getting on base in barely 30% of his plate appearances and slugging .416. While, plate-appearance-for-plate-appearance, Walker has been considerably better in every regard, the two players have an identical 102 wRC+. As surprising as it may sound, Walker is no more productive relative to the league in which he’s playing than d’Arnaud was three years ago.

Year Player AVG OBP SLG wRC+ 2014 Lucas Duda .253 .349 .481 135 2017 Lucas Duda .246 .347 .532 128

Another case-in-point is Lucas Duda. Duda was the Mets’ best hitter in 2014, and his .253/.349/.481 batting line yielded an excellent 135 wRC+. Before he was traded this year, the first baseman posted a nearly identical batting average and on-base percentage, but a slugging percentage that was more than 50 points higher. Remarkably, Duda’s wRC+ was actually seven points lower this year than it was in 2014.

Year Player AVG OBP SLG wRC+ 2014 Wilmer Flores .251 .286 .378 87 2017 Jose Reyes .221 .284 .376 74

On the flip side, Jose Reyes has been the Mets’ worst hitter in 2017. In fact, among the 160 qualified hitters in Major League Baseball, Reyes ranks 14th from the bottom in wRC+ due to an awful .221/.284/.376 line. As bad as he’s been, a hitter posting a similar line in 2014 would have been much closer to league-average. Consider Wilmer Flores, who hit .251/.286/.378 that year. While not very good, Flores was only 13% worse than league-average. Reyes, whose current OPS is within four points of Flores’s 2014 mark, is now 26% worse than a league-average hitter.

Year Player ERA ERA- 2014 Zack Wheeler 3.54 102 2017 Paul Sewald 4.27 104

The pitching metrics paint a similar story. Paul Sewald, for example, is having the kind of solid year out of the pen that Zack Wheeler had as a starter in 2014, each resulting in basically league-average ERAs. The only difference: Sewald’s unadjusted ERA is more than 70 points higher than Wheeler’s was three years ago.

Year Player ERA ERA- 2014 Jon Niese 3.40 98 2017 Jacob deGrom 3.36 82

Jacob deGrom has been the Mets’ ace this year, pitching to a 3.36 ERA, which is 18% better than league-average. Compare that to Jon Niese’s barely indistinguishable 3.40 ERA in 2014. No one considered Niese to be ace material that year, and for good reason: His adjusted ERA indicates that he was basically a league-average pitcher.

Year Player ERA ERA- 2014 Gonzalez Germen 4.75 136 2017 Seth Lugo 4.55 111

Finally, let’s take a trip down memory lane to the ill-fated Mets tenure of Gonzalez Germen. The reliever was nearly unplayable in 2014, surrendering seven home runs and 14 walks in just 30.1 innings of work. Germen’s 4.75 ERA that year translated to a dreadful 136 ERA-. Although there’s no clean comparison to any Mets pitcher in 2017, Seth Lugo is pitching to a 4.55 ERA, which is in similar territory as Germen’s and certainly doesn’t look great on paper. Given baseball’s prolific offensive environment, however, Lugo’s ERA- is a respectable 111, indicating just an 11% deviation from the league-average mark.

Anyone who watches baseball can see that run scoring has gone up dramatically. Still, the comparisons to just three years ago—with the help of context-neutral stats—are startling. It’s hard to believe, for example, that Neil Walker hasn’t been a more valuable offensive player than Travis d’Arnaud was in 2014.

Most of us think that Walker is having a better year because, based on everything we’ve seen, he is. Not only is he hitting for a higher average but, more importantly, he’s getting on base more and hitting for more power.

But sports aren’t about competing with one’s own teammates, or with players from years past. It’s about how players perform relative to their peers. If Michael Conforto hits 30 home runs next year, is that a “large” total if every other player in the league hits 60?

It can be hard to grasp how certain players are performing compared to others around the league, since most of us generally follow the same team every night. That’s why these stats are so useful. They contextualize what we see on the field so that we can more accurately measure a player’s value. What these metrics tell us about today’s game is something that’s becoming more and more obvious to those who watch it every day: Offense is back, and it’s happening in a hurry.