• 综合主站
  • 统计学专业应该使用什么样的统计软件(写给在统计学院学习的学弟学妹之四)

R做学术研究,学习都不错,不过其他商业软件也得会用吧,毕竟R在企业中的普及程度还比不过SPSS和SAS,找份实习都得会SPSS。
一个SAS使用者的回应

软件大比拼,UCLA ATS Statistical Consulting Group有篇很好的报告Strategically using General Purpose Statistics Packages: A Look at Stata, SAS and SPSS,最后有个推荐,说Stata和SAS搭配来用,可以扬长避短,发挥最大的功用。在统计分析方面,如果拿R跟SAS比较,我想最后也会得出类似大团圆的结论。以下三条,引号里面的,都来自益辉原文,下面则是我的一些相应的回应。接下来,我会单独提些话题,比较一下SAS和R。

1. “程序的可靠性或正确性:大多数商业软件都不是开源软件,我们并不知道其背后统计方法在计算机程序上的可靠性,从这一点上来讲,我们只能根据输出结果去判断程序是否可靠”

益辉的意思是不是,开源软件,因为可以查看源代码,就可以判断其统计方法的可靠性?如果是这样,我做些回应吧。成熟的统计软件包,如SAS,它的计算方法,经受了SAS研发人员的多重检验和测试,而且还要接受外部的测评,美国FDA在新药检查时,只认准SAS的计算结果,其方法的稳健应该没多少问题。我们对其他商业软件包的看法,也应该类似。

开源软件像R,在这方面其实应该受到质疑。对一个统计方法,可能有很多R使用者查看代码,考究其稳健性。但软件测试不是单凭读代码就可以完成的,也不是随便拿一个小数据跑跑就可以的。这方面,我想广大R使用者应该谦虚些。

益辉用Excel做例子。但Excel无意成为统计软件包,它只是一个有简单统计功能的电子表格。

2.“模型方法的变化与更新”

这个R当然做得更好。但熟悉SAS的用户也清楚,SAS也在随时提供experimental SAS software,这次新发布的SAS9.2就融入了以前的一些实验算法,包括mcmc、bayes之类。

很多朋友觉得SAS在算法更新方面一无是处,我的两个回答是,一就是上面提到的SAS在这方面也做了不少工作,二就是从应用的角度来说,SAS是一个商业软件包,它引进新算法是要考虑工业界的需求的。

3.“总之我们也看不到源代码,不知道它的统计分析代码怎么能写到七张光盘那么大。R的Windows安装文件30M,源文件16M左右。”

SAS的统计分析代码没有七张光盘那么大。SAS是一个商业分析的套件,包括银行、零售等各个行业的解决方案,它的代码级当然是R不能想象的。SAS/STAT模块execute在SAS root下的文件大概是30几兆。

你可以proc setinit;run;一下,查看机器装了多少SAS产品,大多是一般人一辈子也用不到的。在安装时大伙可以只勾选几个常用的模块。

又,很久很久以前,SAS是英文Statistical Analysis System的缩写,现在SAS只是一个品牌。

我再单列3个话题,关于R跟SAS,

4. 统计做图

这个是R比较自豪的地方。SAS9.1.3中的实验版本,现在SAS9.2正式发布的SAS ODS statistical graphics,一样能做出publication-quality graphics。

5.矩阵运算

R是一门矩阵语言,SAS提供相应的矩阵运算模块,SAS/IML(Interactive Matrix Language),跟Matlab类似。

6.数据访问

R支持很多数据格式,SAS提供更多,包括各种数据库和ERP系统。这个不能多说,否则有以大欺小之嫌。同样不能多说的是并行计算等。
To 2号:先统计,后软件。我认为SPSS的问题在于它把不适合傻瓜化的东西给傻瓜化了,分析数据好比医生给病人看病,是需要专业知识的,而不是拿着手术刀咔嚓咔嚓几刀下去就能完事的。

To 3号:谢谢江堂兄推荐的这篇报告,一会儿我把它补充到正文中去。作者认为R的学习门槛太高,我想原因可能在于他用其它软件的时间太长了,很多编程语言的学习都有这种障碍,一门语言用久了就觉得很难学习其它语言。我文章开头也说了,仅一家之言,我个人天天用R,因此观点难免偏向R,当局者迷,旁观者清,也恳请其他人多多批评指导 :)

1、我不是计算机专业出身,对软件测评不甚了解(经常听说什么unit test,不知道是啥玩儿),我的意思是,统计软件没有必要封闭源代码,统计模型方法都是统计学家或数学家(或其它行业的人)发明出来的,大家都公开了计算方法,而不是藏在家里只告诉读者计算结果,那么软件为什么要把计算过程写成程序藏起来呢?我对此表示不理解。

Excel无意做统计,但现实是很多人都在拿它做,例如我们学院的好几位老师都以“本书例子可以用Excel计算”为推销的卖点(如贾老师力压群雄的《统计学》一书,几乎全都是Excel实现)。

关于“广大R使用者应该谦虚些”,可能本文文风过于aggressive,我在写的时候就想此文一出,恐怕又要开始打仗了……不过我要澄清一下我的想法,关于软件问题,我首先是写统计学有什么需求,然后才写各个软件,目的在于分析软件是否切合需求,黑猫白猫没关系,关键是抓老鼠。对于统计学专业的人来说,“点OK按钮”输出一篇报表的方式对于解决实际问题来说只是一小步,更多时候我们需要多方面探索,如前面你提到的文档中所说,点菜单输出报表的缺点在于重复性差,其实固定的程序也有同样的缺点,都是不能定制、不易重复。如果统计分析的模式只有一种,那么R就没有必要存在了,关键是统计分析包含了大量的交互和非模式化的计算,这一点要求统计软件要有充分的自由——这一切都是在本文的限定语“‘统计学专业’应该用什么软件”之下所说的,其它专业当然也没有必要(更多情况下是缺少专业知识)把分析过程搞得这么灵活。

2、没错,从学术研究的角度来说,SAS更新太慢,因为一方面开发人员有限,商业软件的运营不能那么随意,另一方面它也不能说"...and comes with ABSOLUTELY NO WARRANTY..."之类的话。话说回来,R里面也是鱼龙混杂,尤其那些附加包,用户得自己小心,没准某种模型方法的程序就是你的邻居家小P孩编了发布在CRAN上的。

3、谢谢,又学到了新知识,以前总以为SAS就是个庞然大物。我想知道用户可不可以只买那30几兆程序?或者在那30几兆程序能完成什么工作?

4、ASCII图时代终于要彻底终结了。

5、可否帮我查一下文中提到的样本矩和回归系数如何用IML表达?这样以后讲这方面的运算就不会心里太没底了。

6、数据库的问题在R里面主要依赖于数据库软件是否提供访问标准(数据源、驱动等),现在很多数据库都支持ODBC,这样的话读写数据也就比较容易了。并行计算似乎是R的一大难题,偶尔见R-help里面长篇大论在讨论,不过我不太懂这个,个人也没遇到过需要并行计算的案例,所以没关注这个话题。R的数据都放在内存中,因此计算快,但数据容量受硬件限制,这也是它的一大缺点,不过同样我个人经历有限,没遇到过数据大得没法处理的案例,数据挖掘领域可能遍地都是这样的数据吧。
谢老师的文章写得很好,我也是从spss开始学起统计学的,当时觉得能用软件实现回归等统计分析是多么伟大的一件事情(当时网络还不发达,破解软件就更少了,只会用学校的spss10.0),但是后来发现我想要的很难在spss里实现,又机缘巧合开始认识了R,立马产生了兴趣,因为R里几乎可以自由实现自己所有的统计想法,以及基本的统计计算,这对学生来说是十分可贵的,学生既可以用lm()来做回归,也可用矩阵运算来验证,等等。这样学会的就不仅仅是统计的方法,而真正是统计思想,能促进统计学发展和应用的源动力,所以我也推荐统计专业的学生可以学习R软件,其实是不难的。
首先声明,不会为了打口水仗,有些是个人感受。
To No.3

1、并不是 R 就没有经过测试。R 的 core team 就有这个职能。而且 R 在全球使用范围很广,
可以通过r-bugs@r-project.org提交新的bug,这点可以参考http://bugs.r-project.org/cgi-bin/R。

还有随便找个小数据跑跑,我不太认同。我常常和数据库打交道,分析工具就是 R,
一般的数据处理最小数量也要达到百万级的,很少见到 R 崩溃的情形。

关于Excel 的使用,因为和谢是一个院出来的,所以感受一样。有些老师极为倾向使用 Excel,如果更难些的,用 VBA。

2、关于模型的变化与更新。根本就不用讨论。SAS的数据分析只是其中一个职责,重要不重要而已,卖的是解决方案
(当然什么解决方案纯粹就是忽悠人的,不由得让我想起有人总结统计学家和数据挖掘专家之间的区别其中一条就是:
统计学家研究出一种算法,会写篇文章公开发表;而数据挖掘专家有一种算法出来,不管好坏,马上开家IT公司),
基本上每个解决方案都是一个行业应用,不可能快。

而R是免费的,更倾向于一种纯粹的数据分析工具。从这个角度来讲,没有比它更好的(板砖ing)。

3、关于代码,因为没有深入学过计算机,所以也没啥说的。

不过好像 SAS 的人员大部分是销售吧,好像研发人员不是很多(有一次跟SAS销售聊天得知的,不知是真是假)。

4、关于作图。好看不好看是对外行人说的。而它的实际意义,是不是能够反映数据本质,这才是我们需要关心的,所以就不用比较了吧。

5、矩阵运算没用过,想的是 R 肯定不如 Matlab,但 SAS,有机会看看 ^_^

6、从数据分析角度看,R 对数据库支持很好。如果要比较什么 Enterprise,那就是另外一个题目了。

R 支持并行计算,我似乎看过一篇关于 rpvm 包的应用。


知识储备有限,多多板砖^_^
老谢,我们要打口水仗啦,下次见面请你吃饭。一下各列,与4楼一一对应:

1、

不公布源码,是普遍的商业行为,跟生计有关。模型由统计学家发明,实现方法却各有不同,封装起来,商业软件才好卖钱,厂商才有动力继续提供高质量的产品和支持服务。开源运动自有其乐趣,厂商也有自己的考虑,我们幸运地处在这个多元的时代。
Excel无意做统计,但现实是很多人都在拿它做,例如我们学院的好几位老师都以“本书例子可以用Excel计算”为推销的卖点(如贾老师力压群雄的《统计学》一书,几乎全都是Excel实现)。
Excel无意做统计,所以不能指摘它太多。有很多人喜欢用它做统计,却也无妨,个人偏好而已。

请“广大R使用者应该谦虚些”,不是批评这里的文风aggressive(我喜欢这样有生气的风格),我是说,在评判软件质量时,开源软件有一批忠实的用户找bug,商业软件也有专业的工程师做相应的测试,他们的软件是要卖钱的,客户买来是要用做商业决策的,利益攸关,不敢马虎。这里我不说商业软件比开源软件可靠,但至少一样严肃。普通用户只能像你说的,“只能根据输出结果去判断程序是否可靠“,但你说”这种测试方法是非常低效的”却有不妥,——这话没错,但普通用户没有必要评判像SAS、SPSS这样的商业软件的可靠性,很多严肃的研发人员已经做过了,这些软件也在很多企业用过数十年了。

当然,对统计专业的学生,可能需要了解更多。但我想,大多统计专业的学生,也没有能力评判一个软件的可靠性。我们用R,因为很多高水平的人在用,我们相信他们,我们也用。同样,我们用SAS,因为很多高水平的人在用,我们相信他们,我们也用。我想,社区的这些信任还是没问题的。

我注意这个前提,老谢,这篇文字是写给“统计学专业“的师弟师妹,我说这么多,只是觉得里面可能传达了一些有争议的东西。对统计学专业的需求,我的确不能说太多,先打住。

2、comes with ABSOLUTELY NO WARRANTY,这个话商业软件提供商不能随便说吧?还怎么卖钱?这个更像是开源软件read me里面的话。

3、商业世界里,没人敢装那么多模块,都是要花钱的。SAS/STAT要跑,需要SAS Base和SAS/Graph两个模块,加起来几百兆吧。

4、略。

5、跟Matlab类似,SAS/IML也是号称电子数学稿纸的矩阵语言。比如,回归系数可以这么写:
b=inv(x`*x)*x`*y;

样本距, 有个内在的循环,R写着是漂亮,这个我再看看。
俺刚看完大家的讨论,不过现在要出门一趟,来不及吼两嗓子了,回头我应该请你吃饭才是啊,先谢谢你们的讨论 :)
虽然都不会用。商业软件更适合商用吧。毕竟公司更喜欢和公司打交道。free的东西好处只限于懂行的人人之间的私下交流传播。外行喜欢解决方案之类的玩意。如果在公司中推荐free软件无形中就要负起额外的责任,给自己揽了维护,教育用户之类的许多的麻烦。职业动物考虑问题的立场和学校里的动物不太一样。
To 7楼老刘,

1、测试这个话题,是提到商业软件和开源软件的可靠性,我说像SAS之类的商业软件,有专业的测试。我相信Core R也是稳健的,但这种开源软件的测试(读代码也是一种测试),人力、物力之类的投入,一定有限。所以老谢质疑商业软件的可靠性,我大大的有意见。

2、SAS凭借其行业解决方案,07年的收入在20亿美刀,它的客户是跟我们一样聪明的金融机构、政府、零售企业等等,用”忽悠“这个词我想是在开玩笑吧?

SAS所有的解决方案,基础都是其核心模块Base SAS和SAS/STAT等,分析模型当然非常重要。这种分析型的商务智能解决方案,是SAS跟其他报表做得超炫的BI厂商如BO等的最大区别。

又,什么是”纯粹的数据分析工具“?为什么免费的就”更倾向于一种纯粹的数据分析工具“?

3、SAS是软件企业,研发人员比你想象的多。跟SAS销售聊天,大概接触的是SAS China的吧?SAS在中国的研发人员,是其销售的两倍。

4、关于作图,”实际意义,是不是能够反映数据本质“,呵呵,老谢老说两句。
额滴神呀,这一个个回复如此之长,以至于一边写要一边拉上去再看看原文 :roll:

先To 10楼:免费软件可以节省一(大)笔成本,商业软件同样也是要花钱培训才能使用。另外,免费软件也容易扩展为所谓的解决方案。

再To 8楼:

1、理解卖钱,理解测试。不过还有一点不太理解,商业软件一方面讲要卖服务和解决方案(如10楼所说),一方面又封闭源代码,看样子源代码也是卖的重点啊,若有底气卖统计或数据分析服务,源代码的重要性应该很低才对啊。算了,这个问题不谈了,我也没卖过软件,不知其中奥妙。

你说的信任我赞同,开源软件同样需要信任,虽然我对统计软件有怀疑倾向,但我也没能力亲自查看所有的源代码。只是在看不见源代码的情况下心里总是隐隐作怪。

2、开源软件一般都会强调这句话,但它们的质量其实是很高的。商业软件当然不能讲这话,而且应该反过来讲,不过不知道是否能说comes with ABSOLUTELY WARRANTY(应该是不行,世上没哪种软件敢号称绝对保障,连TeX都能被人找出一两个Bug)。

3、略。

4、略。

5、谢谢。

关于11楼对7楼老刘的意见:

1、R面向全人类(猩猩要是会读代码那连猩猩也可以算进来)开放,测试集比较大,具体有多少人去报告Bug我没有细看,只记得本小子有一次自个儿在那儿瞎得瑟给R-Bugs发了一封报告,结果被某Core讽刺了一番,说那不叫Bug,心中那个拔凉拔凉的……如果说“群众的眼睛是雪亮的”的话,那么R的Bug测试基本还是挺靠谱的。

2、唉,统计分析的客户……俺觉得貌似有相当一部分都不是太聪明(统计意义上的聪明),俺真的遇见过某基金公司买了SAS来导Excel数据的……

关于R倾向于数据分析,我想来源于S的设计思想,当时流行的统计软件都喜欢一口气输出一大堆报表,贝尔实验室那帮S的作者们觉得太浪费,结合John Tukey大人的“探索性数据分析”思想,S的作者们就以(交互式)数据分析为目的设计了S语言,后来R看重数据分析、计算和图形,和S的初衷是一脉相承的。

关于解决方案,由于R可以灵活定制,我想根据客户需求应该是不难实现他们想要的方案的。我用R给一些“客户”做过类似的事情(统计局、海关等)。

3、不清楚。

4、要我说的话,我只知道SPSS有个图形届的大牛在,但是SPSS的图形一向是丑得惊人,不知道怎么回事;SAS图形我只记得那种ASCII形式的图形了(还顽强活到了今天)。作图本来的目的确实不在于好不好看,而在于表达数据信息(或“本质”)。R的好处在于统计计算和图形能很方便地结合起来,这样可以跳出固定图形模块本身的限制,灵活定制图形,例如前面刚刚写过的用局部加权回归散点平滑法观察二维变量之间的关系,计算与图示浑然一体,想加线就加线,想加点就加点,图形元素的属性可以灵活表达数据信息(例如线条颜色深浅表示LOWESS取数据的区域宽度)。

我对SAS Graph不熟,不知道扩展性如何。R把图形函数分为低层函数和高层函数,前者用来往现有图形上添加元素,后者生成新的图形,二者往往结合使用,非常方便。
神啊!刚从学校出来3年就变老刘了,赶明儿赶紧去买瓶大宝,要对自己好一点 -_-
喜欢用R白话点说,有几点原因:
1、SPSS、SAS太贵,买不起
2、用 R 的过程中,确实明白了统计是个什么东西。这是学SPSS时没感觉的。
3、至少我的范围内,商业软件有的功能它都有
4、作图忒漂亮,也方便(流程图我都用它了)
5、其他欢迎补充
这个2有感觉,R学不会的原因相当大一部分在于统计没搞明白,R把赤裸裸的统计原理以函数参数的形式摆在了眼前,用的人就很郁闷,NND这权重weights是啥意思,这计算方法qr是啥意思,这对照组设定contrasts是啥意思,顿时觉得自己啥都不懂……心想还是SPSS好,啥都不懂的时候仍然可以开心地点OK按钮 :mrgreen:
24 天 后
搬个凳子来慢慢看....
24 天 后
我个人的感觉是:
如果你要找好工作,那应该学好SAS;
如果你要读统计PHD,那应该用好R;
有了R+SAS+EXCEL打遍天下都可以
所以对于本科生来说,要看今后的方向如何来决定学什么统计语言。
用R的话,个人感觉就像是进行自我蹂躏,刚开始总是有些痛苦的,到后面就有快感了。
2 个月 后
It is obviously biased when speak to the deficiency of Stata. "占内存空间较大", it may be true when compared to SAS, it is definitely not when compared to R.
[未知用户] 但是我常常遇到内存不够的情况啊,后来干脆把最大内存限制设置为电脑内存,可有时候还会出现计算过程中丢失变量的情况,也就是算着算着数据中某个变量就没了,匪夷所思……