Saturday, April 6, 2019

Bad Computer Umpire - Faulty Pitch Data Defames Kulpa

Hours after home plate umpire Ron Kulpa ejected Astros coach Alex Cintron and Manager AJ Hinch for arguing a strike one call that MLB's StatCast system deemed an incorrect call, MLBAM's computer quietly changed its call to "correct."

Little did we know, Ron Kulpa got it right.
What once looked like a pretty significant miss on a pitch low in the strike zone all of a sudden—without any fanfare—was revised to a properly officiated knuckle curve that did in fact nick the bottom of batter Tyler White's strike zone. But by then, the damage was done.

The Story: Follow the numbers, if you will: Kulpa's first call during White's at-bat in the top of April 3's second inning against Texas was a strike for Rangers pitcher Mike Minor with a px value of 0.2 and pz value of 1.23 (units of measurement are all in feet).

The computer measured batter White's bottom of the strike zone aka the knee hollow as sz_bot 1.51, meaning the radius of the baseball (RAD) took the zone down to 1.387, still greater than the measured pz value (recorded pitch height) of 1.23. Adding in margin of error (MOE), White's zone decreased to 1.304, still more than 1.23, meaning that the expected outcome for this pitch would be "ball."

Yet Kulpa called "strike," so the computer ruled it an incorrect call, which fans, media, and the like all ran with—Houston even cited this apparent missed call in postgame comments.
Related PostMLB Ejections 007-08 - Ron Kulpa (1-2; Cintron, Hinch) (4/3/19).

Strike one prior to processing (Brooks).
Computer Correction: Postgame processing occurs after MLB's tracker has completed its pitch calling for the day, and before umpires are issued Zone Evaluation scores. Sometimes processing continues through ZE issuance, but in general, ZE is always subject to postgame review whereas real-time TrackMan or MLB Gameday/At Bat app data is raw and unrefined.

It was during this postgame processing that the computer reevaluated White's strike zone boundaries and recalibrated the much-discussed strike one call, opting to lower White's sz_bot from a pre-processed value of 1.51 (1.387 with RAD) to a post-processed sz_bot value of 1.34 (1.217 with RAD)—a decrease of 0.17 feet, or 2.04 inches.

Strike one after processing (MLB Gameday).
Well, baseball is a game of inches, right?

It turns out that by lowering the strike zone by 2.04 inches, QOC for Kulpa's strike call changes from incorrect to correct—all without MOE consideration. The processed sz_bot of 1.34 means that the baseball, due to its radius, traversed the strike zone 0.156 inches (0.013 feet) above the zone's revised lower limit.

Conclusion: Kulpa's call was correct, the pitch was a strike.

Technical Implications: This scenario—the pitch-calling computer changing values such as sz_bot or sz_top (or even px and pz) based on post-game processing—actually happens fairly regularly. We have often written about how the pitch-calling computers are very poor at determining sz_bot and sz_top values. Read our Todd Frazier article, linked below, for further discussion of this problem.
Related PostUEFL f/x vs K-Zone and the Player-Umpire Disconnect (10/4/18).
Related PostTodd Frazier - "These Umpires Have Got to Get Better" (5/3/18).

The first deduction here should be obvious: the computer is not always reliable in real-time. The implication of that remark follows similar logic: if the computer is not always reliable in real-time, it cannot be used to reliably call balls and strikes. And finally, we conclude, if the computer cannot be used to reliably call balls and strikes, it should not usurp the home plate umpire in pitch calling.

A graphical representation of this can be seen in the following article from 2016.
Related PostDude, What Happened Last Night? About Pitch f/x Error (8/30/16).

Social Implications: There are two pieces to this story. One concerns Kulpa's interaction with Hinch and the Astros dugout. The situation handling angle is one we discussed in Episode 13M of The Plate Meeting Podcast.
Related PostPodcast Minisode 13M - AJ Hinch's Mea Ron Kulpa (4/4/19).

A sample chyron placed with Kulpa's image.
The other concerns the actual Quality of Correctness for the pitch at hand. We now know that pitch was correctly officiated.

This not-that-well kept secret also means that the league will rarely, if ever, admit to the flaw's existence. Because the league rarely will ever comment publicly on an umpire's judgment call as it relates to balls and strikes, the league will likewise not issue a statement that its px/pz/sz_bot/sz_top or other similar variables have changed from the end of the game to several hours or days later.

Because the league doesn't explicitly comment on umpires' pitch calls, the league has no reason to announce when its computer numbers have changed.

In theory, that's pretty fair and pretty logical.

In practice, however, the league gratuitously avails its data for public consumption, which is a tremendous service, but one similarly subject to the modern Twitterverse's methodology of "rush to judgment." A data scientist (or novice baseball fan) who saw Kulpa's strike call during White's at-bat was exposed to Gameday data suggesting the call was incorrect, and very most likely takes this instant analysis and runs with it—the UEFL itself publishes QOC information in ejection reports based, in part, on this data.

A pitch dataset's job is never quite complete.
The problem is when the computer corrects its data, such refinement is not announced, leaving a vast majority of consumers to believe that the initial, faulty, data is the law of the land.

As for us, we regularly revisit pitch ejection data because we know the computer's post production sometimes causes its numbers to change—that's how we discovered Kulpa actually made the correct call Wednesday night: not because anyone announced it, but because of the old-fashioned journalistic premise of following a story to make sure we get it right.

Scoring Change: Ron Kulpa goes from -6 (pre-) to +6 points in the UEFL Standings following this correction (2*[2 MLB + 2 Correct Call], as opposed to -4 Incorrect Call) and Jerry Meals also picks up two points in Crew Division.


Post a Comment