【51CTO.com原创稿件】数据挖掘和机器学习在如今的社会早已成为经典的流行技术。采用相关技术的企业不在少数,并且为社会产生了极大的效益。流行的数据挖掘软件非常多,比如 Scikit-Learn、Pandas、R、Spark MLLib 等等,极大的方便了广大从业者的日常开发和数据分析工作。
在开源软件流行的今天,传统付费软件经常被人们忽视,然而 Matlab、Mathematica、Maple 和 Stata 等数学和计算机软件给人们提供了非常大的便利,并且有许多开源软件不具备的功能,直至今日,仍然在各行各业中发挥着不可替代的作用。
Stata 作为一款有着30多年历史的优秀统计学习软件,为统计学习提供了强大的解决方案,目前版本已经更新到了 16.0。本文将带领读者一窥 Stata 的风采,介绍如何利用 Stata 进行回归分析。
首先下载 UCLA 大学的学校测评数据集合:
- use https://stats.idre.ucla.edu/stat/stata/webbooks/reg/elemapi
- mkdir c:regstata
- cd c:regstata
- save elemapi
- use elemapi
得到数据集合之后, 如果需要进行回归分析,只需要简单的执行一下命令即可:
- 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
- ------------------------------------------------------------------------------
如果需要预测新的变量, 只需要执行以下命令:
- predict fv
如果需要显示模型的残差, 则执行以下命令:
- predict fv, residual
Stata 除了提供基本的回归分析的功能,最引人入胜之处在于其提供了独一无二的最优化参数选择功能. 我们知道在计算 Lasso Regression 或者 Ridge Regression 的时候, 最优化函数中有惩罚项。而惩罚项前面的系数如何选择是个困扰了数学界几十年,直到几年前才得到解决的难题。Stata 在这方面提供了两种算法,一种是 Plug-in Method, 而另一种是 Cross-Validation Method。
当采用 plug-in method 进行 Lasso Regression 的时候,只需要调用:
- lasso linear api00 acs_k3 meals full, selection(plugin)
返回结果中可以看到参数值和残差。
- --------------------------------------------------------------------------
- | 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 的时候,只需要调用:
- lasso linear api00 acs_k3 meals full, selection(cv)
返回的结果中有如下一张表:
- --------------------------------------------------------------------------
- | 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 和传统的 OLS 的结果有所不同。由于 Stata 提供的上述参数选择方法是最近几年的最新研究成果,因此在免费的开源软件比如 R 和 Scikit-Learn 中都还没有得到应用, 这也是 Stata 的难能可贵之处。
Stata 提供了方便的编程接口,用于支持常见的各种数据分析和数据挖掘功能。另外,它也提供了用户图形界面, 用户可以很方便的通过点击按钮和选择下拉框等方式进行非常方便的各种操作。Stata 作为经济学领域的经典软件,也应该得到包括互联网企业在内的 IT 公司的关注。
作者介绍
汪昊,技术总监/架构师,美国犹他大学本科/硕士,对外经贸大学在职MBA。曾在百度,新浪,网易,豆瓣等公司有多年的研发和技术管理经验,擅长机器学习,大数据,推荐系统,社交网络分析等技术。在 TVCG 和 ASONAM 等国际会议和期刊发表论文 11 篇。国际学术会议 IEEE SMI 2008 和 ICBDT 2020 最佳论文奖。
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】