読者です 読者をやめる 読者になる 読者になる

300億円欲しい

メジャーリーグのデータ解析します

Rでスポーツデータ解析がしたい: データを作るのって大変ですね

はじめに

R advent calendar 2014, 12月3日担当分です.

Rのコードは出てきません.

野球のデータで遊びたい

私は普段, メジャーリーグのデータで遊んでいます.

というのも, 整形されたメジャーリーグの詳細なデータが簡単に取得できるからです.

半年前に作ったスライドで申し訳ないのですが, こんな感じです.

Rで野球データ解析がしたい ( pitchRxを使う )

pitchFxは, メジャーリーグの投球に関するデータ(を集めるシステム)です.

RでpitchRxパッケージを使うと簡単に取得できます.

他にも, メジャーリーグのデータは簡単に取得できます.

retrosheetという団体がデータをまとめてくれているので, ダウンロードして整形してcsvを出力してくれるスクリプト を使えば, すぐに80年分くらいの全試合全打席結果データが得られます.

後は適当に集計すれば終わりです. 簡単です. 弊ブログでも色々やっています. 楽しいです.

他のプロスポーツのデータで遊びたい

そろそろ, 他の色々なプロスポーツデータで遊びたくなってきました.

しかし, メジャーリーグのように, 都合よくデータがあるわけではありません.

何もない所から, バドミントンのデータで頑張っている友人がいます.

バドミントンの国際試合の結果を解析する準備が出来ました - バドミントン観戦記

荒野を進む感じが, とてもカッコイイです. 真似したいです.

しかし, Webスクレイピング. やったことありません.

rvest すげえ。#rstatsj - Qiita

なるほど. Rで簡単にできるらしいです. トライしてみました.

1. テニスのデータで遊びたい

男子プロテニスのデータを作ってみました.

ATP公式サイトが大会の結果をこんな感じでまとめて公開しています. トーナメント形式です.

このままだと扱えないので, 頑張ってcsv形式にまとめてみました.

結果です.

> head winLoseData.dat
TOURNAMENT,GRADE,YEAR,MONTH,DAY,ROUND,PLAYER_1,PLAYER_2,WINNER
Australian Open,1,1970,02,01,1,Roche_Tony,Bye,Roche_Tony
Australian Open,1,1970,02,01,1,Cooper_John,Wilson_Ray,Cooper_John
Australian Open,1,1970,02,01,1,Kukal_Jan,Hammond_Anthony,Kukal_Jan
Australian Open,1,1970,02,01,1,Battrick_Gerald,Bye,Battrick_Gerald
Australian Open,1,1970,02,01,1,Taylor_Roger,Bye,Taylor_Roger
Australian Open,1,1970,02,01,1,Pollard_Geoff,Schloss_Lenny,Schloss_Lenny
Australian Open,1,1970,02,01,1,Anderson_Mal,Werren_Mathias,Werren_Mathias
Australian Open,1,1970,02,01,1,Lutz_Robert,Bye,Lutz_Robert
Australian Open,1,1970,02,01,1,Okker_Tom,Bye,Okker_Tom

1968年から2014年まで, 3,425大会151,288試合のデータです.

どの大会の何回戦で誰と誰が戦ってどちらが勝ったか, を並べました.

整形できたので, あとは好きなように集計すればいいですね.

昨年のR advent calendarに, 素敵な記事がありました.

【R】【Python】igraphやNetworkXで手持ちのデータをネットワークに変換してみよう - 歩いたら休め

よく分かりました. ネットワークに変換してみました.

こんな感じです.

RPubs - テニスの勝敗関係からネットワークを作る

f:id:gg_hatano:20141202142510p:plain

なるほど. よく分かりませんが, とりあえずそれっぽいことは出来ました.

時間があれば, この論文の追試をやってみようと思っていました.

A network-based dynamical ranking system for competitive sports : Scientific Reports : Nature Publishing Group

時刻ごとの勝敗関係から作ったネットワークから, 強さランキングをつける, という話です.

2. 相撲のデータで遊びたい

大相撲のデータでも同じことが出来そうな気がしますね.

カド番力士と星のやりとり解析とか, 興味あります.

調べてみると, 最高のWebサイトがありました.

大相撲星取表.

明治時代からの星取表がまとまっています. 昭和50年初場所〜大相撲星取表〜

やってみましたが,

gghatano/sumo_data · GitHub

ダメでした. ここまでは頑張ったのですが,

> head winLoseDataTable.dat
H1-1,横綱,千代の富士,九重33,三杉里,W
H1-1,横綱,千代の富士,九重33,琴ヶ梅,W
H1-1,横綱,千代の富士,九重33,隆三杉,W
H1-1,横綱,千代の富士,九重33,霧島,W
H1-1,横綱,千代の富士,九重33,両国,W
H1-1,横綱,千代の富士,九重33,太寿山,W
H1-1,横綱,千代の富士,九重33,逆鉾,W
H1-1,横綱,千代の富士,九重33,寺尾,L
H1-1,横綱,千代の富士,九重33,安芸島,L
H1-1,横綱,千代の富士,九重33,朝潮,W

辛かったです.

...力士って四股名を変えるんですよね. 若ノ花から若乃花とか. どう違うんだ.

全ての力士を正しく追いかけないといけません. 異なる人をちゃんと区別してidつけて整理して... って大変そうです.

よく考えると, そこまで相撲に興味がなかったので, ここで諦めます. ごめんなさい

データを作るのは大変です.

まとめと感想

自分でプロスポーツデータをまとめてみようとしました.

解析に使えるデータを作るのは凄く大変...ということが, 少しだけ分かりました.

「データサイエンティストはデータマエショリスト」と聞いたことがあります.

「データ解析は前処理が9割」とも聞いたことがあります. なるほど, と思いました.

解析屋の気持ちを汲み取って, 解析しやすい形式でデータを公開してくれる, そんな世界になってほしいな, と思いました.

以上です.