第三章:程序编辑窗口用法详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章:程序编辑窗口用法详解
3.0.1 程序编辑窗口界面
3.0.2 邂逅Paste按钮
3.0.3 用程序编辑窗口加快我们的工作
3.0.4 用程序编辑窗口完成对话框无法完成的工作
如果对话框无法满足你的统计分析要求(别瞪眼,下面你就会看到了),就请你在本章学习一下如何写SPSS程序吧。
什么?SPSS还有程序?!是的,如果大家以前用过SPSS/PC+ 4.0,就一定不会对SPSS的程序感到陌生:在那个非常遥远的DOS时代(大约15年前),学习SPSS程序的语法,掌握如何编写SPSS程序是熟练使用SPSS的必要条件(但还不充分)。
随着Windows旋风的登陆,软件的易操作性被推进到了前所未有的高度,而SPSS显然是统计软件中做的最成功的一个。
它的操作界面是如此的成功,让使用者可以完全无须了解SPSS的语法而使用其80%的功能,使得SPSS程序被人逐渐忘记。
其实,适当的使用SPSS程序可以大大提高我们的工作效率,并且SPSS在设计时也充分注意到了编程功能和使用界面的结合--还记得Paste按钮吗?下面我们就结合几个实例来学习如何使用程序编辑窗口。
请注意:我们不准备教大家那些枯燥的SPSS语法,现在写SPSS程序就象
在WORD中记录宏一样简单,所需要做的只是略加修改而已。
3.0.1 程序编辑窗口界面
选择菜单File==>new==>syntax,系统会开启一个新的程序编辑窗口如下:
Syntax从字面上应该翻译为句法、语法的意思,这里从实际用途出发,翻译为程序。
和以前见过的数据管理窗口相比,这个窗口简单的不能再简单了。
菜单项中的File、Edit、View、Analyze、Graphs等菜单都是通用的,唯一特殊的是Run 菜单,该窗口的特殊功能均在这里实现。
3.0.2 邂逅Paste按钮
Paste按钮在几乎所有SPSS对话框中均存在,它是专门为编程准备的。
以第一章的那个t检验为例,如果最终选择完毕后不单击OK而是单击Paste,则程序编辑窗中会自动生成以下语句:
T-TEST
GROUPS=group(1 2)
/MISSING=ANALYSIS
/VARIABLES=x
/CRITERIA=CIN(.95) .
这就是你刚才想做的工作,如果运行它,就可以得到t检验的结果!怎么运行?选择菜单Run==>all,看到了吗?
Paste按钮如何能生成程序?在SPSS中,操作界面实际上起的就是“操作界
面”的作用。
当你用对话框选定某项操作,单击OK后,SPSS就将你的选择翻译成程序语句,然后提交系统执行。
如果你单击Paste按钮,SPSS就不将生成的
程序语句提交执行,而是传送到程序编辑窗中供你折腾。
说的再广一些,不光SPSS,SAS等其他统计软件也是这么做的。
从上面的语句可以看到SPSS程序的基本结构:一条语句可占多行,最前面为语句主体,具体的选项用斜杠和语句主体相连,最后用小数点结束语句。
3.0.3 用程序编辑窗口加快我们的工作
如果程序编辑窗口只能带来“暂停”功能的话,我们也就不用再往下讲了。
幸好,它的作用还远不止与此。
当需要成批次的处理数据时,当你需要重复进行相同的统计分析时,当你要做许多统计分析,每一步均费时较长而你又不想等时...,使用Paste按钮是你的救命稻草。
仍以第一章为例,如果从预分析一开始就连续使用Paste按钮,则到分析结束我们会得到如下程序:
DESCRIPTIVES
VARIABLES=x
/STATISTICS=MEAN STDDEV MIN MAX .
SORT CASES BY group .
SPLIT FILE
SEPARATE BY group .
DESCRIPTIVES
VARIABLES=x
/STATISTICS=MEAN STDDEV MIN MAX .
GRAPH
/HISTOGRAM=x .
T-TEST
GROUPS=group(1 2)
/MISSING=ANALYSIS
/VARIABLES=x
/CRITERIA=CIN(.95) .
现在你可以再次启用Run菜单来一次完成所需的统计分析。
特别的,如果你的数据还会不断添加(试验尚未结束),就可以把该程序存为程序文件(*.sps),下次读入新数据后再运行一次就可以直接得到新的结果。
Run菜单几个选项的含义分别为:
∙ALL 运行全部程序。
∙SELECTION 运行所选择的程序语句。
∙CURRENT 运行当前光标所在行的语句。
∙TO END 从当前语句起一直运行到程序结束。
3.0.4 用程序编辑窗口完成对话框无法完成的工作
如果程序编辑窗口的本事只限于上面介绍的这一点,那么在Windows时代,我们就不用来专门讲编程这一章了。
还记得吗?上面我提到用SPSS的图形界面可以完成80%的工作,可有时候你偏偏需要用另外那20%的功能,请看下面的例子:
例3.1 请打开SPSS提供的cars.sav数据,假设每条记录代表一辆车,现在将按下列条件挑选一些车出来:Year<=76、Cylinder<=4、Weight>=3000,并且要看看每辆车符合了以上三条要求中的几条。
解:没有什么难的,从第二章的知识我们了解到Count对话框就是做这类事情的,好,在Count对话框进行操作如下:
1.Target variable框:键入G1(新变量名)
2.Numeric variable框:选入Y ear
3.单击Define values钮:
4.Range lowest through:键入76:单击ADD钮
5.单击Continue钮
6.Numeric variable框:选入cylinder
7.单击Define values钮:
8.Range lowest through:键入4:单击ADD钮
9.单击Continue钮
10.Numeric variable框:选入Weight
11.单击Define values钮
12.Range through higest:键入3000:单击ADD钮
13.单击Continue钮
14.单击OK
好了,做完了--不过好象不大对劲呀!怎么前面做的条件选择在后面定义的时候仍然出现?再看看结果,更不对了!看来有问题。
毛病出在哪里呢?请再次开启Count对话框,选择好的条件仍然在里面,单击Paste钮,可以看到这些选择产生的SPSS语句如下:
COUNT
G1 = year cylinder weight (Lowest thru 76) year cylinder weight (Lowest thru 4) year cylinder weight (3000 thru Highest) .
EXECUTE .
仔细看看,这个语句不对呀!明明Lowest thru 76应该是对变量Year的限制,怎么year、cylinder、weight 这三个变量都在它前面?再看另两个条件,一样“大家有份”,这还了得,改!将语句改为正确的格式如下:
COUNT
G1 = year (Lowest thru 76) cylinder (Lowest thru 4) weight (3000 thru Highest) .
EXECUTE .
再次运行该语句,可以看到各个记录G1分别被取值为0~3,代表这些记录满足了0~3条要求,最终满足全部三条要求的应为3条记录。
3.0.5 结构化语句简介
有了Paste按钮,变成的工作就轻松多了,如果只是从上往下的顺序执行语句,有它也就够了。
但许多时候所编制的程序还需要进行判断、循环等操作,每一种结构化语言编写的程序都由顺序、分支、循环三种结构组成,SPSS程序也不例外。
那么,下面我们来介绍一下分支和循环语句的语法。
1、分支(条件)语句
【IF语句】
分支语句就是大家非常熟悉的判断语句,SPSS中最常见的判断语句是IF语句,它的格式如下:
IF 逻辑表达式目标表达式
逻辑表达式用于给出逻辑判断条件,而目标表达式则是当逻辑条件被满足时需要进行的操作。
最常见的情况是给一个变量赋值,如compute语句。
比如下面的语句:IF (AGE>20 AND SEX=1) GROUP=2 其含义是当AGE>20并且SEX=1时,变量GROUP被赋值为2。
下面我们来看一个实际运行的例子:
COMPUTE ageclass=1. 给变量ageclass一律赋值为1。
IF (age>50) ageclass=2. 当age>50时,ageclass赋值为2。
Execute. 开始执行以上程序。
注意:最后的execute语句不能省略,否则程序被存在缓冲区里,没有真正执行。
【DO IF 语句】
IF 语句适合于比较简单的情况,如果需要多充分支,或者联合判断条件,则可以直接使用RECODE语句(过程),或者这里要介绍的DO IF / END IF语句,其格式如下:
DO IF 逻辑表达式
目标表达式
ELSE
目标表达式
END IF
DO IF / END IF 语句的作用主要是生成多重分之的判断结构,如下面的例子:DO IF ( age<20).
COMPUTE ageclass=1.
ELSE IF (age<30).
COMPUTE ageclass=2.
ELSE IF (age<40).
COMPUTE ageclass=3.
ELSE IF (age<50).
COMPUTE ageclass=4.
END IF.
EXECUTE.
【循环语句】
在SPSS中提供了好几个循环语句,由DO REPEAT/END REPEAT,LOOP/END LOOP 等,这里我们只介绍后者,LOOP/END LOOP语句的语法格式如下:
LOOP 控制变量名= 起始值 TO 终止值 [BY 步长]
运算语句
END LOOP
该语句主要用于建立数据集和数据变换操作,比如下面的语句:
SET MXLOOPS=10. 设置最大允许循环次数为10
LOOP. 开始无限循环,指达到最大次数
COMPUTE X=X+1. 将变量X累加1
END LOOP. 结束循环
EXECUTE.
该程序会将数据文件中的X都重复加1,即加10。
但如果文件中没有变量X,则执行后X为缺失值。
在看下面的程序:
LOOP #lop=1 TO 5.开始循环,要求循环5次
COMPUTE X=X+1. 将变量X累加1
END LOOP. 结束循环
EXECUTE. 开始执行以上程序
该程序会将数据文件中的X都重复加5次1,其中变量lop前带有#号,标明为控制变量,不写入数据集,否则将会在数据集中建立一个新变量lop,其大小等于循环结束后lp取值6。
一个复杂的程序示例:
这里我们给出一个比较复杂的数据集生成程序,里面运用了许多前面学习过的指示,同时还用到了建立数据文件所需的一些语句,希望大家通过这个示例能对SPSS程序有一个更深入地了解。
SET SEED 5502090. 将为随机种子设为5502090
INPUT PROGRAM. 开始数据录入程序段
LOOP #LOP=1 TO 50. 一共循环50次,变量LOP不写入文件 COMPUTE A=NORMAL(1). 新变量A服从标准正态分布
END CASE. 结束一条记录的定义
END LOOP. 结束循环
END FILE. 结束数据文件
END INPUT PROGRAM. 结束数据录入程序
EXECUTE. 开始执行以上程序
DO IF (A>=0).
COMPUTE B=A. 如果A〉=0,则新变量B=A ELSE.
COMPUTE B=A*2. 否则,B=A*2
END IF.
EXECUTE. 开始执行以上程序
LIST. 在结构窗口中输出数据变量表
在程序运行完毕以后,就会生成一个有50条记录的新数据集,其中变量A 服从均数为0,标准差为1的正态分布,而变量B的取值在变量A大于等于0时和A相等,否则等于A的两倍。
同时在结果窗口中会将所有记录打印输出。
由于我们采用的是为随机函数,以上程序重复时得到的结果都是相同的。