■back
 『ベストプレープロ野球’00』チーム成績データ分析
  ――その 1:分析に必要な望ましい試行数

■本格プロ野球シミュレーション『ベストプレープロ野球’00(ベスプレ)』は、選手や監督のパラメータなどを自由に変えて、ペナントレースを楽しむことができます。当然、どのパラメータを、どのように変えたら、どのくらい結果に影響が出るのか――というコトが、気になります。

■『ベスプレ』では、「SKP モード」を使うと、わずか 10 秒たらずで、ペナントレースの 1 シーズン分の全試合を行わせることができます。そこで、選手や監督のパラメータなどを変えて、「SKP モード」でペナントレースを行えば、パラメータを変えた影響が、結果にどう出るのか、すぐに試すことができます。

■ところが、『ベスプレ』では、まったく同じパラメータでも、同じ結果になるとは限りません。むしろ、意外な選手が大活躍したり、高パラメータの選手が絶不調に陥ったりすることも、珍しくありません。そこが、このゲームの面白いトコロなのですけど、これでは、1 〜 2 回程度、試しただけでは、得られた結果が、偶然のバラツキによるものなのか、パラメータを変えた影響なのか、わかりません。そこで、パラメータを変えた効果の検証を、どのように行うのが、より合理的で説得力を持つのか、ちょっと簡単に調べてみました。

□なお、データの分析には、CRAN(The Comprehensive R Archive Network)の提供する統計計算のためのフリーソフトウェア『R』を使いました。『R』は、CRAN のウェブサイトから、無料でダウンロードすることができます。また、『ベスプレ』のチーム成績データ分析用に藤野が自作したコードは、ウチの Web ページ「チーム成績データ解析ツール」からダウンロードすることができます。

■このページの一番上に戻る。

 ■結 論
■藤野が簡単に調べてみた結果、パラメータを変えた影響が結果にどう出るのかを検証する場合、少なくとも、以下のコトを考慮しておく必要があるだろうなぁ――と、感じています。

パラメータを変えた影響が結果にどう出るのかを検証する場合、普通に、それぞれのパラメータで何回かペナントレースを行い、パラメータを変える前のシーズン成績の平均値と、パラメータを変えた後のシーズン成績の平均値が、どう変化したかを比較する――という方法が有効で、合理的だろうと思われます。
□統計学の専門用語を使って言うと、「パラメータを変える前のシーズン成績の平均値と、パラメータを変えた後のシーズン成績の平均値を、t 検定を用いて、比較することができると思われます」。

説得力のある結果を得るためには、それぞれのパラメータで各 50〜100 シーズン程度、試行して、シーズン成績の平均値を出す必要があるように思います。暫定的・予備的に傾向を見たい・知りたいだけならば、10〜20 シーズンの試行数でも充分だと感じますが、それ以下の試行数では、意味のある結論が得られない可能性が高いように思われます。
□単純に考えると、試行数が多ければ多いほど良いと思われるかも知れませんけど、時間のムダという観点を無視したとしても、第 1 種の過誤(偽陽性)の危険性を増加させるかも知れないコトを考えると、合理的な理由なしに、あまりに多い試行数を要求するのは、良いコトだとは思えない気がします。

■以下で、どのようにして、藤野がこれらの結論に至ったのか、説明したいと思います。

■このページの一番上に戻る。

 ■データの取得方法
■今回の分析では、以下のように、データを取得・収集しました。

■1. まず、リーグデータは、『ベスプレ』の初期設定である「セ・リーグ:DH 制 なし・延長回 15」「パ・リーグ:DH 制あり・延長回 12」、日程は、『ベスプレ』の初期設定である "team2000.txt"(各チーム 135 試合・交流戦なし)を用いました。この設定は、以下、すべてのデータ取得・収集において共通です。

■2. 選手データ・監督データには、『ベスプレ』の初期設定である "team2000.txt" を使いました。この選手データ・監督データに、便宜上、「ORIGINAL」というオプション名を付けるコトにします(図 1 参照)。
図 1:オプション名「ORIGINAL」の選手データ(55KB)
図 1 オプション名「ORIGINAL」の選手データ(Dチーム・野手)
この設定(オプション名「ORIGINAL」の設定)で、100 シーズン、ペナントレースを行い、各シーズンの全チームのチーム成績を取得・収集しました。

■3. 次に、以下の要領で、Dチームの選手データの「守備力」のパラメータを変えながら、それぞれ 100 シーズンずつ、ペナントレースを行い、各シーズンの全チームのチーム成績を取得・収集しました。
□ここで、Dチームを選んだのは、たんに、選手データファイル "team2000.txt" の 1 番上にあったチームで、パラメータの変更がラクだったから――というだけの理由です。他意はありません。
まず、適当な守備位置を 1 つ選び(たとえば、ココでは 1 塁手)、「守備力」のパラメータ(「−」となっているものを除く)をすべて「S」にしました。この選手データ・監督データに、便宜上、「D_1B.S」というオプション名を付けるコトにします(図 2 参照)。
図 2:オプション名「D_1B.S」の選手データ(56KB)
図 2 オプション名「D_1B.S」の選手データ(Dチーム・野手)
この設定(オプション名「D_1B.S」の設定)で、100 シーズン、ペナントレースを行い、各シーズンの全チームのチーム成績を取得・収集しました。同様に、1 塁手の「守備力」のパラメータをすべて「A」〜「E」に変えて(オプション名は、それぞれ「D_1B.A」〜「D_1B.E」となります)、それぞれ、100 シーズン、ペナントレースを行い、各シーズンの全チームのチーム成績を取得・収集しました。
さらに、捕手(オプション名「D_C.S」〜「D_C.E」)・2 塁手(同「D_2B.S」〜「D_2B.E」)・3 塁手(同「D_3B.S」〜「D_3B.E」)・遊撃手(同「D_SS.S」〜「D_SS.E」)についても、同様にして、チーム成績を取得・収集しました。

■以上、「ORIGINAL」と、各守備位置ごとに 6 種類の選手データ・監督データ――合計 31 種類の選手データ・監督データを用いて、それぞれ、100 シーズン、ペナントレースを行ったので、合計 3100 シーズン分の、全チームのチーム成績を取得・収集したコトになります。

■このページの一番上に戻る。

 ■分析結果・その 1:確率分布モデルの推定(本当に平均値を比べるだけで良いのか?)
■さて、上述したように、Dチーム(セ・リーグ)のパラメータだけを変えながら、ペナントレースを行い、3100 シーズン分のチーム成績を取得・収集したのですけど、ココで使った日程には交流戦がありませんでした。したがって、パ・リーグに関しては、すべてのチームが、まったく同じパラメータで、ペナントレースを 3100 シーズン、行ったコトになります。

■そこで、パ・リーグのチームで、チーム成績の各項目ごとに、どのような数値がどのくらい出現したのか、ヒストグラム(度数分布図)を描いてみました。ココでは、Hチームの結果を以下に示します(図 3 参照)。
□ちなみに、Hチームを選んだのは、たんに、選手データファイル "team2000.txt" で、パ・リーグの 1 番上にあったチームというだけで、どのチームの、どのチーム成績項目も、ほぼ同じ傾向になりました。
□表記の都合上、以下、すべて、「AVG(チーム打率)」のみ、値を 1000 倍しています。分析結果に影響はありませんので、ご理解下さい。
図 3:チーム成績各項目のヒストグラム(49KB)
図 3 チーム成績各項目のヒストグラム(Hチーム)
■棒グラフが高いほど、その数値になったシーズンが多いコトを示しています。たとえば、1 番左下の「K(チーム奪三振数)」ならば、チーム奪三振数は、平均値に近い 780 個くらいになるシーズンが一番多く、平均値から外れるほど少なくなっていき、平均値から大きく外れた値(700 個とか 850 個とか)になるシーズンは、ほとんどない(けど、完全にゼロというワケでもない)――というコトが、わかります。「K(チーム奪三振数)」に限らず、どの項目についても、ほぼ同じ傾向が読み取れると思います。

■さらに、図 3 には、正規分布という特殊な関数のグラフも、一緒に描かれています。驚くコトに、チーム成績のどの項目についても、たくさんのシーズンを行ってヒストグラムを描くと、その形は、正規分布のグラフと同じ形になるように見えます。コレは、実は、とても凄いコトです。なぜなら、……
□1. チーム成績のどの項目に関しても、実際は、シーズンごとに、どの選手が絶好調で、どの選手がスランプになって、……などなど、途方もなく非常に多くの要素が絡み合い、非常に複雑なプロセスを経て、そのシーズンのチーム成績が、その数値になるのだろうと思われます。
□2. したがって、たくさんのシーズンを行った場合、チーム成績のどの項目も、そのヒストグラムは、とても多くの要素が絡み合い、とても複雑な過程を経て、その形が決まるのだろうと思われます。
□3. 一方で、正規分布のグラフは、「平均値」と「標準偏差」という、たった 2 つの数値を決めるだけで、その形が決まります。
□4. ところで、図 3 を見ると、途方もなく非常に多くの要素が絡み合い、非常に複雑なプロセスを経て決まるハズの、チーム成績の各項目のヒストグラムと、たった 2 つの数値で決まる正規分布のグラフが、ほとんど同じ形をしているように見えます。

■このコトだけでも、とても驚きの結果ですが、さらに、これが何を意味するのかと言うと、……
□1. ヒストグラム(度数分布図)とは、「どの数値がどのくらいの頻度で現れるか(実現するか)」ということを表したグラフです。
□2. そのヒストグラムと、正規分布のグラフが、同じ形をしているというコトは、この場合、チーム成績の各項目がどんな数値になるかを考える際には、複雑な要素やプロセスなどは、まったく無視して、「チーム成績の各項目は、どの数値がどのくらいの頻度で現れるかを、正規分布のグラフを見るだけで、知るコトができる」と、非常に単純化して分析するコトができる――というコトです。
□3. つまり、何回かシーズンを行うコトで、平均値(標本平均)と標準偏差(標準誤差)の 2 つの数値さえ分かってしまえば、正規分布のグラフの形が決まるので、どんなパラメータの選手データ・監督データを使っているかなど知らなくても、たとえば、「チーム奪三振数が 750 個以下になる確率は○%で、750 個から 800 個の間になる確率は○%で、……」といったコトが、簡単に計算できる――というコトです。
□4. 逆に言えば、どんなパラメータの選手データ・監督データかは知らなくても、チーム成績の結果(数値)だけを見れば、「これまでと同じパラメータならば、チーム成績がこのような結果(数値)になる確率は○%しかない。こんなコトは、ほとんど有り得ないので、コレは、きっと、なにかのパラメータが変わった影響に違いない」とか、「チーム成績が、ちょっと、ビックリするような結果(数値)になったけど、計算上は、このような結果(数値)になる確率が○%もある。きっと、コレは、単なる偶然のバラツキの結果なのだろう」とか、そんな推測まで、正規分布のグラフから計算するだけで、判断できるというコトです。

■もちろん、図 3 を見ると、チーム成績の各項目のヒストグラムと、正規分布のグラフは、完全には一致しません。したがって、「正規分布のグラフからの計算による推測が、絶対確実に間違いなく正しい!」とは、言い切れません。それでも、図 3 を見る限り、「かなり信頼性の高い推測ができる」とは、言っても良いような気がします。

■だいぶ長くなりましたけど、そんなワケで、上の「結論」で述べたように、「パラメータを変えた影響が結果にどう出るのかを検証する場合は、いろいろと複雑なコトは考えずに、ただ単純に、チーム成績の平均値(標本平均)を比べるだけで、良いだろうと思われます」(できれば、標準偏差(標準誤差)も分かると、なお良い)というコトになるワケです。
□ちなみに、統計学の専門用語を使って言うと、「シーズン成績のどの項目も、正規分布にしたがう。したがって、t 検定が有効である」とか、「シーズン成績のどの項目も、確率分布モデルとしては、正規分布が当てはまる。したがって、t 検定を使うコトができる」とか、表現するコトができると思います。
□もちろん、「中央極限定理があるんだから、シーズン成績のどの項目も、正規分布にしたがうのは、当たり前じゃん」と、ツッコむ方もいらっしゃると思いますけど、実際に、試して、ちゃんと確かめたというコトだけでも、褒めて下さい(苦笑)。

■このページの一番上に戻る。

 ■分析結果・その 2:t 検定の有効性の実証(何シーズンくらい試行するのが良いのか?)
■さて、「ただ単純に、チーム成績の平均値(標本平均)を比べるだけで良い」と言われても、「じゃあ、何シーズンくらい行った上で、その平均値を求めれば良いのか?」と、悩んでしまうでしょう。

■そこで、Dチームの遊撃手の「守備力」のパラメータを、すべて「S」にした選手データ・監督データ(オプション名「D_SS.S」のデータ)と、すべて「A」にした選手データ・監督データ(オプション名「D_SS.A」のデータ)で、シーズンの試行数が増えるにつれて、チーム成績の各項目の平均値(標本平均)が、どのように推移したのか、比べてみました(図 4 参照)。
図 4:2 つの標本におけるチーム成績の各項目のヒストグラムと標本平均の推移の比較(26KB)
図 4 2 つの標本におけるチーム成績の各項目のヒストグラムと標本平均の推移の比較
■図 4 を見ると、シーズン成績のどの項目も、50 シーズンを過ぎたくらいから、平均値(標本平均)が、あまり変化しなくなり、80 シーズンを過ぎると、かなり安定するようになる――と、言えそうです。10〜20 シーズン以下だと、平均値(標本平均)は、かなり変動が激しく、ちょっと、信頼性に欠けると言わざるを得ない感じがします。

■実際、「ER(チーム自責点)」は、当然、遊撃手の「守備力」が「S」(オプション名「D_SS.S」)のほうが、「A」(同「D_SS.A」)よりも少なくなると考えられますが、シーズンの試行数が 5 回以下だと、平均値(標本平均)は、予想とは逆になっているように見えます。でも、だいたい 10 回を超えてくると、どちらがどれだけ「ER(チーム自責点)」が少なくなるか、かなりハッキリとした傾向が現れてくるように感じます。

■逆に、「AVG(チーム打率)」のように、遊撃手の「守備力」とは関係がないと思われる項目でも、シーズンの試行数が 10 回以下だと、平均値(標本平均)の差を見て、「守備力のパラメータを変えると、チーム打率が変化する」と、間違った結論を出してしまいそうです。でも、20〜30 回を超えてくると、「守備力のパラメータを変えても、チーム打率には、ほとんど影響しない」というコトが、かなり自信をもって言えるようになりそうです。

■この傾向は、他のチーム成績の項目でも、他のパラメータを変えた場合でも、おおよそ、同じ感じになっているように見えます。そんなワケで、上の「結論」で述べたように、「説得力のある結果を得るためには、 50〜100 シーズン程度、試行する必要があるように思います。暫定的・予備的に傾向を見たい・知りたいだけならば、10〜20 シーズンの試行数でも充分だと感じますが、それ以下の試行数では、意味のある結論は得られないだろうと思われます」というコトになるワケです。
□本来ならば、チーム成績が正規分布にしたがうかどうかは、ちゃんと検定して、調べるべきなのでしょうけど、面倒なので、そこまではしていません(苦笑)。さらに、分散が等しいと仮定できるかどうかも、調べていないので、パラメータを変えた影響が結果にどう出るのかを検証するために、p 値を求めたりする場合には、いわゆる「ウェルチの t 検定」を行ったほうが良いでしょう。
□ちなみに、藤野が自作した『R』のコード(ウチの Web ページ「チーム成績データ解析ツール」からダウンロードできます)では、p 値を求めたり、有意差を判定したりする場合は、初期設定で、ウェルチの t 検定を行います。

■このページの一番上に戻る。

■back