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.0076 | 0.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



コメント