统计学辅助神器大揭秘
大学统计专业开的课除了纯理论的课程之外,大部分课程实际上都是某种程度上直接面向应用的,因此每一门课附带一些自己必备的统计学软件就显得十分必要了。实际上统计软件的选择并非单一的,解决同一个问题,常常可以考虑用多种不同的软件来进行。下面就来介绍一下我所了解的不同的软件的对不同的问题的适用程度。
1. R和R studio
我把这个放在了第一个要介绍的位置可见我是十分喜欢使用这个软件来进行学习的。我们先来明确一下R和R studio的关系。R studio是一个编辑器。R其实是一个单独的统计软件,对于大部分设备来说,我们如果下载了R,就可以直接进行编辑操作运算了,R studio并不是一个必要性的存在。但原始的R操作界面十分的简陋,下面给大家看一个原始的R console 。
这个窗口除了丑一点并不影响我们编辑任何内容。这个时候R studio的强大优势就体现出来了。R studio将所有我们需要了解的信息做了重新排版分区。
大家可以看到整个界面分成了四个部分,左上部分是文档编辑区,在这里可以生成R markdown和R script等类型的文件。左下部分集合了控制台等,右上部分是我们所有的变量,优先部分集合了图片的生成,各种函数信息等。这样看来是不是比原始的R软件好看多了呢。
和其他语言对对比,R有一个很明显的优势,就是免费加开源,我们可以直接在R的网站上找到各种源代码和程序包。当然,在比较初级的阶段,或许用不到需要去网站上下载的程序,大部分学习需要的程序都已经预装在了R上。在保证了自由的同时R也牺牲了规范性,有一个很让人诟病的缺点就是R语言的语法结构比较松散。和其他的程序语言相比,R可能仅仅声明变量的方式就五花八门。
2. Excel
Excel 应该是我们听说的最多的一款软件了,不得不说,这个软件做的真的很强,虽然我没有很深度的使用过,但是从简单的描述性统计,到画各种箱线图,折线图等等简直丝毫不输R 这一类的统计学语言。最重要的是,这个软件不需要考虑语法,大部分程序都是一个完整的框架只需要鼠标点一点输入参数即可。在求最优化的问题上,Excel也是非常的方便直接把各种约束和目标函数打在表格内,就可以求出结果。相比MATLAB里的程序包,简单但是不失稳重。Excel的这种设计理念,感觉更像是为商业服务的,利用现存的模型,去做一些计算,在极度简化的同时也就把功能限制在了一定的框架之内。既然是服务商业,Excel设计之初可能并没有考虑过大量数据的操作,因此,在面对百万数量级以上的数据时,Excel就直接缴械了。
3. Python
Python的火热程度近年逐渐超过了R语言。如果R在学校里用的比较多的话,Python就是工业和学术通吃的存在。单就统计和机器学习而言,Python和R几乎没有任何区别。但是涉及到数据的爬取,清洗等工作时可能更是python的专长。但R同样也有相同的功能。从语法的角度来说,Python给人的感觉是一种介于Java等语言和R之间的语言,语法并非十分严格,但却很有条理,没有R那么乱。由于开源的设计,R被无数作家贡献成了一个大杂货铺,两个具有完全相同功能的工具可能名字不同,摆放位置也不同。
但是对于单纯的统计学需要的话我会更喜欢R语言,下面以最简单的单变量线性回归来举例大家看看R和python的区别:
Python:
import pandas as pd
import statsmodels.formula.api as smf
dataset = pd.read_csv(“directory”)
smf.ols('y ~ x', data = dataset).fit().summary()
R:
dataset <- read.csv(directory)
lmod <- lm(y~x, data = dataset)
summary(lmod)
可以看出对于python这种不单为统计设计的软件会有一些调用统计工具的要求,但是同时也更显得条理。
这里推荐一个python比较优秀的编辑器,Anaconda。页面十分简洁而且还有网页版
注册登录之后就可以使用了,网页版相较于下载版本可能速度偏慢,功能不足。
另外一个非常优秀的编辑器就是VS code了。这是我见过的第一个编辑器,VS code实际上可以为多种语言提供编辑功能,比如Java, Python,甚至承担Latex的编辑功能。
4. GAMS
前面介绍的几个都是用途十分广泛的一系列软件,那么术业有专攻,GAMS就是一个专业解最优化问题的软件。尤其是在应对大规模优化模型的时候GAMS可以发挥其简洁快速的优势。在求解最优化问题时,我们常用的就是Gruobi求解器---号称世界上最快最好的优化求解器。除此之外IBM开发的CPLEX也是非常常用的一款求解器,在解简单的凸优化和现行规划时二者几乎看不大差别。我在最初接触GAMS的时候,第一感觉就是这个软件语言完全不近人情,由于模型高度集约化,和一般的编程语言风格不大一样,语法十分死板。每一个变量的声明,每一个等式约束的写法都是十分讲究的,任何一点不规范都会导致程序无法运行。最优化在Matlab和python和R中就没有那么严格。
以上就是我目前用到过的一些统计学软件,这些东西我目前也只是局限于“用到过”这样一个状态,远远谈不上懂,鉴于大部分读者可能更乐于通俗易懂,文章叙述语言多趋于白话,如有叙述不周,仅当抛砖引玉。事实上,这几款软件也只是统计学软件多冰山一角,不得不提的还有SPSS,STATA, 和著名的北卡三角洲之一开发的SAS等等。
无论用什么语言,都只是知识的实现,用好的前提是内核知识点要理解清楚,知道一个package是如何写出来的意义远远超过了知道如何用它。这也是Data scientist和Data engineer的区别。
排版 | 木子