如何利用統(tǒng)計軟件Stata進行回歸分析
原創(chuàng)【51CTO.com原創(chuàng)稿件】數(shù)據(jù)挖掘和機器學習在如今的社會早已成為經(jīng)典的流行技術。采用相關技術的企業(yè)不在少數(shù),并且為社會產(chǎn)生了極大的效益。流行的數(shù)據(jù)挖掘軟件非常多,比如 Scikit-Learn、Pandas、R、Spark MLLib 等等,極大的方便了廣大從業(yè)者的日常開發(fā)和數(shù)據(jù)分析工作。
在開源軟件流行的今天,傳統(tǒng)付費軟件經(jīng)常被人們忽視,然而 Matlab、Mathematica、Maple 和 Stata 等數(shù)學和計算機軟件給人們提供了非常大的便利,并且有許多開源軟件不具備的功能,直至今日,仍然在各行各業(yè)中發(fā)揮著不可替代的作用。
Stata 作為一款有著30多年歷史的優(yōu)秀統(tǒng)計學習軟件,為統(tǒng)計學習提供了強大的解決方案,目前版本已經(jīng)更新到了 16.0。本文將帶領讀者一窺 Stata 的風采,介紹如何利用 Stata 進行回歸分析。
首先下載 UCLA 大學的學校測評數(shù)據(jù)集合:
- use https://stats.idre.ucla.edu/stat/stata/webbooks/reg/elemapi
 - mkdir c:regstata
 - cd c:regstata
 - save elemapi
 - use elemapi
 
得到數(shù)據(jù)集合之后, 如果需要進行回歸分析,只需要簡單的執(zhí)行一下命令即可:
- regress api00 acs_k3 meals full
 - Source | SS df MS Number of obs = 313
 - -------------+---------------------------------- F(3, 309) = 213.41
 - Model | 2634884.26 3 878294.754 Prob > F = 0.0000
 - Residual | 1271713.21 309 4115.57673 R-squared = 0.6745
 - -------------+---------------------------------- Adj R-squared = 0.6713
 - Total | 3906597.47 312 12521.1457 Root MSE = 64.153
 - ------------------------------------------------------------------------------
 - api00 | Coef. Std. Err. t P>|t| [95% Conf. Interval]
 - -------------+----------------------------------------------------------------
 - acs_k3 | -2.681508 1.393991 -1.92 0.055 -5.424424 .0614074
 - meals | -3.702419 .1540256 -24.04 0.000 -4.005491 -3.399348
 - full | .1086104 .090719 1.20 0.232 -.0698947 .2871154
 - _cons | 906.7392 28.26505 32.08 0.000 851.1228 962.3555
 - ------------------------------------------------------------------------------
 
如果需要預測新的變量, 只需要執(zhí)行以下命令:
- predict fv
 
如果需要顯示模型的殘差, 則執(zhí)行以下命令:
- predict fv, residual
 
Stata 除了提供基本的回歸分析的功能,最引人入勝之處在于其提供了獨一無二的最優(yōu)化參數(shù)選擇功能. 我們知道在計算 Lasso Regression 或者 Ridge Regression 的時候, 最優(yōu)化函數(shù)中有懲罰項。而懲罰項前面的系數(shù)如何選擇是個困擾了數(shù)學界幾十年,直到幾年前才得到解決的難題。Stata 在這方面提供了兩種算法,一種是 Plug-in Method, 而另一種是 Cross-Validation Method。
當采用 plug-in method 進行 Lasso Regression 的時候,只需要調(diào)用:
- lasso linear api00 acs_k3 meals full, selection(plugin)
 
返回結(jié)果中可以看到參數(shù)值和殘差。
- --------------------------------------------------------------------------
 - | No. of
 - | nonzero In-sample
 - ID | Description lambda coef. R-squared BIC
 - ---------+----------------------------------------------------------------
 - * 1 | selected lambda .1715319 1 0.6610 3513.359
 - --------------------------------------------------------------------------
 
當采用 cross-validation method 進行 Lasso Regression 的時候,只需要調(diào)用:
- lasso linear api00 acs_k3 meals full, selection(cv)
 
返回的結(jié)果中有如下一張表:
- --------------------------------------------------------------------------
 - | No. of Out-of- CV mean
 - | nonzero sample prediction
 - ID | Description lambda coef. R-squared error
 - ---------+----------------------------------------------------------------
 - 1 | first lambda 91.43285 0 0.0017 12460.5
 - 37 | lambda before 3.210383 3 0.6667 4159.559
 - * 38 | selected lambda 2.925181 3 0.6667 4159.504
 - 39 | lambda after 2.665316 3 0.6666 4160.824
 - 43 | last lambda 1.837099 3 0.6657 4172.744
 - --------------------------------------------------------------------------
 
可以看到, Lasso Regression + Plug-in Method , Lasso Regression + Cross-validation Method 和傳統(tǒng)的 OLS 的結(jié)果有所不同。由于 Stata 提供的上述參數(shù)選擇方法是最近幾年的最新研究成果,因此在免費的開源軟件比如 R 和 Scikit-Learn 中都還沒有得到應用, 這也是 Stata 的難能可貴之處。
Stata 提供了方便的編程接口,用于支持常見的各種數(shù)據(jù)分析和數(shù)據(jù)挖掘功能。另外,它也提供了用戶圖形界面, 用戶可以很方便的通過點擊按鈕和選擇下拉框等方式進行非常方便的各種操作。Stata 作為經(jīng)濟學領域的經(jīng)典軟件,也應該得到包括互聯(lián)網(wǎng)企業(yè)在內(nèi)的 IT 公司的關注。
作者介紹
汪昊,技術總監(jiān)/架構(gòu)師,美國猶他大學本科/碩士,對外經(jīng)貿(mào)大學在職MBA。曾在百度,新浪,網(wǎng)易,豆瓣等公司有多年的研發(fā)和技術管理經(jīng)驗,擅長機器學習,大數(shù)據(jù),推薦系統(tǒng),社交網(wǎng)絡分析等技術。在 TVCG 和 ASONAM 等國際會議和期刊發(fā)表論文 11 篇。國際學術會議 IEEE SMI 2008 和 ICBDT 2020 最佳論文獎。
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】















 
 
 






 
 
 
 