Orange4649 Blog 橘子的Blog

數據棒球(1)-1987的雙城隊

Tags:  #baseball  
Paragraph : 9208 words.

MLB冠軍是所有棒球員的最終目標,原本是想看看拿到世界冠軍的隊伍都具有哪些特徵,意外發現在這些冠軍隊伍中有一個非常特別的outlier,那就是1987年的明尼蘇達雙城隊,那年的雙城隊淨得分值為-20,也就是失分比得分多了20分,勝敗場為85-77,先在美聯冠軍賽以4-1擊敗當年美聯最強的底特律老虎(98-64),然後在世界冠軍系列賽以4-3在第七場淘汰了傳統強隊聖路易紅雀(95-67),攤開所有數據來看,那年的雙城不像是可以拿下世界冠軍的隊伍,於是我開始尋找那年雙城為何可以拿下冠軍的原因。

2020/1/11更新

由於大四上修了資料視覺化與分析的課,剛好期末報告要選一個資料庫做資料呈現,所以又把這個題目做完整一點,順便使用Tableau做資料呈現。

DataSet

本篇使用Kaggle上的資料來進行分析,這是一份1871~2015年MLB各球隊與球員的數據,有蠻多主題值得去探討的。

讀取資料,這裡我只保留1900年後的,比較符合現代棒球的數據。

data = pd.read_csv('dataset/team.csv')
data = data[data.year > 1900]

從團隊打擊和團隊防禦切入分析

由於20世紀初的資料有些進階數據缺值比較多,這邊就只以最直觀的avg和era來看1900~2015年得到世界冠軍的隊伍。
avg:團隊打擊率
era:團隊防禦率

x = champion['era']
y = champion['avg']
plt.axis([x.min() - 1,x.max() + 1, y.min() - 0.01, y.max() + 0.01])
plt.xlabel('era')
plt.ylabel('avg')
plt.scatter(x,y)
plt.annotate('1906 CHW', xy=(2.13,0.2301),\
xycoords='data', xytext=(1, 0.235), size=10,\
arrowprops=dict(arrowstyle="simple",fc="0.6",\
ec="none"))
plt.show()

基本上可以看出era越高的隊伍打擊率也越高,有正相關,因為當球隊era越高失越多分,代表打擊比需更努力才能贏得冠軍,連帶的avg也就提高。

從淨得分差和勝率切入分析

接著我使用rd和勝率去分析
rd:run difference,總得分減總失分

x = champion['rd']
y = champion['winrate']
plt.axis([x.min() - 10,x.max() + 10, y.min() - 10, y.max() + 10])
plt.xlabel('rd')
plt.ylabel('win-rate %')
plt.scatter(x,y)

min_rd = champion.nsmallest(5,'rd')
max_rd = champion.nlargest(5,'rd')
min_winrate = champion.nsmallest(5,'winrate')

plt.annotate('1987 MIN', xy=(-20,52), xycoords='data', xytext=(-20, 63), size=10, arrowprops=dict(arrowstyle="simple",fc="0.6", ec="none"))
plt.annotate('2006 STL', xy=(19,51.5), xycoords='data', xytext=(50, 45), size=10, arrowprops=dict(arrowstyle="simple",fc="0.6", ec="none"))
plt.annotate('1939 NYY', xy=(411,70.2), xycoords='data', xytext=(340, 80), size=10, arrowprops=dict(arrowstyle="simple",fc="0.6", ec="none"))
plt.annotate('1927 NYY', xy=(376,71.43), xycoords='data', xytext=(300, 57), size=10, arrowprops=dict(arrowstyle="simple",fc="0.6", ec="none"))
plt.show()

看到這張圖馬上可以看到rd各有兩個極端值,先講右邊有著超高rd的兩點,兩個都是紐約洋基隊,事實上rd最高的五支球隊都是洋基隊,而得分洋基隊則包辦了前7名,可見洋基的奪冠模式很明確,就是組出一個超級打擊隊,把對手打爆冠軍自然就進來了。
就著看左邊兩個極端值,2006年紅雀隊之後再研究,比較讓我驚訝的是1987年的雙城隊,這球隊的rd竟然小於0,也就是失分比得分多,這樣都能拿冠軍到底是怎麼辦到的。
順便一提1987雙城隊的冠軍也是CP最高,花最少錢的,整體薪資在整個冠軍隊分布的z-score是 -1.06。
奪冠CP值:

1987年的雙城隊

我將1900~2015年的數據做統計取平均,做了一個比較,想找出1987的雙城到底優勢在哪裡。

data_1987 =data[data.year == 1987]
des_1987 = only_data(data_1987).mean()
des_all = only_data(data).mean()
des_champion = only_data(champion).mean()
twin = champion[champion.year == 1987]
twin_1987 = only_data(twin).mean()
comparison = pd.concat([twin_1987, des_all, des_1987, des_champion], axis=1)
comparison.columns = ['1987_twin','all','1987','champion']

以下為比較表格:

  1987的雙城隊 1900~2015所有球隊 1987年的所有球隊 所有冠軍隊
勝場 85 78.14 80.96 96.81
敗場 77 78.14 80.96 59.43
得分 786 689.99 764.73 771.91
安打 1422 1397.19 1457.5 1451.48
二壘安打 258 240.66 261.27 248.41
三壘安打 35 44.93 34.46 53.34
全壘打 196 113.35 171.46 124.74
保送 523 504.59 553.42 542.87
打擊率 0.2613 0.2613 0.2629 0.2702
三振 898 807.67 965.35 747.66
盜壘 113 100.36 137.88 104.5
被得分 806 689.99 764.73 604.97
自責分 734 600.74 687.46 526.69
防禦率 4.63 3.85 4.28 3.35
救援點 39 27.19 37.35 30.41
被安打 1465 1396.98 1457.5 1322.15
被全壘打 210 113.35 171.46 97.58
投出保送 564 505 553.42 488.2
被三振 990 796.36 965.35 797.39
失誤 98 152.44 126.38 142
雙殺 147 142.55 148.85 144.27
淨得分 -20 0 0 166.94
勝率 52.47% 0 0 62.02%

其中雙城隊比較突出的是196支全壘打,不過從1987年所有球隊平均打了171.46支全壘打跟全部年分的113.35比起來,可以看出1987年是打擊聯盟,但那年的雙城的確特別會轟。不過從被全壘打來看雙城的投手也是特別會被轟。
另一個值得注意的是失誤,雙城的98次失誤遠低於當年全聯盟平均的126.38次以及一般冠軍隊的142次,所以穩定的守備和特別會打全壘打的野手補足了投手的弱點。

Tableau版本:

數據外的因素

以下是從MLB官網找到的資料,1987年雙城所在分區的戰績,可以發現那年雙城所在的美西分區比美東分區弱很多,如果雙城在美東,那年只能拿到第五名。


還有一點值得注意的是雙城在人工草地可以拿下60-33的成績,在自然草地卻只能拿下25-44的成績,這也差太多了吧!雙城主場是胡伯特·哈姆佛里圓頂體育場(使用時間1982年-2009年),是個室內球場,使用人工草皮。
自然草皮和人工草皮的比較:

photo source

以下是Wiki的資料,雙城主場的戰績為56-25,客場戰績為29-52,三分之二的勝場是靠主場贏的,而雙城也是那年主場成績最好的球隊之一。

主場的實力也帶進了季後賽,季後賽第一個系列戰以4-1擊敗老虎,其中的三場勝場是主場拿到的,最後的世界冠系列戰4-3擊敗紅雀,四場勝場都是主場拿到的。

每局平均得失分

那為何雙城隊的淨得失分差是 -20 呢?攤開整季比賽會發現他們普遍輸很多分贏很少分。

以下是我把雙城隊整季每局得失分與聯盟做比較:

  • 紅色:雙城隊得分
  • 藍色:雙城隊失分
  • 綠色:聯盟得失分(相等)

從這張圖會發現雙城隊一開始可以打出優勢,給對手很大的壓力,但大概到第四局開始失分會暴增,打線則維持在聯盟平均,因此贏的分會慢慢被追回去,最後被逆轉,第四局差不多是到打線第二輪,也就是說雙城隊缺乏很強的先發投手群可以面對到打線第二輪。以下是當年的五位先發。

前兩號先發的成績還算不錯,一號先發Bert Blyleven當年36歲已經算是老將了,但投得還算可以,他的累積三振是史上第五,後來有進名人堂,雙城還退休他的背號(28),二號先發Frank Viola的防禦率2.9很厲害,在季後賽變成王牌,且都投出不錯的成績,最後獲得世界冠軍系列賽的MVP,隔年還拿到賽揚獎。不過剩下的投手還有牛棚其實都不像是冠軍隊該有的戰力。

結論

我認為1987年的雙城隊打擊的實力是有的,投手戰力不夠,不過面對季後賽這種短期賽制很吃感覺,再加上雙城的前兩號先發還算穩定,所以還是有點勝算。分區優勢以及主場優勢也是關鍵,雙城所在的分區戰力較弱,因此隔年還是有拼季後賽的本錢;主場戰績是聯盟數一數二的好,可以找找看除了草皮外有什麼關鍵因素,可以讓雙城隊在客場也打出一樣的好成績。

至於補強方面,我認為應該重點補強投手,先發至少要再補1個穩定的,牛棚還缺2~3位才可以頂住雙城在比賽中段的失分壓力。由於處於分區較弱的階段,補強還是很容易進季後賽的。