イチローは本当に安打製造機なのか!?
この記事はR Advent Calendar 2013 : ATND , 1月3日の配当記事です.
よろしくお願いします.
序論
YEAR GAME ATBAT HIT AVG 1 2001 157 692 242 0.3497110 2 2002 157 647 208 0.3214838 3 2003 159 679 212 0.3122239 4 2004 161 704 262 0.3721591 5 2005 162 679 206 0.3033873 6 2006 161 695 224 0.3223022 7 2007 161 678 238 0.3510324 8 2008 162 686 213 0.3104956 9 2009 146 639 225 0.3521127 10 2010 162 680 214 0.3147059 11 2011 161 677 184 0.2717873 12 2012 162 629 178 0.2829889
ほぼ怪我せずに200本以上のヒットを打ち続けてきたイチロー.
まさしく安打製造機です.
最近は少し衰えが見えますが, それでも180本近くヒットを打っています.
...イチローって本当に人間なのでしょうか.
もしかして,
本当に安打製造機なのでは?
調べました.
イチローが本当に安打製造機なのかどうか調べる
機械には各時刻で調子の善し悪しなんて存在しないはずです.
常にランダムにヒットを打っているはず.
逆に, もし調子の良し悪しがあれば, ある時刻のデータが過去のデータに影響されている, と考えられます.
イチローの打席結果が過去の結果に影響されているかどうかを調べたいです.
もしも影響されていなければ, 彼は本当に安打製造機かもしれません.
時系列データに系列相関があるかどうかを調べる手法を, 大学の講義で習いました.
(ランダムシャッフル)サロゲートデータ法, というものです.
覚えたことはすぐに使います.
サロゲートデータ法とは
データの系列相関の有無を調べる手法の1つとして, (ランダムシャッフル)サロゲートデータ法があります.
"時系列データについて計算される統計量"と,
"時系列データをランダムシャッフルして得られるデータについて計算される統計量"
を比べて議論する方法です.
時系列データ解析などをするときに用いるみたいです.
よく分からないので, 具体的な例を見てみます.
コイン投げでサロゲートデータ法
13回のコイン投げをします.
その結果, 表を1, 裏を0として,
0,1,0,0,1,1,0,0,0,0,1,1,1
という結果が現れたとします.
この結果が, ランダムな結果かどうかを調べたいです.
つまり, コイントスの結果を時系列データとみて, 系列に依存しているかどうかを見ます.
過去の表裏の結果が, 次の結果に影響しているかどうかを調べます.
そのために, 今回は"表が出る間隔"に注目します.
すなわち"裏"の連なりの長さです.
コイントスの結果は 0,1,0,0,1,1,0,0,0,0,1,1,1 なので,
裏の連なりの長さは, 前から1, 2, 4 となっています.
ここで,
統計量$S =\text{裏の連なりの長さの平方和}$
とします.
今回の場合は, $S = 1^2 + 2^2 + 4^2 = 21$です.
時系列に依存していないコインの場合, $S$の分布がどうなるか, を考えます.
そのために, データから時間の情報を潰します.
コイントスの時系列データ"0100110000111"をランダムシャッフルして, $S$を計算してみます.
ランダムシャッフルを10000回行って, $S$の値の分布を出してみました.
時系列データをシャッフルすることによって, 時系列の情報が潰れます.
時系列を潰した仮想的データと, 元のデータの統計量で大きな差があれば,
元のデータは系列相関があるデータなのだろう, と考えられるわけです.
仮に, コイントスの結果が
0,0,0,0,0,0,0,1,1,1,1,1,1
だったとします.
過去の結果に影響されてそうですよね.
この場合, 統計量$S = 7^2 = 49 $となります.
系列相関がないと仮定して得られる$S$の分布と比較してみると,
極端なところにいます.
おそらく,このデータには系列相関があるのだろう, と考えられます.
このようにして, 時系列データに系列相関があるのかどうかを調べていきます
イチローが安打製造機かどうかを調べる
もしもイチローが安打製造機なら, 常に時刻に関係なくヒットを打つはずです.
逆に人間なら, 調子の良し悪しがあるでしょうから,
ヒットの出る出ないについて時系列の相関があるでしょう.
ヒットの出る出ないをコインの表裏だと思って,
ヒット出る出ない時系列データに系列相関があるかどうかを調べてみました.
まずはデータから.
メジャーリーグの全プレイの結果がcsvになっています.
過去記事でデータについて書きました.
メジャーリーグのデータ解析をしたい( 犠牲フライくらい打てよ ) - 300億円欲しい
今回は, 2011年のイチローの打席結果データの分析を行います.
まず, ヒットが出る出ないの時系列データを作ります.
# data2011 <- read.csv("all2011.csv") fields <- read.csv("fields.csv") names(data2011) <- fields[,"Header"] ichiro.AB <- subset(data2011, BAT_ID == "suzui001"& AB_FL == TRUE) ichiro.AB$HIT <- ifelse(ichiro.AB$H_FL > 0, 1, 0) ichiro.AB$DATE <- substr(ichiro.AB$GAME_ID, 4, 12) ichiro.AB <- arrange(ichiro.AB, DATE)
データを少し見てみます. 2011年は677打席で184安打でした.
> head(ichiro.AB$HIT) [1] 1 0 1 0 0 1 > sum(ichiro.AB$HIT) [1] 184 > length(ichiro.AB$HIT) [1] 677
あってますね.
ヒットの出る出ないをコインの裏表だと思って, 先ほどの統計量$S$の計算をします.
さらに, 時系列データをランダムシャッフルして, $S$の分布を調べます.
イチローのヒット時系列データから得られる統計量は,
系列相関がないと仮定した場合のデータから得られる統計量と大差ありませんね.
(おかしい...)
(イチローはやっぱり人間でしたー...というオチをつけるつもりだった...)
(やばい...)
ロビンソン・カノーは安打製造機かどうかを調べる
他の選手ではどうでしょうか.
今年ヤンキースからマリナーズに移籍したスーパースター選手, ロビンソン・カノーでも調べます.
ロビンソン・カノ - Wikipedia
今年結んだ契約は, 10年で約245億円でした. 年俸24.5億円です. 欲しい.
2011年のカノーは623打席で188安打でした.
統計量$S$と, ランダムシャッフルした場合の統計量$S$の分布を見てみます.
これはだいぶ外れているように見えますね.
カノーについては, ヒットの出る出ないに系列相関があるのだろう, と言えます.
カノーは人間でしょうね.
参考文献
Analyzing Baseball Data with R (Chapman & Hall/CRC The R Series)
- 作者: Max Marchi,Jim Albert
- 出版社/メーカー: CRC Press
- 発売日: 2013/10/29
- メディア: Kindle版
- この商品を含むブログを見る