I’ve run this query to find games where average pfx_z movement of fastballs (PITCH_TYPE = FF) differed from one game to another. There is probably a better way using a nested SELECT, but this worked for me:

create temporary table pfx_temp_01 as

Select concat(game_id, home) as new_game_id, pfx_z from baseball_13.mlb_pitches WHERE PITCH_TYPE = ‘FF’;

create temporary table pfx_temp_02 as

select new_game_id, avg(pfx_z) as avg_pfx_z from pfx_temp_01 group by new_game_id;

select new_game_id, avg_pfx_z from pfx_temp_02 where avg_pfx_z < 0 ;

drop temporary table pfx_temp_01, pfx_temp_02;

This gives me a list of 173 games from 2013 where the average pfx_z for a game was less than zero. The average (of the average) for these games is -4.01 (sd = 0.53). The average (of the average) for all the other games of that year (i.e. where the average pfx_z was greater than zero) is 9.06 (sd = 1.38).

Then I ran this query to extract the individual pitches from the subset of games where the average pfx_z was less than zero:

create temporary table pfx_temp_01 as

Select concat(game_id, home) as new_game_id, pfx_z from baseball_13.mlb_pitches WHERE PITCH_TYPE = ‘FF’;

create temporary table pfx_temp_02 as

select new_game_id, avg(pfx_z) as avg_pfx_z from pfx_temp_01 group by new_game_id;

create temporary table pfx_temp_03 as

select new_game_id, avg_pfx_z from pfx_temp_02 where avg_pfx_z < 0 ;

select a.new_game_id, a.pfx_z from pfx_temp_01 a join pfx_temp_03 b where a.new_game_id = b.new_game_id;

drop temporary table pfx_temp_01, pfx_temp_02, pfx_temp_03;

The average pfx_z of the 18,548 individual FF pitches for these games is -3.99 (sd = 1.07)

The average pfx_z of the 227,067 individual FF pitches for the games where the average pfx_z for the game was greater than zero is 9.11 (sd = 2.34)

These have got to be two very distinct groups. Now to try and figure out why …

………………

total pitches thrown in 2013 = 709630

FF pitches in 2013 = 245615

………………….

And, as it turns out, 2013 isn’t the only year. I’ve downloaded game data back to 2010 and the results are:

Year |
# games where average FF pfx_z < 0 |

2010 | 0 |

2011 | 1 |

2012 | 72 |

2013 | 173 |

2014 | 0 |

2015 | 0 |

2016 | 0 |