何小年,段鳳華
(湖南醫(yī)藥學(xué)院,醫(yī)學(xué)人文與信息管理學(xué)院,湖南,懷化 418000)
Python是一種專門處理金融、高級(jí)數(shù)學(xué)、統(tǒng)計(jì)和時(shí)間序列,便于繪制圖像工具,可應(yīng)用于科學(xué)統(tǒng)計(jì)、人工智能、教育、Web開發(fā)、GUI開發(fā)、操作系統(tǒng)開發(fā)等諸多領(lǐng)域的編程語言。由荷蘭人吉多·范羅蘇姆開發(fā)的免費(fèi)開源編程軟件,具有免費(fèi)性、開源性和非美國直接起源性[1]。統(tǒng)計(jì)分析常用的軟件有Excel、MATLAB、SPSS和R等[2-4],本文嘗試應(yīng)用Python語言進(jìn)行統(tǒng)計(jì)學(xué)線性回歸內(nèi)容實(shí)訓(xùn),實(shí)現(xiàn)對(duì)源于美國的許多教學(xué)科研技術(shù)產(chǎn)品的替代。
回歸分析(regression analysis)主要是探討自變量與因變量間的相互關(guān)系,通過構(gòu)建自變量與因變量之間相互關(guān)系的回歸模型,對(duì)因變量的未來演變趨進(jìn)行預(yù)測(cè),也可用于理解哪些自變量與因變量的相關(guān)程度,并探索這些關(guān)系的形式。業(yè)界已經(jīng)開發(fā)了許多用于執(zhí)行回歸分析的技術(shù),其中較為常見的回歸分析方法包括線性回歸、多項(xiàng)式回歸、邏輯回歸、嶺回歸、逐步回歸等[5]。本文運(yùn)用Python進(jìn)行線性回歸分析。
在Python的第三方庫中,以sklearn (scikit-learn)較為常見,是著名的機(jī)器學(xué)習(xí)庫,對(duì)機(jī)器學(xué)習(xí)方法提供了封裝,包括回歸(regression)、降維(dimensionality reduction)、分類(classfication)、聚類(clustering)等,擁有完善的文檔,這種優(yōu)點(diǎn)使其上手簡(jiǎn)單。因?yàn)槠浒舜罅繑?shù)據(jù)集,節(jié)約了收集和整理數(shù)據(jù)集合的時(shí)間,所以是目前比較流行的的機(jī)器學(xué)習(xí)與實(shí)踐的工具。
運(yùn)用sklearn庫構(gòu)建線性回歸模型時(shí),需要經(jīng)過如下步驟:
(1) 根據(jù)預(yù)測(cè)的目標(biāo),確定自變量和因變量;
(2) 繪制散點(diǎn)圖,選擇回歸模型的類型;
(3) 估計(jì)模型參數(shù),建立回歸模型;
(4) 對(duì)回歸模型進(jìn)行檢驗(yàn);
(5) 利用回歸模型進(jìn)行預(yù)測(cè)。
案例1 本文采用文獻(xiàn)[6]中《華爾街日?qǐng)?bào)年鑒》(1999)公布的美國部分航空公司業(yè)績案例,案例信息見表1,問題為研究航班正點(diǎn)率與投訴率之間有何關(guān)系?若目前已知美國航空公司航班正點(diǎn)率為出發(fā)點(diǎn),預(yù)測(cè)每10萬旅客投訴的人次數(shù)是多少?
航班正點(diǎn)率與投訴率之間的線性關(guān)系回歸分析步驟如下。
(1) 根據(jù)案例的已知信息,來確定自變量和因變量。
已知航空公司的航班正點(diǎn)率,預(yù)測(cè)每10萬名旅客投訴的次數(shù),所以,航班的正點(diǎn)率為自變量,每10萬名旅客投訴次數(shù)為因變量。我們以y表示因變量,x表示自變量。
表1 航空公司航班正點(diǎn)率與乘客投訴率信息
(2) 繪制出所有自變量和因變量的散點(diǎn)圖,并觀察圖形,來判斷是否能夠建立回歸方程。
根據(jù)案例中數(shù)據(jù)所繪的散點(diǎn)圖(見圖1),航空公司航班正點(diǎn)率與每10萬名旅客投訴次數(shù)之間具有明顯的線性相關(guān),即航空公司航班正點(diǎn)率越大,每10萬名旅客投訴次數(shù)也就越小。由此,可以繪出航班正點(diǎn)率與每10萬名旅客投訴次數(shù)之間的線性回歸圖(如圖2)。
圖1 航班正點(diǎn)率和投訴率散點(diǎn)圖
圖2 航班投訴率預(yù)測(cè)值圖
(3) 估計(jì)模型參數(shù),建立回歸模型
根據(jù)圖2,可以建立航班正點(diǎn)率與每10萬名乘客投訴次數(shù)之間的一元線性回歸模型如下:
y=α+βx+ε
(1)
這里的α為常數(shù)項(xiàng)(即Y軸上的截距),β為回歸直線的斜率,ε為隨機(jī)誤差,ε的平方和即為殘差,殘差是確定線性回歸系數(shù)擬合性好壞的最主要方法之一。
(4) 對(duì)回歸模型進(jìn)行檢驗(yàn)
回歸方程的精度是表示實(shí)際觀測(cè)值和與回歸方程的擬合程度的指標(biāo),即對(duì)擬合優(yōu)度進(jìn)行度量。
(2)
可決系數(shù)R2越大即越接近于數(shù)字1,則表示回歸模型擬合的程度就越好。如果擬合的回歸模型精度符合需求,就可以利用擬合出的回歸模型,根據(jù)已有的自變量數(shù)據(jù)來估計(jì)因變量相對(duì)應(yīng)的結(jié)果。
由圖3可以看到,模型的擬合優(yōu)度(即R2=0.779)說明模型的擬合效果很好,可以使用這個(gè)模型進(jìn)行未知數(shù)據(jù)的預(yù)測(cè)了。
圖3 航班正點(diǎn)率和投訴率回歸分析結(jié)果截圖
(5) 利用回歸模型進(jìn)行預(yù)測(cè)
由圖2顯示預(yù)測(cè)直線,由圖3可知α=6.018,β=-0.07即可建立如下的線性回歸模型
(3)
假設(shè)航空公司航班的正點(diǎn)率等于70%,則使用回歸方程預(yù)測(cè)每10萬名旅客投訴次數(shù)約為1.088 8;如果航空公司航班的正點(diǎn)率等于80%,使用回歸方程預(yù)測(cè)每10萬名旅客投訴次數(shù)約為0.384 7。
運(yùn)行結(jié)果如圖1~圖3所示。
案例2 為了探討中國部分區(qū)域居民平均消費(fèi)開支及平均可支配收入之間數(shù)量關(guān)系,通過中國統(tǒng)計(jì)年鑒獲得2016年中國部分區(qū)域居民平均消費(fèi)開支及平均可支配收入統(tǒng)計(jì)數(shù)據(jù)(見表2)。
表2 2016年中國部分區(qū)域居民平均消費(fèi)開支及平均
問題為對(duì)居民消費(fèi)支出和居民可支配收入作相關(guān)分析;對(duì)居民消費(fèi)支出和居民可支配收入進(jìn)行回歸分析;利用所建立的回歸模型,預(yù)測(cè)某地區(qū)居民人均可支配收入為60 000元和65 000元時(shí)人均消費(fèi)支出水平的預(yù)測(cè)值。
采用案例1的代碼,運(yùn)行結(jié)果如圖4~圖6所示。圖4是中國部分區(qū)域居民平均消費(fèi)開支和平均可支配收入散點(diǎn)圖;圖5是中國部分區(qū)域居民平均消費(fèi)開支的預(yù)測(cè)值預(yù)測(cè)值圖;圖6是中國部分區(qū)域居民平均消費(fèi)開支和平均可支配收入回歸分析結(jié)果圖。從圖6可能得出中國部分區(qū)域居民人均可支配收入和居民人平均消費(fèi)支出相關(guān)系數(shù)為0.986 791,表明二者之間有高度的線性相關(guān)關(guān)系;R2=0.974,說明回歸模型擬合程度比較好;線性回歸模型為y=1 496.505 210 203 147 7+0.660 270 886 170 55x,其中,y是消費(fèi)支出,x是可支配收入;當(dāng)居民人均可支配收入達(dá)到60 000元和65 000元時(shí),預(yù)計(jì)居民人均消費(fèi)支出y的預(yù)測(cè)值分別為 41 112.758 380 44和44 414.112 811 29。
圖4 中國部分區(qū)域居民平均消費(fèi)開支和平均可支配
圖5 中國部分區(qū)域居民平均消費(fèi)開支的預(yù)測(cè)值圖
圖6 中國部分區(qū)域居民平均消費(fèi)開支和平均可支配
本文采用2個(gè)案例的數(shù)據(jù),建立了一元線性回歸模型,使用Python中的sklearn庫構(gòu)建線性回歸模型,估計(jì)了變量之間的相關(guān)系數(shù),對(duì)因變量進(jìn)行了估計(jì),從而得出了比較好的回歸模型和預(yù)測(cè)的結(jié)論,在教學(xué)中可以采用直觀的圖形方法來揭示統(tǒng)計(jì)學(xué)中的較為復(fù)雜的數(shù)學(xué)模型。為學(xué)生提供直觀認(rèn)識(shí),解決了課程中概念抽象不直觀、難理解的難題,可以加深學(xué)生對(duì)知識(shí)的理解,實(shí)現(xiàn)了復(fù)雜問題簡(jiǎn)單化,對(duì)于激發(fā)學(xué)生學(xué)習(xí)興趣、從而改善教學(xué)效果,提高教學(xué)質(zhì)量,具有重要的作用。