SAS 6.12 Vs SPSS 10.0速度大比拼

医学统计之星:张文彤)

特别声明:为推动统计软件知识的普及,本文(SAS 6.12 Vs SPSS 10.0速度大比拼)将允许广大网友自由转载、传播,但不得用于商业用途(广告banner除外),并不得删除署名(含链接)及本声明。

1. 测试环境

2. 测试结果

2.1 程序启动速度

2.2 数据读入速度

2.3 数据管理速度

2.4 统计分析速度

3. 结论

SAS和SPSS是现在国内使用的最为广泛的两种统计软件,大家都知道,SAS的统计功能强,但学习困难,使用起来也较麻烦;而SPSS虽然使用方便,输出结果美观漂亮,但统计分析功能有限,且速度较慢。但究竟他们之间速度的差异达到怎样的一个程度,大家心里并没有数,为此,这里我们特意将这两种软件的统计分析速度加以比较,以方便朋友们以后在这两种统计软件间加以选择。

1. 测试环境

1.1 统计软件版本

虽然现在SAS的最新版本号为8.0,但由于大家广泛使用的软件版本分别为SAS 6.12版和SPSS 10.0版,我们将以这两个版本做为比较对象。

1.2 软硬件平台

为了比较在各种软硬件情况下两种软件的速度,我们特意准备了以下三个测试平台。

测试环境硬件平台软件平台
APIII 667, 128M RAM, ST20G HD(ATA66)PWIN2000 Professional, Office 2000 SR1
BPII 350, 64M RAM, QT 10G HD(UDMA33)PWIN98SE, Office 97
CP133, 16M RAM, QT 1.2G HDPWIN95, Office 97

平台A代表了现在软、硬件环境所能达到的最好配置,SAS和SPSS在这种环境下应该能发挥自己的最大潜力;平台B则代表了现在大多数人所拥有的主流配置,这里的比较结果应当是最为引人注目的;平台C则是较差配置机器的代表,在该环境下我们将看到两种软件对低配置平台的适应力如何。

1.3 测试用数据

所用的数据库为TEST.DBF,为dBase III格式,共有16个字段,分别为数值型、字符型和日期型;11万7千条记录;文件大小为8M。

2. 测试结果

2.1 程序启动速度

由于WINDOWS系统会对曾装入内存的软件进行跟踪,导致软件第二次启动速度远远大于第一次,因此我们对两种软件分别连续启动4次,同时所有测试共重复5次,取5次结果的中位数,结果如下(表中的四个数值分别是第1、2、3、4次启动所需的时间,单位:秒,下同):

测试环境SASSPSS
A4 0.5 0.5 0.59 2 2 2
B10 1 1 115 3 2 2
C23 16 15 1666 66 67 66

可见SAS的启动速度一般在SPSS的两倍以上,并且配置越低,这种优势越明显,配置C中为3倍左右;同时可以看到,配置的好坏对启动速度的影响非常大。在配置C中由于没有足够的内存进行优化,SPSS的启动速度4次均基本相同,而SAS的情况则要好一些。

2.2 数据读入速度

下面我们将读入测试用数据库test.dbf,以检验两种软件数据引擎的优化程度,每次测试仍然进行5次,取中位数,结果如下:

测试环境SASSPSS
A511
B1835
C60180

注:SAS读入数据时采用的是IMPORT WIZARD。

和启动速度的比较结果相类似,SAS的速度仍然在SPSS的两倍以上,并且也是配置越差,SAS的优势越明显,在配置C中,SPSS的读入速度达到了让人着急的程度,可以非常清楚的看到SPSS在以4000条记录/次左右的速度读入数据,而读入所有11万条记录则用了整整3分钟!

我们发现SPSS的读入速度和他一次性能读入的数据量有直接的关系,而一次性读入的数据量是和内存大小有关的,如配置A中的读入速度为120000条记录/次,在配置B中,SPSS的数据读入速度已明显较慢,大约是以3400条记录/次的,配置C中则约为可怜的1300条记录/次,显然,在低配置机器中,小内存是制约SPSS速度的主要原因。

2.3 数据管理速度

数据管理(包括计算新变量,排序等等)一向是SAS的强项,恰恰又是SPSS的弱项,我们对插入等于某常数的新变量,按条件替换变量值,排序、存盘这四项功能进行了比较,结果如下:

测试环境插入新变量替换变量值排序存盘
SASSPSSSASSPSSSASSPSSSASSPSS
A5.7435.574.513.68106.25
B10.382010.922521.8498.1365
C29.441:3032.071:301:11.573:3031.254:05

测试环境A下的比较结果让我们大为吃惊!SPSS的处理速度居然比SAS还要快!!并且每一项都是如此!!!一开始我以为是记录有误,可重复实验还是如此,难道BASIC引擎比C引擎还要快?!后来我们分析原因如下:SPSS对当前数据是尽量全部读入内存,因此处理时有相当一部分是在内存中进行,而SAS是将数据全部作为文件保存在硬盘上,每次处理时均要从硬盘中再次读出,处理完毕后再存入硬盘。并且SAS的数据引擎优化在相当程度上也是要和硬盘交互数据的,硬盘速度当然没有内存速度快了,所以当内存非常大的时候,用SPSS做数据的管理会更快。

再看测试环境B和C,这下SPSS就原形毕露了,插入新变量和替换变量值用时是SAS的两倍,排序用时将近3倍,最惨不忍睹的是存盘,慢的一塌糊涂!直观的看,问题仍然出在内存大小上,SPSS在环境B中存盘速度是2300条记录/次,在环境C中则低到了500条记录/次!至于排序,在A、B、C三种测试环境中都可以非常明显的看到SPSS数据引擎先是将全部数据读入,然后在排序时排到若干条记录后又会突然重新从头开始,显然,深层次的原因是SPSS数据引擎自身优化的不完善。这一结果充分表明SPSS不适宜在中、低档配置的机器上进行较大规模的数据整理。

2.4 统计分析速度

这是我们比较的重点,将对几个常用的统计分析功能逐个比较,他们分别是:

由于测试环境A和B相当优越,两种软件计算所需时间均在3秒以内,为避免误差,这里的时间均采用软件自身的LOG中所记录的时间长度。下面分述如下(括号内为第二次计算时所用的时间,下同):

2.4.1 连续/离散变量的描述

测试环境连续变量的描述离散变量的描述
SASSPSSSASSPSS
A0.57(0.26)1.29(1.34)1.48(0.65)2.27(2.34)
B5.33(1.04)3.51(3.46)1.64(1.2)7.36(7.47)
C13.9(12.8)30.05(27.41)14.93(13.11)34.06(34.71)

时间的变化规律和前面相似,但SAS和SPSS对运行过的程序的优化能力不太相同,在配置A、B中,当相同统计过程第二次运行时,SAS用时减少的非常明显,将近一半左右,因此,在需要进行大量简单而重复的统计分析时,SAS是一个不错的选择。但在配置C中,SAS也无法得到充分的内存进行优化了,两次运行的速度相差不多。

2.4.2 t/u检验与卡方检验

测试环境t/u检验卡方检验
SASSPSSSASSPSS
A0.83(0.25)2.23(2.25)

1.49(0.88)

1.39(1.25)

B 1.42(0.7)4.67(4.67)1.1(1.1)3.68(3.68)
C13.9(12.35)41.96(39.82)14.89(12.70)42.12(32.41)

这里的情况和前面相似,不再赘述。从以上的几个结果来看,当在配置非常好的情况下做简单的统计分析时,尽管SPSS的速度还和SAS有差距,但并不会影响使用的感觉,几秒而已。

2.4.3 方差分析

测试环境方差分析方差分析(含SNK法两两比较)
SASSPSSSASSPSS
A5.59(5.02)33.64(27.28)6.06(5.20)36.89(36.18)
B8.07(7.3)47.02(46.63)8.17(7.86)49.27(49.21)
C47.28(44.54)7:42.52(7:43.35)51.25(47.35)7:45.42(7:42.51)

注:SAS方差分析采用的是GLM过程。

我们这里使用的是一个非常复杂的多元方差分析模型,这次SAS又以绝对的优势胜出,在最好配置A下用时只有SPSS的1/6,而在最差配置C中用时更只有SPSS的1/10!这简直是压倒性的胜利嘛!显然,这里SAS的计算引擎终于显示出了他的强大实力。

可以看到,在配置C中,SPSS的速度已经到了不实用的程度,因此,在低配置的机器中进行复杂的统计分析时,SPSS是没有立足之地的。

另外还有两个发现,首先相同的程序第一、第二次运行的用时相差无几,说明此时无法进行二次程序的优化;其次加入两两比较对时间的影响非常小,这可能是因为两两比较可以直接利用前面方差分析计算出的中间结果的原因。

2.4.4 多变量回归分析

测试环境回归分析(进入法)回归分析(逐步法)
SASSPSSSASSPSS
A1.15(0.99)1.60(1.66)1.08(1.07)1.63(1.78)
B1.75(1.26)4.29(4.12)1.37(1.2)4.28(4.44)
C14.72(15.1)39.73(39.06)15.92(13.61)40.65(38.72)

回归分析的结果和前面相似,配置C的计算速度远远低于A和B,同时进入法和逐步法用时相差不大。

3. 结论

综合前面的各项测试结果,我们得出了一个综合的结论如下:SAS的数据管理引擎和计算引擎优化的较好,并且主要通过硬盘交互数据,无论各种档次的机器配置都可以得到较好的发挥;而SPSS的数据管理引擎对内存的需求量非常大,如不能满足要求时速度会大大下降,计算引擎并没有针对复杂统计运算进行非常好的优化,速度一般,不推荐用来承担太复杂的统计分析。

因此,我们对大家选择统计软件时提出以下几点建议 (仅从速度出发):

 

2000年9月25日

 

>