In_Class Activity 11 - Sabermetric Research

Which of the following is most likely to be a topic of Sabermetric research? Why?

  1. Evaluating how the attitude of managers influences player performance
  2. Determining the correlation between scouting predictions and player performance
  3. Predicting how many home runs the Oakland A’s will hit next year

Out of the three option, the most likely to be a sabermetric research topic is #3, predicting how many home runs the Oakland A’s will hit next year.

Sabermetrics is about using objective, measureable baseball data to answer questions about on-field performance. Predicting home runs fits that definition. There are years of hitting stats, roster info, and park data to work with, and the answer is a specific number you can check against reality once the season plays out.

Option 1 doesn’t fit because a manager’s attitude isn’t something you can measure with numbers. That’s more of a psychology question. Option 2 is closer, but it’s really asking whether scouts are good at their jobs, so it’s about the evaluation process rather than on-field performance.

Number 3 wins because the question, the data, and the method all line up with what sabermetrics actually does.

Using R to see sabermetric forecast works.

Even though this assignment doesn’t ask for code, I wanted to actually build the projection in R so I could see how a sabermetric forecast works. Below is a simplified version of the Marcel projection system, a well-known baseline method created by Tom Tango. It’s intentionally basic, but it uses the core ideas behind every serious projection: weighting recent seasons more heavily, regressing extreme results toward the league average, and adjusting for roster age. Running it on the Oakland A’s gives a concrete home run projection for next season and shows what the “objective, statistical analysis” side of sabermetrics looks like in practice.

Historical Data

# Oakland A's team home run totals from recent seasons (Baseball-Reference)
# We use the most recent 3 seasons because Marcel weights recent data more
oakland_hr <- data.frame(
  season = c(2023, 2024, 2025),
  HR     = c(147, 159, 137),   # Actual Oakland A's HR totals
  weight = c(3, 4, 5)          # Marcel weights: oldest=3, middle=4, newest=5
)

oakland_hr

League context

# We need a league-average HR total to "regress toward"
# MLB team average was roughly 170 HR per team in recent seasons
league_avg_hr <- 170

Weighted average of Oakland’s recent performance

# This captures their true underlying HR-hitting talent
weighted_oak_hr <- sum(oakland_hr$HR * oakland_hr$weight) / sum(oakland_hr$weight)
weighted_oak_hr
[1] 146.8333

Regression to the mean

# Marcel regresses ~1200 PA worth of data toward league average
# For a team projection, we use a lighter regression factor (~20%)
# Meaning: the projection is 80% "what Oakland actually did" + 20% "league average"
regression_factor <- 0.20

projected_hr <- (1 - regression_factor) * weighted_oak_hr +
                 regression_factor      * league_avg_hr

Age adjustment

# Marcel applies a small aging factor. For a young rebuilding team like the A's,
# we might expect slight improvement (+2%). Older teams would get a decline.
age_factor <- 1.02   # +2% for a young roster trending upward

final_projection <- projected_hr * age_factor

# --- Results -----------------------------------------------------------------
cat("Weighted recent HR average:  ", round(weighted_oak_hr, 1), "\n")
Weighted recent HR average:   146.8 
cat("After regression to mean:    ", round(projected_hr, 1), "\n")
After regression to mean:     151.5 
cat("After age adjustment:        ", round(final_projection, 1), "\n\n")
After age adjustment:         154.5 
cat("PROJECTION: Oakland A's are forecast to hit approximately",
    round(final_projection), "home runs next season.\n")
PROJECTION: Oakland A's are forecast to hit approximately 154 home runs next season.
LS0tCnRpdGxlOiAiU2FiZXJtZXRyaWMgUmVzZWFyY2giCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMgSW5fQ2xhc3MgQWN0aXZpdHkgMTEgLSBTYWJlcm1ldHJpYyBSZXNlYXJjaCAKCioqV2hpY2ggb2YgdGhlIGZvbGxvd2luZyBpcyBtb3N0IGxpa2VseSB0byBiZSBhIHRvcGljIG9mIFNhYmVybWV0cmljIHJlc2VhcmNoPyBXaHk/KioKCiAgMS4gRXZhbHVhdGluZyBob3cgdGhlIGF0dGl0dWRlIG9mIG1hbmFnZXJzIGluZmx1ZW5jZXMgcGxheWVyIHBlcmZvcm1hbmNlIAogIDIuIERldGVybWluaW5nIHRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHNjb3V0aW5nIHByZWRpY3Rpb25zIGFuZCBwbGF5ZXIgcGVyZm9ybWFuY2UgCiAgMy4gUHJlZGljdGluZyBob3cgbWFueSBob21lIHJ1bnMgdGhlIE9ha2xhbmQgQSdzIHdpbGwgaGl0IG5leHQgeWVhciAKCk91dCBvZiB0aGUgdGhyZWUgb3B0aW9uLCB0aGUgbW9zdCBsaWtlbHkgdG8gYmUgYSBzYWJlcm1ldHJpYyByZXNlYXJjaCB0b3BpYyBpcyAjMywgcHJlZGljdGluZyBob3cgbWFueSBob21lIHJ1bnMgdGhlIE9ha2xhbmQgQSdzIHdpbGwgaGl0IG5leHQgeWVhci4KClNhYmVybWV0cmljcyBpcyBhYm91dCB1c2luZyBvYmplY3RpdmUsIG1lYXN1cmVhYmxlIGJhc2ViYWxsIGRhdGEgdG8gYW5zd2VyIHF1ZXN0aW9ucyBhYm91dCBvbi1maWVsZCBwZXJmb3JtYW5jZS4gUHJlZGljdGluZyBob21lIHJ1bnMgZml0cyB0aGF0IGRlZmluaXRpb24uIFRoZXJlIGFyZSB5ZWFycyBvZiBoaXR0aW5nIHN0YXRzLCByb3N0ZXIgaW5mbywgYW5kIHBhcmsgZGF0YSB0byB3b3JrIHdpdGgsIGFuZCB0aGUgYW5zd2VyIGlzIGEgc3BlY2lmaWMgbnVtYmVyIHlvdSBjYW4gY2hlY2sgYWdhaW5zdCByZWFsaXR5IG9uY2UgdGhlIHNlYXNvbiBwbGF5cyBvdXQuCgpPcHRpb24gMSBkb2Vzbid0IGZpdCBiZWNhdXNlIGEgbWFuYWdlcidzIGF0dGl0dWRlIGlzbid0IHNvbWV0aGluZyB5b3UgY2FuIG1lYXN1cmUgd2l0aCBudW1iZXJzLiBUaGF0J3MgbW9yZSBvZiBhIHBzeWNob2xvZ3kgcXVlc3Rpb24uIE9wdGlvbiAyIGlzIGNsb3NlciwgYnV0IGl0J3MgcmVhbGx5IGFza2luZyB3aGV0aGVyIHNjb3V0cyBhcmUgZ29vZCBhdCB0aGVpciBqb2JzLCBzbyBpdCdzIGFib3V0IHRoZSBldmFsdWF0aW9uIHByb2Nlc3MgcmF0aGVyIHRoYW4gb24tZmllbGQgcGVyZm9ybWFuY2UuCgpOdW1iZXIgMyB3aW5zIGJlY2F1c2UgdGhlIHF1ZXN0aW9uLCB0aGUgZGF0YSwgYW5kIHRoZSBtZXRob2QgYWxsIGxpbmUgdXAgd2l0aCB3aGF0IHNhYmVybWV0cmljcyBhY3R1YWxseSBkb2VzLgoKCgojIFVzaW5nIFIgdG8gc2VlIHNhYmVybWV0cmljIGZvcmVjYXN0IHdvcmtzLgoKRXZlbiB0aG91Z2ggdGhpcyBhc3NpZ25tZW50IGRvZXNuJ3QgYXNrIGZvciBjb2RlLCBJIHdhbnRlZCB0byBhY3R1YWxseSBidWlsZCB0aGUgcHJvamVjdGlvbiBpbiBSIHNvIEkgY291bGQgc2VlIGhvdyBhIHNhYmVybWV0cmljIGZvcmVjYXN0IHdvcmtzLiBCZWxvdyBpcyBhIHNpbXBsaWZpZWQgdmVyc2lvbiBvZiB0aGUgTWFyY2VsIHByb2plY3Rpb24gc3lzdGVtLCBhIHdlbGwta25vd24gYmFzZWxpbmUgbWV0aG9kIGNyZWF0ZWQgYnkgVG9tIFRhbmdvLiBJdCdzIGludGVudGlvbmFsbHkgYmFzaWMsIGJ1dCBpdCB1c2VzIHRoZSBjb3JlIGlkZWFzIGJlaGluZCBldmVyeSBzZXJpb3VzIHByb2plY3Rpb246IHdlaWdodGluZyByZWNlbnQgc2Vhc29ucyBtb3JlIGhlYXZpbHksIHJlZ3Jlc3NpbmcgZXh0cmVtZSByZXN1bHRzIHRvd2FyZCB0aGUgbGVhZ3VlIGF2ZXJhZ2UsIGFuZCBhZGp1c3RpbmcgZm9yIHJvc3RlciBhZ2UuIFJ1bm5pbmcgaXQgb24gdGhlIE9ha2xhbmQgQSdzIGdpdmVzIGEgY29uY3JldGUgaG9tZSBydW4gcHJvamVjdGlvbiBmb3IgbmV4dCBzZWFzb24gYW5kIHNob3dzIHdoYXQgdGhlICJvYmplY3RpdmUsIHN0YXRpc3RpY2FsIGFuYWx5c2lzIiBzaWRlIG9mIHNhYmVybWV0cmljcyBsb29rcyBsaWtlIGluIHByYWN0aWNlLgoKIyMgSGlzdG9yaWNhbCBEYXRhCmBgYHtyfQojIE9ha2xhbmQgQSdzIHRlYW0gaG9tZSBydW4gdG90YWxzIGZyb20gcmVjZW50IHNlYXNvbnMgKEJhc2ViYWxsLVJlZmVyZW5jZSkKIyBXZSB1c2UgdGhlIG1vc3QgcmVjZW50IDMgc2Vhc29ucyBiZWNhdXNlIE1hcmNlbCB3ZWlnaHRzIHJlY2VudCBkYXRhIG1vcmUKb2FrbGFuZF9ociA8LSBkYXRhLmZyYW1lKAogIHNlYXNvbiA9IGMoMjAyMywgMjAyNCwgMjAyNSksCiAgSFIgICAgID0gYygxNDcsIDE1OSwgMTM3KSwgICAjIEFjdHVhbCBPYWtsYW5kIEEncyBIUiB0b3RhbHMKICB3ZWlnaHQgPSBjKDMsIDQsIDUpICAgICAgICAgICMgTWFyY2VsIHdlaWdodHM6IG9sZGVzdD0zLCBtaWRkbGU9NCwgbmV3ZXN0PTUKKQoKb2FrbGFuZF9ocgpgYGAKCiMjIExlYWd1ZSBjb250ZXh0CgpgYGB7cn0KIyBXZSBuZWVkIGEgbGVhZ3VlLWF2ZXJhZ2UgSFIgdG90YWwgdG8gInJlZ3Jlc3MgdG93YXJkIgojIE1MQiB0ZWFtIGF2ZXJhZ2Ugd2FzIHJvdWdobHkgMTcwIEhSIHBlciB0ZWFtIGluIHJlY2VudCBzZWFzb25zCmxlYWd1ZV9hdmdfaHIgPC0gMTcwCmBgYAoKIyMgV2VpZ2h0ZWQgYXZlcmFnZSBvZiBPYWtsYW5kJ3MgcmVjZW50IHBlcmZvcm1hbmNlCmBgYHtyfQojIFRoaXMgY2FwdHVyZXMgdGhlaXIgdHJ1ZSB1bmRlcmx5aW5nIEhSLWhpdHRpbmcgdGFsZW50CndlaWdodGVkX29ha19ociA8LSBzdW0ob2FrbGFuZF9ociRIUiAqIG9ha2xhbmRfaHIkd2VpZ2h0KSAvIHN1bShvYWtsYW5kX2hyJHdlaWdodCkKd2VpZ2h0ZWRfb2FrX2hyCmBgYAoKIyMgUmVncmVzc2lvbiB0byB0aGUgbWVhbgpgYGB7cn0KIyBNYXJjZWwgcmVncmVzc2VzIH4xMjAwIFBBIHdvcnRoIG9mIGRhdGEgdG93YXJkIGxlYWd1ZSBhdmVyYWdlCiMgRm9yIGEgdGVhbSBwcm9qZWN0aW9uLCB3ZSB1c2UgYSBsaWdodGVyIHJlZ3Jlc3Npb24gZmFjdG9yICh+MjAlKQojIE1lYW5pbmc6IHRoZSBwcm9qZWN0aW9uIGlzIDgwJSAid2hhdCBPYWtsYW5kIGFjdHVhbGx5IGRpZCIgKyAyMCUgImxlYWd1ZSBhdmVyYWdlIgpyZWdyZXNzaW9uX2ZhY3RvciA8LSAwLjIwCgpwcm9qZWN0ZWRfaHIgPC0gKDEgLSByZWdyZXNzaW9uX2ZhY3RvcikgKiB3ZWlnaHRlZF9vYWtfaHIgKwogICAgICAgICAgICAgICAgIHJlZ3Jlc3Npb25fZmFjdG9yICAgICAgKiBsZWFndWVfYXZnX2hyCgpgYGAKCiMjIEFnZSBhZGp1c3RtZW50CmBgYHtyfQojIE1hcmNlbCBhcHBsaWVzIGEgc21hbGwgYWdpbmcgZmFjdG9yLiBGb3IgYSB5b3VuZyByZWJ1aWxkaW5nIHRlYW0gbGlrZSB0aGUgQSdzLAojIHdlIG1pZ2h0IGV4cGVjdCBzbGlnaHQgaW1wcm92ZW1lbnQgKCsyJSkuIE9sZGVyIHRlYW1zIHdvdWxkIGdldCBhIGRlY2xpbmUuCmFnZV9mYWN0b3IgPC0gMS4wMiAgICMgKzIlIGZvciBhIHlvdW5nIHJvc3RlciB0cmVuZGluZyB1cHdhcmQKCmZpbmFsX3Byb2plY3Rpb24gPC0gcHJvamVjdGVkX2hyICogYWdlX2ZhY3RvcgoKIyAtLS0gUmVzdWx0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpjYXQoIldlaWdodGVkIHJlY2VudCBIUiBhdmVyYWdlOiAgIiwgcm91bmQod2VpZ2h0ZWRfb2FrX2hyLCAxKSwgIlxuIikKY2F0KCJBZnRlciByZWdyZXNzaW9uIHRvIG1lYW46ICAgICIsIHJvdW5kKHByb2plY3RlZF9ociwgMSksICJcbiIpCmNhdCgiQWZ0ZXIgYWdlIGFkanVzdG1lbnQ6ICAgICAgICAiLCByb3VuZChmaW5hbF9wcm9qZWN0aW9uLCAxKSwgIlxuXG4iKQpjYXQoIlBST0pFQ1RJT046IE9ha2xhbmQgQSdzIGFyZSBmb3JlY2FzdCB0byBoaXQgYXBwcm94aW1hdGVseSIsCiAgICByb3VuZChmaW5hbF9wcm9qZWN0aW9uKSwgImhvbWUgcnVucyBuZXh0IHNlYXNvbi5cbiIpCgpgYGAKCg==