プロ野球2025年シーズン:ホームチーム(後攻)勝率54%は偶然か?【二項検定で検証】

野球

2025年のプロ野球(NPB)全試合データに基づき、「ホームチーム(後攻)」と「ビジターチーム(先行)」の間に統計的に有意な勝率の差(ホームアドバンテージ)が存在するかどうかを、二項検定を用いて分析します。

2025年NPBの全試合858試合中引き分け23試合を除く835試合で、後攻は453勝で54%となる。この54%の数字は、小さい差といえば小さく偶然発生した差とも思える。後攻チームが54%の勝率になったことが偶然であるかどうかについて、統計的な観点から検証してみたいと思います。

🔢 2025年NPBの先攻チームと後攻チームの勝率

項目試合数
先行チーム勝数 382
引き分け 23
後攻チーム勝数453
勝敗が決した試合数 382 + 453 = 835
全試合数858

🧪 統計的検証(二項検定)

「後攻が勝つ確率」が「先行が勝つ確率」が等しいという仮説(帰無仮説)のもとで、今回の結果がどれくらい起こり得るかを計算します。

1. 帰無仮説の設定

  • ホームアドバンテージはない。勝敗が決した試合において、ホームチームが勝つ確率は p = 0.5 (50%)である。

2. 検証の実行

勝敗が決した試合数 N=835のうち、後攻チーム(ホーム)が勝った回数 453 が、確率 p=0.5 のもとで起こる確率を計算します(二項検定)。

  • 後攻チームの実測勝率: \( \frac{453}{835} \approx 0.5425 \)

この実測勝率 0.5425 が、0.5 からどれだけ乖離しているかを評価します。

3. 計算結果(統計ソフトによるシミュレーション)

二項検定を行った結果、得られたP値は以下の通りです。

$$\text{P値} \approx 0.00768$$


P値をR言語で算出する

# 1. データの準備
# 勝敗が決した試合における後攻チームの勝利数 (Successes)
wins_home <- 453

# 勝敗が決した試合の総数 (Trials)
total_games <- 835

# 帰無仮説のもとでの確率 (Probability under null hypothesis: p = 0.5 for no advantage)
p_null <- 0.5

# 2. 二項検定の実行
# alternative = "greater" は、「後攻チームの勝率が0.5より大きい(有利である)」
# という片側検定を行うことを意味します。
# 質問の文脈から、後攻チームが勝数が多いという事象が偶然かを検証するため、片側検定が適切です。
result <- binom.test(
  x = wins_home,
  n = total_games,
  p = p_null,
  alternative = "greater"
)

# 3. 結果の表示
# P値の出力
p_value <- result$p.value
cat("後攻チーム勝利数: ", wins_home, "\n")
cat("勝敗決定試合数: ", total_games, "\n")
cat("二項検定によるP値 (片側): ", p_value, "\n")

後攻チーム勝利数:  453 
勝敗決定試合数:  835 
二項検定によるP値 (片側):  0.007683134 

4. 結論の導出

  • P値の意味: 「ホームチームが勝つ確率がちょうど 0.5 である」という仮定(ホームアドバンテージがない)のもとで、今回の結果(453勝)またはそれ以上にホームチームが有利となる結果が偶然起こる確率。
  • 有意水準: 一般的に統計的有意性の基準として5%が用いられます。
P値有意水準 (α=0.05) との比較結論
0.00760.00768 < 0.05帰無仮説を棄却します。

✅ 結論:後攻チームにアドバンテージがありそう

統計的検証の結果、P値は約 0.768% となり、一般的に用いられる有意水準 5% を大きく下回りました。

したがって、「後攻チームの勝数が先行チームの勝数より多い」という結果は、単なる偶然によって起こったとは考えにくいと結論づけられます。

この結果は、2025年NPBの試合において、統計的に有意な「ホームアドバンテージ(後攻有利)」が存在することを示唆しています。

おまけ

今回は後攻チームが453勝したという事実にフォーカスして二項検定を行ってみた。これを835試合の半分だる417勝から470勝まででP値がどのように変化するかを検証してみた。検証するために下記のR言語のプログラミングを実行した。

# 1. データの準備

# 勝敗が決した試合の総数 (Trials)
total_games <- 835

# 帰無仮説のもとでの確率 (Probability under null hypothesis: p = 0.5 for no advantage)
p_null <- 0.5

for (current_wins_home in 417:470) {
  # 2. 二項検定の実行
  # alternative = "greater" は、「後攻チームの勝率が0.5より大きい(有利である)」
  # という片側検定を行うことを意味します。
  # 質問の文脈から、後攻チームが勝数が多いという事象が偶然かを検証するため、片側検定が適切です。
  result_range = binom.test(
    x = current_wins_home,
    n = total_games,
    p = p_null,
    alternative = "greater",
    conf.level = 0.95
  )

  # 3. 結果の表示
  # P値の出力
  p_value_range = result_range$p.value
  cat("wins_home: ", current_wins_home, ", P値 (片側): ", p_value_range, "\n")
}

後攻チームの勝利数が418勝の場合、P値(片側)は約0.50となります。これは、偶然にその結果(418勝以上)が出る確率が50%であることを意味します。

有意水準 \(\alpha=0.05\)(5%)で統計的に有意と判断されるには、最低442勝が必要です(442勝のP値は約0.048)。同様に、より厳しい有意水準である \($\alpha=0.01\)(1%)で有意と判断されるには、最低452勝が必要なことが分かります(452勝のP値は約0.009)。

wins_home:  417 , P値 (片側):  0.5275872 
wins_home:  418 , P値 (片側):  0.5 
wins_home:  419 , P値 (片側):  0.4724128 
wins_home:  420 , P値 (片側):  0.4449574 
wins_home:  421 , P値 (片側):  0.4177634 
wins_home:  422 , P値 (片側):  0.3909569 
wins_home:  423 , P値 (片側):  0.3646587 
wins_home:  424 , P値 (片側):  0.3389821 
wins_home:  425 , P値 (片側):  0.3140322 
wins_home:  426 , P値 (片側):  0.2899043 
wins_home:  427 , P値 (片側):  0.2666825 
wins_home:  428 , P値 (片側):  0.2444396 
wins_home:  429 , P値 (片側):  0.2232362 
wins_home:  430 , P値 (片側):  0.20312 
wins_home:  431 , P値 (片側):  0.1841267 
wins_home:  432 , P値 (片側):  0.1662791 
wins_home:  433 , P値 (片側):  0.1495883 
wins_home:  434 , P値 (片側):  0.1340539 
wins_home:  435 , P値 (片側):  0.1196649 
wins_home:  436 , P値 (片側):  0.1064006 
wins_home:  437 , P値 (片側):  0.09423146 
wins_home:  438 , P値 (片側):  0.08312052 
wins_home:  439 , P値 (片側):  0.07302428 
wins_home:  440 , P値 (片側):  0.06389397 
wins_home:  441 , P値 (片側):  0.05567669 
wins_home:  442 , P値 (片側):  0.04831654 
wins_home:  443 , P値 (片側):  0.04175568 
wins_home:  444 , P値 (片側):  0.03593533 
wins_home:  445 , P値 (片側):  0.03079664 
wins_home:  446 , P値 (片側):  0.02628152 
wins_home:  447 , P値 (片側):  0.02233332 
wins_home:  448 , P値 (片側):  0.01889742 
wins_home:  449 , P値 (片側):  0.01592168 
wins_home:  450 , P値 (片側):  0.01335684 
wins_home:  451 , P値 (片側):  0.01115679 
wins_home:  452 , P値 (片側):  0.009278687 
wins_home:  453 , P値 (片側):  0.007683134 
wins_home:  454 , P値 (片側):  0.006334135 
wins_home:  455 , P値 (片側):  0.005199074 
wins_home:  456 , P値 (片側):  0.004248616 
wins_home:  457 , P値 (片側):  0.003456568 
wins_home:  458 , P値 (片側):  0.002799705 
wins_home:  459 , P値 (片側):  0.002257578 
wins_home:  460 , P値 (片側):  0.001812302 
wins_home:  461 , P値 (片側):  0.001448337 
wins_home:  462 , P値 (片側):  0.00115227 
wins_home:  463 , P値 (片側):  0.0009125969 
wins_home:  464 , P値 (片側):  0.0007195124 
wins_home:  465 , P値 (片側):  0.0005647119 
wins_home:  466 , P値 (片側):  0.0004412044 
wins_home:  467 , P値 (片側):  0.0003431405 
wins_home:  468 , P値 (片側):  0.0002656553 
wins_home:  469 , P値 (片側):  0.0002047268 
wins_home:  470 , P値 (片側):  0.0001570493 

コメント