曹 蕾,張志強
(長春工業大學 數學與統計學院,吉林 長春 130012)
在籃球運動項目中,投球命中率是衡量籃球運動員表現的重要指標,為籃球經理人考慮球員轉會提供了參考[1]。用上賽季投球命中率預測下賽季投球命中率是直觀的想法,然而James W等[2]指出,p維正態總體(協方差矩陣是單位陣)的樣本均值是非容許估計[3],即收縮估計的風險函數小于極大似然估計的風險函數。同時考慮身高、體重等因素對投球命中率的影響,文中采用雙水平收縮估計方法[4]對籃球運動員投球命中率進行預測,并用Matlab軟件實現。
文中選取2017-2018賽季和2018-2019賽季籃球運動員的數據,該數據是從新浪體育中國籃球CBA專欄整理的。首先進行數據清洗:
1)2017-2018賽季和2018-2019賽季都參加的球員;
2)運動員在兩個賽季投球數都大于15次,最終選取255個數據。
球員數據包括身高(x1j,cm)、體重(x2j,kg)、總籃板數(x3j)、出場數(x4j)、助攻(x5j)、搶斷(x6j)、蓋帽(x7j)、罰中球數(x8j)、兩分球命中數(Yi1)、兩分球總數(Ni1)。j=1,2分別代表2017-2018賽季和2018-2019賽季。2017-2018賽季部分球員篩選數據見表1。

表1 2017-2018賽季運動員數據
2017-2018賽季共有255個籃球運動員,同時考慮一些協變量對籃球運動員投籃命中率的影響,如身高、體重、出場數、總籃板數、助攻、搶斷、蓋帽、罰中球數等一些協變量因素。在層次模型第二層中加入新的協變量,采用雙水平收縮估計方法,但文獻[4]處理的是連續型隨機變量,文中數據處理的是離散型數據,要對數據進行變換。
假設
Yij~Binomial(Nij,pi),
i=1,2,…,n0,j=1,2,
式中:i——代表每一個運動員;
j——賽季,j=1代表2017-2018賽季,j=2代表2018-2019賽季;
Nij——第i個運動員第j個賽季的兩分球投球總數;
Yij——第i個運動員第j個賽季的兩分球投中球數;
pi——第i個運動員的命中率。
假設2017-2018賽季和2018-2019賽季的投球命中率不變,可以得到
則Xij近似分布


(1)
先驗分布中考慮了8個協變量的因素,
θi=β0+β1x11+β2x21+…+β8x81,
β0~N(0,λ),
β1~N(0,λ),
β2~N(0,λ),
?
β8~N(0,λ),
假設β0,β1,…,β8都獨立。j=1代表2017-2018賽季數據,文中用2017-2018賽季數據來預測2018-2019賽季的投球命中率。其中x11,x21,…,x81分別代表第1個賽季的身高、體重、總籃板數、出場數、助攻、搶斷、蓋帽、罰中球數,則
收縮估計是

(2)


(3)
風險函數式(3)的無偏估計為

(4)



(5)
對風險函數無偏估計式(4)通過Matlab實現[5-7],考慮后衛、前鋒、中鋒和全體籃球運動員,以全體籃球運動員數據為例進行編程。具體流程如圖1所示。
具體編程如下:
CBA1=xlsread('18zongti.xlsx');%導入數據集
p=CBA1(:,1)./CBA1(:,2);%極大似然估計
H=1./(CBA1(:,2).*p.*(1-p));
X=log(CBA1(:,1)./(CBA1(:,2)-CBA1(:,1)));
G=1+((CBA1(:,3)-mean(CBA1(:,3)))./std(CBA1(:,3))).^2+((CBA1(:,4)-mean(CBA1(:,4)))./std(CBA1(:,4))).^2+((CBA1(:,5)-mean(CBA1(:,5)))./std(CBA1(:,5))).^2+((CBA1(:,6)-mean(CBA1(:,6)))./std(CBA1(:,6))).^2+((CBA1(:,7)-mean(CBA1(:,7)))./std(CBA1(:,7))).^2+((CBA1(:,8)-mean(CBA1(:,8)))./std(CBA1(:,8))).^2+((CBA1(:,9)-mean(CBA1(:,9)))./std(CBA1(:,9))).^2+((CBA1(:,10)-mean(CBA1(:,10)))./std(CBA1(:,10))).^2;
h=H./G;
q=1./H;
程序中p表示球員賽季命中率,H表示Xi1的近似方差,X表示變換后的連續性數據。x11,x21,…,x81的單位是不同的,所以對x11,x21,…,x81進行了單位化。CBA1(:,3)代表身高,CBA1(:,4)代表體重,CBA1(:,5)代表出場數,CBA1(:,6)代表總籃板數,CBA1(:,7)代表助攻,CBA1(:,8)代表搶斷,CBA1(:9)代表蓋帽,CBA1(:,10)代表罰中球數,所以G也需要相應的單位化,即
式中:std——標準差。
lamda0=var(X);
x0=[20 100];
L=length(G);
global G H lamda0 L;
camel= @(x,y) 1./(sum(q)).*(sum((q.*(h.^2.*(X-x).^2))./((y+h).^2)+(y-h)./(y+h)));
loss=@(xo_sa) camel(xo_sa(1),xo_sa(2));
options1 = struct(...
'CoolSched',@(T) (.95*T),...
'InitTemp',10^7,...
'MaxConsRej',10^5,...
'MaxSuccess',10^4,...
'MaxTries',10^5,...
'StopVal',10^(-5),...
'Verbosity',1);
[xo_sa,fo_sa]=anneal1(loss,x0,options1);
這部分程序的任務是最小化風險函數的無偏估計,從而得到超參數的估計。風險函數的無偏估計是一個非常復雜的函數,采用梯度的最優算法和Nelder算法[8]無法實現式(4)的最小化,所以采用模擬退火[9-10]方法進行最小化。
anneal1是模擬退火程序。鑒于篇幅原因,文中不展示模擬退火程序。
得到超參數的估計后,根據式(5)得到收縮估計。為了評價收縮估計方法的好壞,采用預測誤差(WPE),
SURE收縮估計方法[11]文中也是采取加權平方損失函數。因此可以根據WPE的大小來判斷雙水平收縮估計和SURE收縮估計的好壞,WPE越小,收縮估計越精準。
數據經過預處理后,文中認為身高、體重、出場數、總籃板數、助攻、搶斷、蓋帽、罰中球數這些協變量與命中率密切相關。按照位置不同,考慮后衛、前鋒、中鋒和所有球員的兩分球命中率。WPE結果見表3。

表3 WPE結果對比
從表3可以得出結論,即考慮協變量對預測誤差改善是有幫助的。雙水平收縮估計方法考慮了協變量,SURE收縮估計方法沒有考慮協變量,對于后衛、前鋒、中鋒、所有球員,雙水平收縮估計方法的WPE都小于SURE方法的WPE。
根據2017-2018賽季數據預測2018-2019賽季投球命中率,采用雙水平收縮估計方法和SURE收縮估計方法[11]進行預測。雙水平收縮估計方法是處理連續隨機變量,而投球數是離散型數據,進行變換后得到連續型變量。最小風險函數的無偏估計是比較有挑戰的工作,因為常用梯度的最優算法和Nelder算法無法實現式(4)的最小化,所以采用模擬退火方法實現風險函數無偏估計的最小化。因為雙水平收縮估計方法的WPE小于SURE收縮估計方法的WPE,所以雙水平收縮估計方法比SURE收縮估計方法好。SURE收縮估計方法沒有雙水平收縮估計方法好的原因是SURE收縮估計方法沒有考慮協變量因素(身高、體重等)。
綜上所述,文中對2018-2019賽季籃球運動員數據進行分析,對投球命中率進行預測,雙水平收縮估計方法的預測誤差非常小,希望對籃球運動員轉會提供一定的參考作用。