野球盤とは?【Pythonでシミュレーション】

西武がキャンプを行う南郷中央公園のサブグラウンドの様子です。掘り下げて造成されており見通しが良いため非常に好きな光景です。

⓪本記事の3行要約

  • 野球盤をモンテカルロシミュレーションとして再現したい。
  • 乱数から打席結果を決定させることで野球盤を再現できた。
  • このモデルは得点を低く見積もる傾向にあった。

➀野球盤・モンテカルロシミュレーションについて

-(1)野球盤とは

 野球盤とは、野球を対戦型のおもちゃとして再現したエポック社のスポーツゲームです。具体的には、投手が転がした鉄球を打者がスイングすることで打ち放ち、転がり落ちたグラウンド内の穴によって打席結果が定まるというおもちゃです。ここでは、打者の打席結果は単打・二塁打・三塁打・本塁打・四球・アウトの6種類のみであり、走者はその打席結果の塁打数分だけ進塁するものと仮定することで、複雑な野球を簡単なルールで表現しています。

-(2)モンテカルロシミュレーションとは

 また、モンテカルロシミュレーションとは複雑な事象を乱数を用いてシミュレーションする分析手法のことです。例えば、オリックスの杉本選手は2021年度に打率3割を記録しましたが、彼がヒットを打つかどうかは相手投手の調子・球種・コースなどの複雑な要因によって決定されるでしょう。しかし、打率3割の打者は常に30%の確率でヒットを打つだろうと仮定すれば、驚くほど簡単に彼の打席をシミュレーションすることができます。

-(3)本記事の方向性

 本記事では、乱数を用いて各打席結果をシミュレーションすることによって、野球盤をモンテカルロシミュレーションとして再現します。これによって、打順を考慮した複数イニングの分析が可能となります。


➁野球盤のシミュレーションにおける諸仮定

 野球は各プレー同士がある程度は独立しているとみなせるため、比較的モンテカルロシミュレーションを導入しやすい競技です。しかし、野球を完全再現するためにはとても複雑なモデルを考える必要があります。そこで、いくつかの仮定を設けることで野球を単純化し、分析の解釈を容易にするテクニックが用いられます。ここでは、野球盤をモンテカルロシミュレーションとして表現する上で以下のような仮定がおきました。

[仮定]

  • 打席結果は表1の6種類のみで成績に従って確率的に決定される。
  • 走塁は打席結果のみに従い、表1のとおりに対応する。
  • 以上の仮定で想定されないプレー(盗塁・失策等)は無視する。
各打席結果と打者の出塁・走者の進塁がどのように対応しているかを示した表です。なお、このルールは野球盤スラッガーの取り扱い説明書のリンクからも確認できます。

③シミュレーションの流れ

-(1)各処理の関係

 日本のプロ野球において、1シーズンとは143の試合という要素によって構成されており、その試合も8~9のイニングという要素によって構成されます。また、イニングも3アウトになるまでに発生した打席という要素によって構成されます。そのため、これらの要素の関係性からシーズンのシミュレーションは次のように記述することができます。

・シーズンの分析では 143 回だけ試合のシミュレーションを行う。
 ・試合のシミュレーションでは次の処理を行う。
  ➀次打者に1番打者を設定する。
  ➁設定された次打者から始まるイニングのシミュレーションを行う。
   ・イニングのシミュレーションでは次の処理を行う。
    (1)アウト数・塁状況を無死走者なしに設定する。
    (2)設定された次打者における打席のシミュレーションを行う。
     ・打席のシミュレーションでは次の通りに処理を行う
      [1]乱数を発生させる。
      [2]設定された次打者の成績と乱数の値から打席結果を決定する。
      [3]打席前のアウト数・打席結果から打席後のアウト数を決定する。
      [4]打席前の塁状況・打席結果から打席後の塁状況・打点数を決定する。
      [5]次打者を設定する。
    (3)3アウトになればイニングを終了し、それ以外の場合は2に戻る。
  ③9イニングになれば試合を終了し、それ以外の場合は2に戻る。

-(2)シミュレーションのフローチャート

この処理の流れをフローチャートにして表現したものが表2です。

野球盤をモンテカルロシミュレーションとして表現する場合に行う処理の流れをフローチャートとして表現したものです。

④2021年度オリックスのシミュレーション

-(1)シミュレーション結果

 ここでは、オリックスの2021年度打順別先発出場選手成績を用いて143000試合のシミュレーションを行いました。その結果を各打者の打点を中心にまとめたものが表3です。

-(2)考察

これによると、シミュレーション上では4番打者が最も打点を稼いでおり、3番(吉田正尚がメイン)よりも5番(安達・モヤ・T-岡田など流動的)の方が打点を稼いでいるという意外な傾向が明らかとなりました。さらに、1番打者と9番打者は同じくらい打点を稼ぎにくいようです。また、ここで9番打者より1番打者の方が圧倒的に良い打撃成績であることを考慮すると、1番打者が特筆して打点を稼ぎにくい打順であることが分かります。

-(3)モデルの限界

 しかし、このシミュレーション手法では得点を少なく計上する傾向がみられます。これは、2塁走者が単打では生還できないという仮定によるものであり、これから分析を行うにあたって改良の余地がありそうです。

2021年度オリックスが獲得した実際の得点とシミュレーション上の得点を比較したものです。なお、この計算結果はグーグルコラボのリンクからも確認できます。

⑤おわりに

-(1)まとめ

 今回はPythonを用いてエポック社のおもちゃである野球盤をモンテカルロシミュレーションとして再現しました。これによって、『野球のOR』における均一な打者の仮定による問題は分析上解消することができました。

-(2)今後の展望

 しかし、得点を少なく計上する傾向や計算時間がとても長くなる問題点が新たに発生しました。次回は、このモデルの改良版(単打時2塁走者生還率の導入)を応用してユニークな打順構成を検証しようと思います。


コメント