In a game of numbers like baseball, fans and GM's alike have looked to many stats to attempt to quantify the offensive prowess of a player.
Probably the oldest stat is Batting Average, which tells us how many hits per at-bat a player got. The flaw with this statistic is that walks are completely left out, neither counted as a positive or negative. Also, the power of the hits is not taken into consideration. A single is counted the same as a home run. To validate the ineffectiveness of this stat to tell the whole story, Ichiro and Albert Pujols have almost identical career AVG's, at .333 and .334 respectively. I don't think anyone would argue that Ichiro is as good a hitter, however, so clearly Batting Average is not telling us the whole story.
Another widely used stat is On-Base Percentage. This stat is similar to AVG, but it also counts walks and being hit by a pitch. Similar to AVG, its main failing is that it counts a Home Run the same as a single or walk. So, for the same reason that AVG does not show us the whole picture, OBP is likewise flawed.
A stat that rectifies the issues with AVG and OBP is Slugging Percentage. This stat counts how many total bases per at-bat a player got. While it addresses the main flaw of AVG and OBP, it has its own flaws. First, it, like AVG, ignores BBs and HBPs. Second, the weights used for each type of hit are not indicative of how many runs, on average, it will be worth. SLG counts a Home Run as four times more important than a Single, but a Home Run does not net you four times as many runs as a single, on average.
While they have their failings, OBP and SLG do tell us very important things: how good is a player at getting on base, and how good is a player at getting extra-base hits. An attempt to merge these two together into one all-around "offensive prowess" stat is OPS, On-Base Plus Slugging. It is exactly what it is named, OBP + SLG = OPS. Since its introduction in 1984, this stat has become very popular because of its simplicity. It is its simplicity, however, that is its greatest downfall. First of all, it is based on two very flawed statistics. Rather than fixing the flaws inherent in either stat, it just adds them together and hopes their flaws cancel each other out. To a certain extent they do, but this is certainly not the best way to go about doing this. Second, OBP and SLG are on completely different scales, so adding them together is meaningless if you don't scale them together first. For example, say you have two players who both have an OPS of .800. Player A has an OBP of .400 and SLG of .400, while Player B has an OBP of .350 and SLG of .450. OPS says these players are equal, but that is not true at all! Player A will create more runs for his team with his ability to reach base. Plainly put, OPS undervalues OBP, and overvalues SLG.
Finally, we reach the first finalist in our battle of the statistics, OPS+, or On-Base Plus Slugging Plus. OPS+ takes OPS, makes an adjustment for the parks the player played in, and then compares that result to the average in the league that year, making a score of 100 average, anything below that below average, and above it above average. This does two things to make OPS better. First, it takes into account if a player is in a hitter friendly or pitcher friendly park. Basically, if two hitters have equal OPS, but one plays in Coor's Field while the other plays in Petco Park, the player who plays in Petco is actually better because he's hitting in a tougher ballpark, and OPS+ reflects this. Finally, OPS+ allows us to compare players across different eras. A league average OPS is defined as an OPS+ of 100 in any given year, so we can see how good a hitter was for his day, and compare hitters across any era of play. While OPS+ is an improvement over OPS, is still shares the inherent problems of OPS, though.
Let's take a different approach now. Throw all the conventional stats away. What is the purpose of offense? It's to score runs, am I right? As I mentioned earlier, one of the flaws of SLG was that it valued a HR as four times better than a single, but a HR will not net your team four times more runs than a single, on average. If there is no one on base, a HR gives your team one run. If in that same at bat, the hitter gets a single, there is still a chance he will come around to score. How many more runs, on average, will a HR net you than a single? Enter linear weights. By analyzing decades of data, Sabermetricians were able to find the average run value of every possible outcome at the plate. For instance, a HR has a run value of greater than 1, since you might have runners on base. A single has a greater run value than a walk because runners will often go from second to home, or first to third on a single. By comparing every result of a plate appearance to an out, which is defined as a run value of 0, we can find how many more runs each result is worth above an out.
This brings us to a wonderful statistic known as wOBA, or Weighted On-Base Average. This statistic weights the different outcomes of an at-bat, similar to how SLG weights different hits, but it uses the linear weights found by analyzing the decades of data we have. The following is the equation for wOBA:
((0.72 x NIBB) + (0.75 x HBP) + (0.90 x 1B) + (0.92 x RBOE) + (1.24 x 2B) + (1.56 x 3B) + (1.95 x HR) + (.25 x SB) - (.50 x CS)) / PA
NIBB is non-intentional walks, since batters have no control over an intentional walk, and RBOE is reached base on error. First of all, wOBA is great because it uses much more precise weights than SLG. It also accounts for pretty much anything a hitter can do at the plate, and even includes stealing bases. This lets us judge the overall offensive ability of a guy who steals a lot of bases against a guy who hits a lot of home runs, and see which is actually producing more runs. wOBA is scaled to look like OBP, so league average is around .340, which fluctuates from year to year, a great hitter is above .400, and a poor hitter is below .300. wOBA is also great because it lets us easily calculate how many more runs above average a hitter will get for your team in a year. All you do is take the difference of their wOBA and the league average wOBA, divide by 1.15 (which is the scaling factor used to make wOBA look like OBP), and finally multiply by the hitter's plate appearances.
Finally, we come to the second finalist in our battle of the statistics: wRC+, or Weighted Runs Created Plus. For those of you who are good with analogies, wRC+ : wOBA :: OPS+ : OPS. Put simply, wRC+ takes wOBA, adjusts it for park factors, and then normalizes it so that league average in any given year is a wRC+ of 100. As you can see, wRC+ comes out looking just like OPS+, but it is based on the far more accurate wOBA. It also includes more information, like stealing bases.
While wRC+ might not be absolutely perfect, it is by far the best statistic we have to judge overall offensive production right now. You can find wRC+ on www.fangraphs.com under the "advanced" tab for hitters. With the advent of wOBA and wRC+, there is really no reason to ever use OPS or OPS+ ever again.