一.前言
SPSS是“社会科学统计软件包”(Statistical Package for the Social Science)的简称,是一种集成化的计算机数据处理应用软件,其菜单式简单易懂的操作方法赢得了大量用户。但经研究发现SPSS在菜单Analyze中给出的分析方法是由许多独立的宏命令组合而成,这意味着我们可以自己组合宏命令实现一些SPSS菜单现在尚没有的功能。本文主要就是讲解如何使用SPSS内置的Sax Basic语言来控制这些宏命令和SPSS内置几大对象来完成一些用户自定义的任务。
SPSS提供的二次开发基础语言是Sax Basic,它首先是面向对象的一种语言。用它可以轻松操纵所有SPSS对象,包括各种对象对应的方法、属性。文章第二部分讲述了SPSS自带的开发环境和脚本调式方法。第三部分列出了SPSS的基本对象,并对这些基本对象和他们的关系逐一解释。
二.开发环境简介
SPSS提供了自己的开发环境,只要我们单击菜单File-New-Script即可打开它的脚本编辑环境。打开后我们发现代码1:
熟悉VB的朋友可能已经知道这是一个过程的声明,所有脚本程序入口都必须是这个Main过程,我们的其他逻辑实现的代码语句和函数调用等都必须包括在这个过程中才会被执行。作为快速入门,我们掌握下程序的执行和排错,单击菜单的Script-Run为执行,排错方法是当执行出错后点击菜单的Debug-Quick Watch即会显示错讯息。
三.SPSS内置几大对象介绍
我们先看下SPSS内置几大对象的树状关系图,如图1
图1
从图中可以看到,Application对象处于最高级别,只要有一个SPSS应用程序实例,即可通过对objSpssApp对象(它会自动寻找已存在的SPSS应用程序实例,并通过将自己设置为已存在的SPSS应用程序实例的引用)的调用来引用该实例下面的子类。例如我们想操作当前打开的数据窗口的内容,可通过objSpssApp.Documents.GetDataDoc (0)来引用当前数据窗口。同理,引用其他对像诸如语法执行窗口(Syntax Document)、结果输出窗口(Output Document)等。
现在就依上面显示的树状图依次介绍几个主要对象。
Application:这是整个SPSS应用程序的骨架,所有其他对象的调用都通过它实现。获得该对象的引用只要在脚本编辑窗口输ObjSpssApp即可。除可以获得图一树状结构Application一级子对象外,它还具有控制SPSS执行的方法和属性。我们举一个比较实用的例子说明,有时我们在进行多阶段分析时需要在后一阶段获得前一阶段的分析结果(例如获取前一阶段的Output对象并获取其中的某些数据),如果我们直接将两个阶段代码写在一起,可能会使后一阶段在前一阶段还未执行完前直接引用前一阶段分析结果的对象而出错,这时在两个阶段间插入代码2即可。
Documents:这是仅次于Application的重要对象,它承载着数据文档(Data Document)、语法文档(Syntax Document)、输出文档(Output Document)三大基本对象的引用方法,是objSpssApp引用三大基本对象的桥梁。下面我们通过实例的方式说明如何调用这些对象。
Data Document:就是我们通常所说的数据编辑窗体,我们举一个例子说明如何操作它。代码3说明如何将数据窗体里的指定变量删除。
从代码可以看出获得数据编辑窗体的关键方法是调用Documents对象的GetDataDoc方法。获得具体实例后就可以调用Data Document对象各种方法和属性了。
Syntax Document:就是我们通常所说的命令编辑窗口,我们举一个例子说明它和Sax Basic的交互。代码4说明如何用Sax Basic执行一个频数分析。
从代码可以看出命令编辑窗口所能执行的主要任务在于指定具体的命令语句和执行它,也就是它的Text属性和Run方法。
Output Document:就是我们通常所说的结果输出窗体。我们从图1看到它由Pivot Table、Chart、Text、IGraph和Map对象组成。其中转轴表(Pivot Table)对象是关键,它是表示各种输出数据结果的主要载体。它虽然表面看是个二维表格但激活后操作发现它有多维数据表现能力,而且操作方便,颇有数据围着转轴转的感觉,故得名。其他对象则从不同方面表现分析结果。Text 是文本而Chart、IGraph和Map则是图像格式,但这些输出结果实质上都是以文本格式给出,所以要用Sax Basic查找自己需要的内容起码要两个条件:一个是对象的标签名,这个标签显示在Output窗口左栏;另一个就是对象类型,SPSS用整型的方法表示它不同的输出类型,具体可参见SPSS帮助。而我们对结果输出窗体的操作主要也就集中在查找需要的输出结果和将自己的分析结果输出到其中。下面我们仍然以举例子的方式说明操作它的方法。代码5说明如何获取频数分析(分析时所用变量名为“x”)输出结果中某个转轴表的单元格数据。
四.结语
以上是对SPSS二次开发的一个简单导引,随着统计学在国内的应用领域不断深化,国内广大统计工作者对设计自己的分析方法的需求越来越迫切。笔者也就是应这样的需求发表一些看法,希望能起到抛砖引玉的作用,为广大统计工作者打开SPSS二次开发的大门。