为什么你应该学SAS?本文不想卷入SAS与R,或者与SPSS、S-Plus、Matlab等统计软件孰优孰劣的争论中去,我是说,作为一个有志于投身工业界的统计分析人员,你为什么应该把SAS纳入你的分析工具箱?这会是一篇动员贴,尤其是对广大对数据分析感兴趣的在校生。在默认统计编程语言是R的“统计之都”,我需要拿上面这幅图来吸引眼球:学SAS吧。

R是好东西,不只是在COS,现在全世界的统计系和统计学生当中,R是主导性的学术语言。但不妙的是,国内高校学生中,学SAS的明显少了,医药、金融等行业经常苦于招不到合适的SAS程序员。在统计分析领域,SAS是主导性的工业语言,它与R,不应该是此消彼长的关系。工业界与学院的隔膜,现在我感觉是非常明显。下面讲的就是,关于SAS,我们在学院可能不太关注的事实。

0. SAS是什么?

这是一个问题,SAS已经不是你所想象的那个样子。作为一家年收入超过20亿美元的、全球最大的独立BI/分析厂商,SAS就是那家由Dr. Jim Goodnight领导的私人公司。作为一个庞大的软件系统,以下只是SAS系统的一个不完整、不系统的介绍:

1.传统SAS(编程驱动)

1-1 基础模块(Base SAS):包括类似于PL/L的第四代编程语言data steps、SQL、ODS、XML Engine、Macro以及大量的内置函数(支持Perl 正则表达式)和过程步(procedures)等。对一个SAS程序员来说,这个BASE模块几乎就是全部(说学SAS,就是先学这个,这不需要统计背景或者计算机背景)。又,狭义的SAS Base仅指data steps。

1-2 数据存取模块(SAS/ACCESS):支持大量的PC文件(除文本文件外,还包括Excel、SPSS的.sav、Stata的.dta等等)以及所有主流的关系数据库及ERP系统(Oracle、SAP、SQL Server、DB2、MySQL等等)

1-3 作图模块(SAS/GRAPH):SAS作图功能强大,只是模样够土。新版SAS 9.2在这块有不少让人兴奋的改进,比如支持ODS、TrueColor、ActiveX、SVG(Scalable Vector Graphics)等,另外还加了一个graph editor,新潮不少。

1-4 统计分析模块(SAS/STAT ):包括回归模型、方差分析模型、混合模型、贝叶斯分析、分类数据分析、多元分析(主成分和因子分析等)、判别分析、聚类分析、生存分析、非参数分析等,多是我不熟悉的领域,只管罗列。有个Stat Studio支持R。

1-5 时间序列与计量经济学模块(SAS/ETS ):同上,X11、X12、ARIMA、PANEL、AUTOREG、……。又,做资产组合等投资分析也是在这个模块。

1-6 矩阵运算模块(SAS/IML) 1-7 运筹学模块(SAS/OR) 1-8 地理信息系统模块(SAS/GIS) …… 以上部分是大部分SAS高校用户能接触到的东西,主要用命令行实现功能。下面则是有GUI的客户端工具,一般都用它们作计算引擎。

2. 客户端工具

2-1 元数据管理(SAS Management Console,SMC):元数据(metadata)就是关于数据的数据。最简单的,一个数据集的变量属性就是metadata。SMC是SAS产品元数据管理的统一中心。

2-2 ETL工具(SAS Data Integration Studio):ETL就是数据抽取(Extract)、转换(Transform)和加载(Load)。完成企业数据处理的工具还有SAS OLAP Cube Studio、SAS Information Map Studio等。

2-3 数据挖掘模块(SAS Enterprise Miner,EM) :SAS的重磅产品之一。5以上是Java客户端版本,用户体验增进不少。

2-4 综合分析工具包(SAS Enterprise Guide,EG): 有完善的GUI界面,完成SAS从数据整合、分析到报表的一系列功能。EG与JMP,是SAS公司的两个明星产品。 ……

3. 其他

3-1 统计探索软件包JMP:这是一个独立于Base SAS的软件,由SAS公司的二把手John Sall主管,界面很炫,功能很强,让业务人员爱不释手那种。JMP9支持R。 ……

以及,由以上SAS产品整合打包、再加上业务规则支持形成的各种SAS行业解决方案,广泛运用于金融、通信、能源、政府、医药、保险、制造、零售等各个行业。 SAS不仅仅是一款统计软件,它的官方定位是“商务分析和商务智能软件”(Business Analytics and Business Intelligence Software, BA & BI)。现在我们的重点放回SAS 1.1 即Base SAS上来。

1. SAS是最流行的数据分析类语言

我们看一个编程语言4月份的排名,来自TIOBETIOBE编程语言排名是各种程序语言流行程度的指标,每月更新。它参考全球范围内的技术工程师、培训师以及第三方厂商的意见,通过google、MSN、Yahoo!等常用的搜索引擎搜索结果来计算每种编程语言的流行指数。这个排行榜是程序员查看自己掌握的编程技能是否过时的权威参考之一。具体的评分标准,可以参阅其官分评分文档。现在最新的排行榜是(前20名,2010年4月):

这个TIOBE排名,有它自身的局限。比如,Google新推出的Go,一时广受追捧,4月的排名噌就上去了,但这并不能代表它的实际流行程度。但长期看来,模式还是很明显,比如,通用型的编程语言C/C++、Java、Perl、Python等一直占据这个榜单的榜首,而SAS,则一直是数据分析类语言的龙头,与Oracle数据库内置的PL/SQL语言不分上下。在2010年4月这份榜单中,我们可以把常见的统计分析类语言(关于“统计分析类语言”,这里表述不够精确,比如Matlab,可以作为统计分析工具用,但更多用在科学计算方面。得其大意了。)单独摘出来做一份表单(Maple、Mathematica、R和SPSS由于在榜单上差异不大,故按字母顺序排序):

统计分析语言 TIOBE排名2010年4月
1 SAS 13
2 Matlab 18
3 Fortran 34
4 Maple #51 to #100
5 Mathematica #51 to #100
6 R #51 to #100
7 SPSS #51 to #100

**SAS是工业界最流行的统计分析语言。**以前,号称有工业用途的三个统计软件是SAS、S-plus和SPSS,它们都是二十世纪七十年代问世的。S-plus与R同源,根正苗红,前身是上世纪七十年代末诞生于AT&T的贝尔实验室(Bell Labs)的S语言,八十年代末由StatSci^[编者注:这个链接现在已经失效,抱歉。]公司运作,九十年代初转主MathSoft,2001年公司改组,改名叫Insightful,前年(2008),Insightful又被BI产商Tibco收购,从此,江湖上再也听不到S-plus的名号,它被融入Tibco的一个叫TIBCO Spotfire的分析平台。

再说SPSS,它的历史最早,1968年就有第一个发行版,由当时斯坦福大学的研究生Norman Nie等人发明,原意是Statistical Package for the Social Sciences。1975年SPSS公司成立,1993年上市。2009年,SPSS公司被IBM以12亿美元收购。现在,这家公司称作"SPSS: An IBM Company",那个软件,叫做PASW (Predictive Analytics SoftWare) 。我们默认的那个SPSS也已经不复存在。

2009年,SAS公司的全球收入是23亿美元,它创立于1976年,比SPSS公司还晚一年。SAS软件1972年就有一个较稳定的发行版。随着BO等BI公司、SPSS等数据分析工具提供商一个个被IT巨头收购,SAS现在是全球最大的独立的BI/分析厂商,迄今没有上市。

2. R和SAS

这里要单独说下R。R现在被认为是SAS的一个潜在竞争者。SAS公司在细分市场上的主要竞争对手是SAP、Oracle、IBM、Microsoft、Teradata、SunGard、Unica等IT厂商。R对SAS的(潜在)威胁,不是体现在软件本身,而是体现在用户尤其是高校用户上。前面提到,R现在是学院里的标准统计语言。随便揪一个统计系的学生问:“为什么学R”。答:“因为课程项目用。”“为什么课程项目用?”答:“因为老师用。”或者“因为谢益辉在用。”

那我们再问R的传道者像谢益辉,“为什么用R?”答:“因为R开源”、“因为R统计功能强大,算法日新月异”、“因为某某大佬用R”等等。——通常,你不会因为,比如“R比SAS好”便去学R,或者“SAS比R好”便去学SAS。但是,假如一个人的时间精力只允许他/她学一门语言,那么,由于学院派益辉同学等的大声疾呼,R的确抢走了SAS的很多高校用户。但如果一个在校生还有额外的时间精力,而且他的志向不限于学院,那么,他或许应该再听听工业界的呼吁。

前面提到“算法日新月异”是R的一个优势,这对学院研究颇有吸引力,但工业界相对就保守些,对新算法的需求就小些。——平常听起来“保守”似乎是一个不太积极向上的词,但想想,一个法官应该是保守的,在统计学的假设检验里,遵守的其实也是一个保守原则。举个例子,在学院研究中,Bayesian(贝叶斯分析)在概念上已经不是那么新潮了,但在医药行业(就是那个由保守的药监局如FDA监管的行业),现在用的还是传统的Frequentist方法(参见ICH E9,Statistical Principles for Clinical Trials^[编者注:这个链接现在已经失效,抱歉。])。学院里的优势不必然是工业界的优势,那么你为什么不额外再学一门SAS,这个工业界的金标准?以前说过,R的不足刚好是SAS所长,反之亦然。

又,有在校生说,R免费,而SAS是商业软件,故学R,——这是一个不成熟的、人云亦云的说法。你在学校实验室能免费学到SAS,以后你的东家自然会为SAS软件买单。费用不是你应该考虑的问题。

3. SAS可以作为一门职业

从实际的角度来说,有一个工种就叫做SAS程序员(SAS Programer, 或叫做Statistical SAS Programmer、Statistical Analyst)。在全球最大的求职网站www.monster.com,分别以SAS等作为skill关键词,搜索结果如下(测试时间:2010-04-13,你现在看到的会有细微的差别):

1645 SAS jobs

577 Matlab jobs

329 SPSS jobs

87 Fortran jobs

59 STATA jobs

59 Maple jobs

24 Mathematica jobs

这是英语世界的大致情况。说说我们身边的机会。SAS使用者大多集中在医药、金融等行业。现在国际上的大药厂(辉瑞、拜耳、诺华,……)纷纷在中国开研发中心,对生物统计师(Biostatistician,包括统计师和程序员。程序员就是SAS程序员,而SAS编程也是统计师的基本要求之一)的需求渐长。在金融领域,拿我稍熟悉的信用评分领域来讲,熟悉SAS和数据挖掘的人才也很短缺。另外,广泛的机会还能在国内如火如荼的互联网公司和通信行业找到。

其实,即使不把SAS作为一门职业,对一份分析类的工作,你简历中出现SAS也会比出现其他类似的东西(Excel、……)更能吸引雇主的眼球。SAS被普遍认为是一种重量级的工具。 对于统计系的学生,我知道R是你的首选。你需要再学习一门SAS的理由是,SAS是工业界的流行语言。 对社会学、经济学等社科类的专业学生来说,你们需要学习SAS,还有一个额外的理由,SAS会让你的背景显得更硬朗一些,大白话就是说,能让文科气息稍微淡一些。 对IT类学生来说,学习SAS不会占用你太多时间,然后在就业市场,你的选择会宽广很多。(待续)

发表/查看评论