← 記事一覧へ

投手が取られた直後に打線が奮起. よくありますね.

取られたら取り返す. 大事です.

直前に点を取られたかどうかは, その後の攻撃に影響するんですかね?

データ

2013年のメジャーリーグのデータを利用します.

library(data.table)
library(dplyr)
library(ggplot2)
source("../../R/retrosheet.R")

dat <- fread("../../data/all2013.csv")
setnames(dat, fread("../../data/reference/retrosheet-columns.csv", header = FALSE)[[1]])

半イニングごとの得点

HOME_SCORE_CT / AWAY_SCORE_CT はプレー「前」のスコアなので, 半イニングごとに max() を取って差分すると, その半イニングの最後のプレーで入った得点が 次の半イニングに繰り越されてしまいます. 各プレーで生還した走者を数えるのが正しい数え方です (R/retrosheet.R).

innings <- half_inning_runs(dat) |> as_tibble()

どのイニングを使うか

ここが結果を左右します.

9回裏は, ホームが勝っていれば行われません. 2013年では9回表があった 2423試合のうち, 9回裏があったのは 1359試合だけです.

つまり「9回表に点を取られたか」と「9回裏が行われるか」は無関係ではありません. 取られていれば裏の攻撃はほぼ必ずありますが, 取られずにホームが勝っていれば 攻撃自体がありません. このまま全イニングを使うと, 「直前に取られた」側にだけ9回裏が多く混ざります.

さらに, サヨナラ勝ちの回や延長戦の一部は3アウトを待たずに終わるので, 得点が切り詰められます.

completeness <-
  dat |>
  as_tibble() |>
  summarise(未完 = sum(EVENT_OUTS_CT) < 3,
            .by = c(GAME_ID, INN_CT, BAT_HOME_ID)) |>
  summarise(半イニング = n(), 未完 = sum(未完), .by = INN_CT) |>
  arrange(INN_CT)
completeness |> filter(INN_CT <= 11) |> knitr::kable()
INN_CT 半イニング 未完
1 4862 0
2 4862 0
3 4862 0
4 4862 0
5 4862 0
6 4860 1
7 4853 1
8 4846 0
9 3782 114
10 486 60
11 252 26

イニング1〜8は必ず両チームが攻撃し, 3アウトで終わります. 以降はこの範囲だけを使います. 9回以降を含めるかどうかで結論が変わるので, 最後に比較します.

runs_by_half <-
  innings |>
  arrange(GAME_ID, INN_CT, BAT_HOME_ID) |>
  mutate(直前の失点 = lag(runs), .by = GAME_ID) |>
  filter(!is.na(直前の失点)) |>
  mutate(取られた直後 = 直前の失点 > 0)

main <- runs_by_half |> filter(INN_CT <= 8)

集計結果

by_flag <-
  main |>
  summarise(半イニング = n(), 平均得点 = mean(runs), 分散 = var(runs),
            .by = 取られた直後) |>
  arrange(取られた直後)
by_flag |> knitr::kable(digits = 4)
取られた直後 半イニング 平均得点 分散
FALSE 26723 0.4746 0.9573
TRUE 9715 0.4651 0.9583

差は -0.0096 点/半イニング, 95%信頼区間は [-0.0323, +0.0132] です.

この区間は0をまたいでいます. 点推定は「取られた直後のほうがわずかに低い」 という向きですが, 符号すら確かとは言えません.

大きさの感覚としては, 平均得点そのものが0.475点なので, 区間の端でも6.8%程度です. 仮に本当に差があったとしても, その大きさはこの範囲に収まります.

つまりこのデータからは, 「取られたら取り返す」も「取り返せない」も 支持できません. 言えるのは「あったとしても数%以内」ということです.

イニングをそろえて見る

イニングによって平均得点は違います (序盤ほど高い). 「取られた直後」の割合もイニングで少しずつ違うので, ここを揃えます.

by_inning <-
  main |>
  summarise(平均得点 = mean(runs), n = n(), sd = sd(runs),
            .by = c(INN_CT, 取られた直後)) |>
  mutate(se = sd / sqrt(n))

by_inning |>
  ggplot(aes(x = factor(INN_CT), y = 平均得点,
             colour = 取られた直後, group = 取られた直後)) +
  geom_line() +
  geom_pointrange(aes(ymin = 平均得点 - 1.96 * se, ymax = 平均得点 + 1.96 * se)) +
  xlab("イニング") +
  ggtitle("直前に取られたかどうか別の平均得点 (95%信頼区間)")

どのイニングでも信頼区間は大きく重なっています.

線形モデルでイニングと表裏を調整しても結論は同じです.

fit <- lm(runs ~ 取られた直後 + factor(INN_CT) + factor(BAT_HOME_ID), data = main)
co <- summary(fit)$coefficients["取られた直後TRUE", , drop = FALSE]
round(co, 5)
##                  Estimate Std. Error  t value Pr(>|t|)
## 取られた直後TRUE -0.00953    0.01159 -0.82243  0.41084

調整後の係数は-0.0095 (標準誤差0.0116) で, やはり0と区別がつきません.

9回以降を入れるとどうなるか

compare <-
  bind_rows(
    runs_by_half |> filter(INN_CT <= 8) |> mutate(範囲 = "1-8回のみ"),
    runs_by_half |> mutate(範囲 = "全イニング")
  ) |>
  summarise(平均得点 = mean(runs), n = n(), .by = c(範囲, 取られた直後)) |>
  tidyr::pivot_wider(names_from = 取られた直後, values_from = c(平均得点, n)) |>
  mutate(差 = 平均得点_TRUE - 平均得点_FALSE)
compare |> knitr::kable(digits = 4)
範囲 平均得点_TRUE 平均得点_FALSE n_TRUE n_FALSE
1-8回のみ 0.4651 0.4746 9715 26723 -0.0096
全イニング 0.4535 0.4651 10897 30471 -0.0116

1〜8回だけなら-0.0096点ですが, 全イニングだと -0.0116点になります.

この違いは打者の奮起とは関係ありません. 9回裏が「取られた直後」に偏って 含まれることによる, 分析対象の選び方が作った差です. 9回裏に回ってくるのはホームが勝っていない場面なので, もともと得点の入り方が 違います.

結論

このデータからは「取られたら取り返す」は支持できませんが, 否定もできません.

1〜8回に絞って比べると差は-0.0096点, 95%信頼区間は[-0.0323, +0.0132]で0を含みます. 点推定はむしろわずかに低い側ですが, 符号を主張できるほどではありません.

言えるのは「あったとしても平均得点の数%以内」ということです.

検定

念のためWilcoxonの順位和検定もかけておきます.

w <- wilcox.test(runs ~ 取られた直後, data = main)
w
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  runs by 取られた直後
## W = 130752858, p-value = 0.1687
## alternative hypothesis: true location shift is not equal to 0

「2群の分布に差がない」という帰無仮説のp値は0.1687です.

半イニングが36,438件あるので, 小さな差でも検定は反応します. p値の大きさは効果の大きさを表しません. 上で出した差と信頼区間のほうを見てください.

補足: なぜ「取り返す」ように見えるのか

取られた直後に取り返した場面は印象に残ります. 一方, 取られた直後に 3人で終わった場面は記憶に残りません.

そして「取られた直後」は全体の27% もあるので, 取り返す場面自体は毎日どこかで起きています. 珍しくないことを珍しいことのように感じてしまう, というだけかもしれません.