RのWeb制作

Webサービス制作のための技術情報を。データ分析(Python、機械学習コンペ他)や自作野球ゲームMeisyoのこと中心。

Web制作 Meisyo

[Meisyo]左投右打が出過ぎで気持ち悪い件の分析

投稿日:

本日フリーゲーム夢現に初コメントが付いたのでワクワクして見ました。

#————————————————————-#
フリーゲーム夢現の’名将と呼ばれた者達’にコメントが投稿されました。
運営が公開処理するまでこのコメントは表示されません。(※投稿されてから約1日程度)

————————-
[コメント投稿者] 匿名

■ コメント内容 ■
左投げ右打ちの選手が出過ぎでちょっと気持ち悪いです

————————-

【投稿されたページを見る】
https://freegame-mugen.jp/simulation/game_7374.html
#————————————————————-#

お・・・おう・・・。そうか。

というわけで、どれくらい気持ち悪いのか数値化してみます。

やること

  1. コード確認
  2. データ把握
  3. あるべき姿(論文等)の調査
  4. 現状とあるべき姿の比較
  5. 改善点
  6. まとめ

コード確認

選手生成のコードを確認。

        // 投
        if(mt_rand(1, 1000) >= 115){ $CD['side_p'] = 'R'; }else{ $CD['side_p'] = 'L'; }

        // 打
        if(mt_rand(1, 100) >= 35){ $CD['side_b'] = 'R'; }else{ $CD['side_b'] = 'L'; }

投、打はどちらも独立に判定される。
投:88.5(=100-11.5)%で右投、その他(11.5%)で左投
打:65(=100-35)%で右打、その他(35%)で左打

このコードから、それぞれが起こる可能性は以下の通りです。
(全体合計は1。ただかけ合わせるだけです。)

右投 左投
右打 0.57525 0.07475
左打 0.30975 0.04025

※検算済み

約7.5%で左投右打ちが出てくる計算です。

データ把握

実際データはどうなってるの?ということで計算してみました。
データセットは[Meisyo]ビッグデータから学ぶ試合の基礎設計4のモノを使用しています。
*このデータで注意すべきは2点。成績準拠なので、「試合に出場した選手のみのデータが記録されていること」「任意でデータを削除できること」ですね。

データセット結果:
Total:6558
RR:3778(0.576)
RL:1991(0.304)
LR:527(0.080)
LL:262(0.040)

コードでの指定:

右投 左投
右打 0.57525 0.07475
左打 0.30975 0.04025

0.005分LRが上に、RLが下にぶれています。
6.7%程度の変動ですね。
これ分散値とか計算できるのか?
おおよそコードとデータは違っていないと判断します。(判断基準があいまい)
計算には実データを使っていきます。

計算コード:

# -*- coding: utf-8 -*-

import os, sys, csv
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 基礎設定
file_name = 'meisyo_b 20181217.csv'

# CSV読み込み
df = pd.read_csv(file_name, encoding='utf-8')

# 基礎設定
an = pd.DataFrame(index=[], columns=[])

# 投/打把握
an['side_p'] = df['side_p']
an['side_b'] = df['side_b']

# print(an)

# 集計
date = {'RR':0, 'RL':0, 'LR':0, 'LL':0}
for index, row in df.iterrows():
    key = row['side_p'] + row['side_b']
    date[key]+=1

# 表示
print("Total:" + str(len(an)))
for key in date.keys():
    print(str(key) + ":" + str(date[key]))

あるべき姿(論文等)の調査

野球の右投左投等のデータがありそうな論文と言えば、セイバーメトリクス関係か右/左打でどれだけ成績が変わるのか的な論文だと思いました。ということで調べました。

The Success of Sinister Right-Handers in Baseball(October 26, 2017)
超日本語訳:野球で成功したいなら右打ちはやめとけ

Abstract:
This new analysis of data on 17,564 professional baseball players shows a distinct advantage in hitting for those who bat left-handed but throw right-handed. The findings argue against any advantage due to hemispheric lateralization.
Abstract超日本語訳:
17,564人ものプロ野球選手のデータから分析した結果は、左バッターが右バッターに比べて優位(有意)なアドバンテージを持っていることを示した。この発見は他の全てのアドバンテージを跳ね返す力を持っている。

わースポーツ医学の論文カナー・・・

Table1に結果が載ってました。

結果:
All recorder major league players(N=5663)
Percent of Players
RR:63.2%
RL:19.0%
LL:12.3%
RB:4.7%
LR:0.5%
LB:0.3%
(B=両打ち)

現状とあるべき姿の比較

現状とあるべき姿のデータが取れたので比較し、相関関係を確認します。

データセット結果:
Total:6558
RR:57.6%
RL:30.4%
LR:8.0%
LL:4.0%

あるべき姿の結果:
All recorder major league players(N=5663)
Percent of Players
RR:63.2%
RL:19.0%
LL:12.3%
RB:4.7%
LR:0.5%
LB:0.3%
(B=両打ち)

0.5%であるべきところが、8.0%って・・・。差が大きくないか・・・?たしかに気持ち悪い。
以下、両打を無視して計算します。

あるべき姿:
右投:
 右打:左打=63.2:19.0(ALL82.2)
 =77:23

左投:
 右打:左打=0.5:12.3(ALL12.8)
 =4:96

現状は投げ・打ちは互いに独立ですが、あるべき姿では関連性ありですねー。

改善点

コードはこんな感じかなと。

        if(mt_rand(1, 100) >= 13){
            $CD['side_p'] = 'R';
            if(mt_rand(1, 100) >= 23){ $CD['side_b'] = 'R'; }else{ $CD['side_b'] = 'L'; }
        }else{
            $CD['side_p'] = 'L';
            if(mt_rand(1, 100) >= 96){ $CD['side_b'] = 'R'; }else{ $CD['side_b'] = 'L'; }
        }

まとめ

確かに気持ち悪い量の左投げ右打ちの選手が生成されていました。

よく考えてみると、プロ野球選手でも左投げ右打ちの選手いないですね。
野球エリートだと幼い内に左投右打なら左打に矯正されるし、そっちのほうが結果もいいみたいだし。
まあ生涯打率で1割違ったらねえ・・・。

今回MLBのデータを使いましたが、それでもLL>>LRなのでそういうものなんですね。
諸説では「あちら(米国)のほうが個人の意思を優先する」とのことですが、ここまではっきりとした差(LL24:LR1)ならしょうがないね。

コメントありがとうございました!

-Web制作, Meisyo

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

cakePHPの取り扱いを開始しました

ご無沙汰しております。 とりあえず初心者のためのCakePHP2.0 プログラミング入門でcakePHPを使えるようにして、 ミニ四駆ブログまとめを改良して、 野球ゲーム(baseball onlin …

[Meisyo] 練習の不均衡是正

練習に不均衡が生じているので、アップデートで改善します。 ちなみに練習の方法自体を変更しようと思っています。 すぐには実装しません。(案が固まっていないです) 基本的に平均が150より大幅に高い(また …

特訓の追加について

練習に特訓を追加しました。 特訓の実装目的は、 1. 選手発掘の迅速化 2. 特定の選手の育成 です。 meisyoはステータスが絶対的ではないので、(なんとなく)良い選手を発掘することが重要です。 …

Windows10(32bit)でのC言語およびC++のコンパイラ「MinGW」のインストールとテスト

32bitのWindows10環境でCとC++を開発するためのコンパイラ「MinGW」のインストールを行います。 私も初心者ですが、簡単にインストールできました! 日付:2018/09/09 OS:W …

[Meisyo+] ゲームコンセプトについて

監督視点の野球ゲームMeisyo+のコンセプトを名将と呼ばれた者達+ ゲームコンセプトにまとめました。 なぜこのコンセプトを書いたかというと、理由は3点あります。 ゲームをはじめサービスは、どのような …