为什么你应该学 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 不会占用你太多时间,然后在就业市场,你的选择会宽广很多。(待续)

发表 / 查看评论