In_Class Activity 11 - Sabermetric Research
Which of the following is most likely to be a topic of
Sabermetric research? Why?
- Evaluating how the attitude of managers influences player
performance
- Determining the correlation between scouting predictions and player
performance
- 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
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==