2019年交流戦成績でのPCA
2019 交流戦の成績を元にPCA解析をしてみました。
使用したデータは以下のデータです。
データ元:https://baseball.yahoo.co.jp/npb/standings/26/
runs | runs allowed | Homerun | steal | Batting average | earned run average | |
Hawks | 75 | 61 | 32 | 16 | 0.233 | 3.16 |
Buffaloes | 73 | 64 | 8 | 21 | 0.257 | 3.42 |
Giants | 85 | 66 | 23 | 15 | 0.257 | 3.34 |
Baystars | 72 | 70 | 22 | 7 | 0.242 | 3.86 |
Lions | 99 | 79 | 18 | 14 | 0.27 | 4.14 |
Eagles | 73 | 71 | 13 | 5 | 0.25 | 3.81 |
Fighters | 69 | 81 | 14 | 9 | 0.25 | 4.19 |
Dragons | 78 | 79 | 7 | 7 | 0.265 | 4.38 |
Marines | 87 | 93 | 23 | 12 | 0.268 | 4.84 |
Tigers | 74 | 77 | 9 | 17 | 0.248 | 3.29 |
Swallows | 81 | 100 | 20 | 6 | 0.236 | 5.08 |
Carp | 59 | 84 | 13 | 11 | 0.216 | 3.85 |
コマンドは以下の通りです。
data=read.csv("交流戦成績.csv", row.names = 1) #上記のデータをcsv形式で保存後、読み込み。
#PCA
name=rownames(data)
rownames(data)<-NULL#都合によりrownameは一旦削除(削除しなくても良いがFigが見にくくなる。)
pcaobj=prcomp(data, scale=T)
biplot(pcaobj)
PC1<- pcaobj$x[, 1]
PC2 <- pcaobj$x[, 2]
library(png)
a=0.3 #アイコンの大きさ調整
for (i in 1:12) {
img <- readPNG(paste(name[i],"png",sep=".")) #各チームのアイコン画像をteam名.pngで作成、保存しておく。
rasterImage(img, PC1[i]-a, PC2[i]-a,PC1[i]+a, PC2[i]+a)
}
やっている内容は「Rで主成分分析(https://www.casleyconsulting.co.jp/blog/engineer/119/))」のほぼパクリです。casley consulting様、お世話になります。
結果としては左下に寄っているチームが上位に来ている。つまり、チーム防御率(earned.run.average)が低く、チーム打率(Batting.average)がやや高いチームが強かったということになります(当たり前だ…)。
興味深いのは、盗塁数(steal)が順位に強く影響する点でしょうか。
反省点としては
1.見やすいようにチームアイコンを上から貼り付けてみたが、西武と広島のアイコンが数字の位置(本来のプロットされるべき位置)から随分ずれてしまいました…何故…?
2.biplot
で出力する図の文字サイズの変え方が分からない…
改善方法をご存知の方がいらっしゃいましたらコメントいただけると助かります。