SPSS的syntax语法实例一
- 格式:doc
- 大小:36.50 KB
- 文档页数:4
第三章:程序编辑窗口用法详解(医学统计之星:张文彤)上次更新日期:3.0.1 程序编辑窗口界面3.0.2 邂逅Paste按钮3.0.3 用程序编辑窗口加快我们的工作3.0.4 用程序编辑窗口完成对话框无法完成的工作3.0.5 再罗嗦几句在某年某月的某一天,你和你的另一半正在街上为地球表面的平整而贡献自己的绵薄之力。
突然(也许是必然),你觉得有些饿了。
这是一个问题,当然,不用说大家也知道解决问题的方法就是--吃。
不过就是吃也有讲究,可以随便找个面馆简单的填饱肚子;要求高的话还可以去几星级的地方享受一下;当然还有的人觉得自己回去做口味也合适,花费也不多;更有些超级美食家,星级水准也不满意,需要亲自给一级厨师露一手,指点他们一下,才会吃的满意。
好,使用SPSS进行统计分析的方式就象上面填饱肚子的方法一样有几种选择,如果你烹饪工夫还欠火候,或者习惯了享受星级服务,那么直接使用SPSS为你提供的对话框进行操作就是了;而如果你习惯了DIY,甚或对话框也无法满足你的统计分析要求(别瞪眼,下面你就会看到了),就请你在本章学习一下如何写SPSS程序吧。
什么?SPSS还有程序?!是的,如果大家以前用过SPSS/PC+ 4.0,就一定不会对SPSS的程序感到陌生:在那个非常遥远的DOS时代(大约15年前),学习SPSS程序的语法,掌握如何编写SPSS程序是熟练使用SPSS的必要条件(但还不充分)。
随着Windows旋风的登陆,软件的易操作性被推进到了前所未有的高度,而SPSS显然是统计软件中做的最成功的一个。
他的操作界面是如此的成功,让使用者可以完全无须了解SPSS的语法而使用其99%的功能,使得SPSS程序被人逐渐忘记。
其实,适当的使用SPSS程序可以大大提高我们的工作效率,并且SPSS在设计时也充分注意到了编程功能和使用界面的结合--还记得Paste按钮吗?下面我们就结合几个实例来学习如何使用程序编辑窗口。
请注意:我们不准备教大家那些枯燥的SPSS语法,现在写SPSS程序就象在WORD中记录宏一样简单,所需要做的只是略加修改而已。
* SPSS的syntax语法实例一* 编写者彭昆靖(大部分内容使用了SPSS帮助文档)* 对于每一个做数据分析的人来说,数据整理是得到分析结果的基础,但是每个人都知道数据的整理是最枯燥和耗费时间的。
特别是对于要做月报表甚至日报表的人来说,从服务器下载数据后的整理只是机械的重复,虽然可以用excel的编程和批处理来进行处理,但是如果能在SPSS中进行数据的处理是更好的选择,并且不用重新学习VB或者VC。
Spss的也可以利用程序对数据进行处理,并且对使用者的编程能力要求更低,因为大部分的操作都可以直接得到程序代码,不用使用者自己编写。
因此本文只选择了几个不能直接得到的语法进行说明。
本文主要是以实例说明SPSS中语法的使用方法,使用我以前的一个工作结果来进行演示,看完之后,你会发现SPSS的数据处理编写真的是非常容易的事情。
本文中,左半部分是程序内容,右半部分斜体是我写的解释内容,由于不是专业书籍,只是简单的说明如何使用,因此不能像SPSS的Syntex英文说明书一样详尽。
有更多需要的同学,请查阅SPSS的syntex说明书。
在syntex文档中,每句程序是以大写的标准命令起头,以英文的句号.结尾。
而在命令行的前面加上*,表示此句为注释性语句,不会参与命令自行。
SET Printback命令语句输出开关SET Printback=Off. off表示以后的执行语句不会出现在结果窗口中。
SET Printback=On. On表示以后的语句会出现在结果窗口中GET DATA 读入数据文档。
GET DATA 读入数据,下面以/开头的语句是本命 /TYPE=TXT 令的的参数。
/FILE="D:\CARD.csv" 意思是读入D盘根目录下的 CARD.csv文档/DELCASE=LINE/DELIMITERS=","/ARRANGEMENT=DELIMITED/FIRSTCASE=2/IMPORTCASE=ALL/VARIABLES=卡片 A20 卡片字段采用字符型,有20位长度报告单位 F9.0 单位字段采用数字型,有9位长度,其中小数后有0位出生日期SDATE10 出生日期采用日期型,采用顺序号为10的格式。
在SPSS里实现被试间设计简单效应分析的方法作者: Highway 发布时间: 2008-7-7简单效应(simple effect)分析通常是在作方差分析时存在交互效应的情况下的进一步分析。
需要在SPSS中编写syntax实现。
比如:MANO y BY x1(1 2) x2(1 3)/DESI/DESI=x1 WITHIN x2(1)x1 WITHIN x2(2)x1 WITHIN x2(3)上述只是一个简单的完全随机设计,若x1与x2存在交互作用而进行的进一步分析(即简单效应分析)。
同时你可以再加一个design:/DESI=x2 WITHIN x1(1)x2 WITHIN x1(2).===========说明=============因变量为Y,自变量1为X1,(两水平),自变量2为X2(三水平),DESI即是DESIGN,表示实验设计效应类型计算,/DESI=X1 WITHIN X2(1)表示在自变量X2水平1层面上考察X1的两个水平之间是否存在显著性差异.余类推.下面那句/DESI=X2 WITHIN X1(1)表示在自变量X1水平1的层面上考察自变量X2的三个水平之间是否存在显著性差异.被试内、被试间、混合实验设计简单效应分析作者: Highway 发布时间: 2008-7-7简单效应(simple effect)分析简单效应(simple effect)分析通常是在作方差分析时存在交互效应的情况下的进一步分析。
你需要在SPSS中编写syntax实现。
一、完全随机因素实验中简单效应得分析程序假如一个两因素随机实验中,A因素有两个水平、B因素有三个水平,因变量是Y,检验B因素在A因素的两个水平上的简单效应分析。
TWO-FACTOR RANDOMIZED EXPERIMENTSIMPLE EFFECTS.DA TA LIST FREE /A B Y.BEGIN DATA1 3 41 1 21 1 32 2 52 1 61 2 82 1 91 2 82 3 102 3 112 3 92 3 8END DATA.MANOV A y BY A(1,2) B(1,3)/DESIGN/DESIGN=A WITHIN B(1)A WITHIN B(2)A WITHIN B(3).若A与B存在交互作用而进行的进一步分析(即简单效应分析)。
一个简单的SPSS程序例子
1.在Syntax窗口编辑
注:每行命令以“.”号结束
程序如下:
TITLE ’老龄人社会保障抽样调查’.
*TITLE ’’中的内容是标题名称.
DA TA LIST FREE/age n.
BEGIN DA TA.
45,2
50,3
28,1
30,1
46,3
60,4
24,0
END DA TA.
GRAPH/BAR(GROUPED)=age BY n .
2.保存为“程序1.1.sps”
3. 在Syntax窗口运行源程序。
4.在output窗口阅读结果。
5.存储输出的结果为“输出1.1”
注:存储输出结果为RTF类型的文件时,等同于WORD类型的文件,可被打印在纸上进行分析。
6.存储目标数据文件“程序1.1.sav”
7.退出SPSS系统。
SPSS的操作命令
1)*引导注释行
2)LIST.列出全部的个案
3)程序最后一行命令“Execute.”使SPSS自动执行命令,但可省。
4)采用TITLE命令定义标题名称。
* SPSS的syntax语法实例一* 编写者彭昆靖(大部分内容使用了SPSS帮助文档)* 对于每一个做数据分析的人来说,数据整理是得到分析结果的基础,但是每个人都知道数据的整理是最枯燥和耗费时间的。
特别是对于要做月报表甚至日报表的人来说,从服务器下载数据后的整理只是机械的重复,虽然可以用excel的编程和批处理来进行处理,但是如果能在SPSS中进行数据的处理是更好的选择,并且不用重新学习VB或者VC。
Spss的也可以利用程序对数据进行处理,并且对使用者的编程能力要求更低,因为大部分的操作都可以直接得到程序代码,不用使用者自己编写。
因此本文只选择了几个不能直接得到的语法进行说明。
本文主要是以实例说明SPSS中语法的使用方法,使用我以前的一个工作结果来进行演示,看完之后,你会发现SPSS的数据处理编写真的是非常容易的事情。
本文中,左半部分是程序内容,右半部分斜体是我写的解释内容,由于不是专业书籍,只是简单的说明如何使用,因此不能像SPSS的Syntex英文说明书一样详尽。
有更多需要的同学,请查阅SPSS的syntex说明书。
在syntex文档中,每句程序是以大写的标准命令起头,以英文的句号.结尾。
而在命令行的前面加上*,表示此句为注释性语句,不会参与命令自行。
SET Printback命令语句输出开关SET Printback=Off. off表示以后的执行语句不会出现在结果窗口中。
SET Printback=On. On表示以后的语句会出现在结果窗口中GET DATA 读入数据文档。
GET DATA 读入数据,下面以/开头的语句是本命 /TYPE=TXT 令的的参数。
/FILE="D:\CARD.csv" 意思是读入D盘根目录下的 CARD.csv文档/DELCASE=LINE/DELIMITERS=","/ARRANGEMENT=DELIMITED/FIRSTCASE=2/IMPORTCASE=ALL/VARIABLES=卡片 A20 卡片字段采用字符型,有20位长度报告单位 F9.0 单位字段采用数字型,有9位长度,其中小数后有0位出生日期SDATE10 出生日期采用日期型,采用顺序号为10的格式。
之前有朋友在群里讨论Syntax变换格式的问题,当时给的意见是最基本的Formats+变量名(变量格式)处理方式,以及常用的文本变量向数值变量转换的recode命令,同时提到了alter type命令,这些命令使用情况及SPSS变量的相关特征并没有作详细的叙述说明,此文将对上述情况作一个详细介绍。
变量测量级别介绍变量格式之前,不得不说变量的类型及测量级别。
大家都知道SPSS软件中变量的测量级别,只是不同的书上所讲的名字不同,具体分类不同罢了,下图是SPSS帮助文档中关于变量测量级别和数据类型介绍。
这里需要说明的是多重相应集,多重响应集不是通常意义上真正的“变量”。
多重响应集使用多个变量记录对问题的答复,其中响应者可以给出多个答案。
多重响应集以与分类变量相同的方式对待,可以对分类变量执行的大多数操作也可以对多重响应集执行。
多响应集通常分为多二分类集和多分类别集两种,其中多二分类集指由多个二分变量组成,仅有两个可能值(是/否、存在/不存在、选中/未选中性质)的变量。
尽管变量可能不是严格二分的,但集中的所有变量都以相同方式进行编码,例如,调查为以下问题提供了以下可能的回答:“关于此游戏,您通过以下哪种渠道了解到?回答者可以通过选中每个选择旁的框来进行多项选择。
五个回答成为数据文件中的五个变量,代码0 表示否(未选中),代码1 表示是(选中)。
多类别集指由多个变量组成,所有这些变量都以相同方式进行编码,通常具有许多可能的响应类别。
例如,某个调查项目为“请列举最能描述您的种族血统的民族,最多三个”。
可能有上百种回答,但为了进行编码,列表限制为40 个最常见的民族,任何其他回答都归为“其他”类别。
关于多重响应集的详细用法可参加本博复选题分析。
主要变量类型与格式SPSS中的变量类型主要包括数值,逗号,点,科学计数法,日期,美元,定制货币与字符等八种类型,主要变量格式类型及示例如下:1.数值格式A.主要数值格式类型及语法表现形式B.主要数值格式类型示例及介绍注:*表示仅显示保留下来的数值部分† 表示系统缺失值‡ 数据集中用科学计数法表示数值型,逗号型,美元,百分比等格式的数据2.时间日期格式A.主要时间日期格式类型及语法表现形式B.主要时间日期格式类型示例及介绍常用的数据格式命令1.数据录入时候直接输入格式变量格式这类问题通常在大家学习练习的时候用,日常工作中很少直接利用SPSS Syntax进行,毕竟SPSS数据编辑框中要比Syntax来得方便的多,此外还有EXCEL和epidata等工具进行专门的数据录入,而更多则可能是数据库表格数据的导入。
SPSS syntax应用——重复观测值的处理很早的时候,大家在SPSS中处理单个变量的重复值通常都是这样的做法,首先将要处理的数据进行排序,然后将其复制后在从新变量的第二行开始粘贴,得到了两个观察量错开一个位置的变量,然后对这两个变量进行相减,最后挑选或删除为零的选项以获得完全无重复的数据。
这样的做起来不算困难,但处理2个或2个以上变量的重复值就显得有点乏力了。
下面就芒果的例子利用SPSS syntax对重复观测值的处理进行相关探讨,简要数据如下:问题1.找出上表中zkzh相同且itemid也相同的所有记录。
上图是syntax命令及说明,关于sort cases/match files/filter等命令见下面小贴士的说明,首先看看数据处理结果:问题2. 如何快速的分离出被筛选的变量?还是利用上面的例子,我们利用dataset copy命令将被筛选出的观测值快速的筛选出来,形成一个新的数据集。
#1 Filter off.#2 Dataset copy shaixuanji.#3 DATASET ACTIVATE shaixuanji.#4 SELECT IF thesame=0.#5 EXECUTE .代码解析:第1行命令利用filter off命令清除上面的筛选效果。
第2行命令式将当前数据集复制到新的数据集shaixuanji中。
第3-4行命令是激活数据集shaixuanji,并且选择thesame变量中值为0的观测值(其他的默认删除)。
第5行命令是即时运算命令。
效果如下:如果不想要这么多的变量,可以使用save outfile.../keep(drop)命令选择自己需要的变量。
问题3.有时候我们并不知道如何筛选重复值,而是事先观察比较重复值的相关特性,然后做下一步的处理,那么如何选择输出重复值的相关信息呢?这里还是利用最初的数据进行说明,由于目的不同,这里筛选查找重复观测值的方式也不同。
问题1中采用的是match files命令来处理重复值,这里换一种方法,利用aggregate分类汇总命令来计量重复值,进而作进一步的汇总说明,具体代码如下:#1 AGGREGATE OUTFILE = * MODE = ADDVARIABLES#2 /BREAK = zkzh itemid#3 /sameCount = N.#4 SORT CASES BY sameCount (D).#5 COMPUTE filtervar=(sameCount > 1).#6 FILTER BY filtervar.#7 SUMMARIZE#8 /TABLES=zkzh itemid samecount#9 /FORMAT=LIST NOCASENUM TOTAL#10 /TITLE='重复值概述'#11 /CELLS=COUNT.代码解析:第1-3行命令利用aggregate命令在当前数据集中新增一个变量samecount记录分组变量zkzh 和itemid相同观测值的数目,类似于GUI操作中的data--aggregate.第4行命令对变量samecount进行降序排列.第5行命令计算新变量filtervar,对其满足条件samecount>1赋值1,否则赋值0.第6行命令对数据集按变量filtercar进行筛选,filtervar变量中值为0或缺失的都将被过滤.第7-11行是制表命令,等同于GUI菜单操作中的analyze--reports--case summarises,第8行选择表中的计量变量,这里选择了zkzh等3个变量,第9-10行则是对表格的格式及标题进行设置,第11行是相关统计量的选择,这里选择的是count,除此之外还可以选择maxrangesum等其他统计量。
spss语法规范化书通过使用强大的命令语言,您可以保存并自动执行许多常规任务。
它还提供一些在菜单和对话框中没有的功能。
大多数命令可以从菜单和对话框访问。
但是,某些命令和选项只能通过命令语言使用。
命令语言还允许您将作业保存在语法文件中,以便将来可以重复进行分析。
一、粘贴语法创建语法最简便的方法是使用可在大多数对话框中找到的“粘贴”按钮。
从菜单中选择:分析> 描述统计> 频率。
此时,将打开“频率”对话框。
选择婚姻状况[marital]并将其移到“变量”列表中。
单击图表。
在“图表”对话框中,选择条形图,在“图表值”组中,选择百分比。
单击继续。
单击粘贴将作为对话框选择结果创建的语法复制到语法编辑器。
要运行当前显示的语法,请从菜单中选择:运行>选择。
二、编辑语法在语法窗口中,可以编辑语法。
例如,可以将子命令/BARCHART 更改为显示频率而不是百分比。
(子命令以斜杠表示。
)如果您知道显示频率的关键字,您可以直接输入。
如果您不知道关键字,您可以通过将光标置于子命令名后的任意位置并按“Ctrl+空格键”获得一个子命令的可用关键字列表。
这为子命令显示自动完成控件。
为频率单击标记为FREQ 的项。
单击自动完成控件中的项将其插入当前光标位置(原始 PERCENT 关键字已手动删除)。
默认情况下,随着您的键入,自动完成控件将提示您一个可用项列表。
例如,您想包括一个饼图以及条形图。
使用另外的子命令指定饼图。
在FREQ 关键字后按回车键,并键入一个正斜杠以表示子命令的开始。
语法编辑器为当前命令提示您一个子命令列表。
要获得有关当前命令的更多详细帮助,按F1键。
该操作会直接带您进入当前命令的命令语法参考信息。
打开并运行语法文件要打开已保存的语法文件,请从菜单中选择:文件>打开>语法。
将显示打开文件的标准对话框。
选择语法文件。
如果未显示任何语法文件,请确保选择了语法作为您要查看的文件类型。
单击打开。
* SPSS的syntax语法实例一
* 编写者彭昆靖(大部分内容使用了SPSS帮助文档)
* 对于每一个做数据分析的人来说,数据整理是得到分析结果的基础,但是每个人都知道数
据的整理是最枯燥和耗费时间的。
特别是对于要做月报表甚至日报表的人来说,从服务器下载数
据后的整理只是机械的重复,虽然可以用excel的编程和批处理来进行处理,但是如果能在
SPSS中进行数据的处理是更好的选择,并且不用重新学习VB或者VC。
Spss的也可以利用程序
对数据进行处理,并且对使用者的编程能力要求更低,因为大部分的操作都可以直接得到程序代
码,不用使用者自己编写。
因此本文只选择了几个不能直接得到的语法进行说明。
本文主要是以实例说明SPSS中语法的使用方法,使用我以前的一个工作结果来进行演示,看完
之后,你会发现SPSS的数据处理编写真的是非常容易的事情。
本文中,左半部分是程序内容,右半部分斜体是我写的解释内容,由于不是专业书籍,只是
简单的说明如何使用,因此不能像SPSS的Syntex英文说明书一样详尽。
有更多需要的同学,
请查阅SPSS的syntex说明书。
在syntex文档中,每句程序是以大写的标准命令起头,以英文的句号.结尾。
而在命令行的
前面加上*,表示此句为注释性语句,不会参与命令自行。
SET Printback命令语句输出开关
SET Printback=Off. off表示以后的执行语句不会出现在结果窗口中。
SET Printback=On. On表示以后的语句会出现在结果窗口中
GET DATA 读入数据文档。
GET DATA 读入数据,下面以/开头的语句是本命 /TYPE=TXT 令的的参数。
/FILE="D:\CARD.csv" 意思是读入D盘根目录下的 CARD.csv文档
/DELCASE=LINE
/DELIMITERS=","
/ARRANGEMENT=DELIMITED
/FIRSTCASE=2
/IMPORTCASE=ALL
/VARIABLES=
卡片 A20 卡片字段采用字符型,有20位长度
报告单位 F9.0 单位字段采用数字型,有9位长度,其中小数后有0位
出生日期SDATE10 出生日期采用日期型,采用顺序号为10的格式。
CACHE.
EXECUTE. 执行以上命令,如果没有这句,那么以上语句不会执行
DATASET NAME 数据集1 WINDOW=FRONT. 读入的数据命名为数据集1,并成为当前处理窗
口
DATASET CLOSE 关闭数据集
DATASET CLOSE数据集1. 保存并关闭数据集1
DATASET CLOSE数据集1 s . 保存并关闭数据集1,数据集s
DATASET CLOSE all. 保存并关闭所有数据集.
DATASET COPY复制数据集
DATASET ACTIVATE 数据集1. 第一步,激活数据集1
DATASET COPY s. 第二步,将1的数据复制为数据集s DATASET ACTIVATE s. 第三步,激活数据集s
select 选择数据 .
DATASET ACTIVATE 数据集1. 激活数据集1,以下的处理都以数据集1为对象
FILTER OFF. 数据过滤关闭
USE ALL. 使用所有的数据
SELECT IF (报告单位 >= 0). 选择所有报告单位>= 0的数据
EXECUTE. 执行以上语句
4. DELETE VARIABLES 删除变量有两种用法。
可删除一个变量或者连续的多个变量. DELETE VARIABLES CD4检测结果. 删除 CD4检测结果这一个变量
DELETE VARIABLES CD4检测结果 to CD检测日期. 删除从变量CD4检测结果到CD检测日期
之间所有的变量。
STRING /NUMERIC 建立字符/数字变量
STRING 死亡年 (A4). 建立一个字符型变量“死亡年“格式为
A4,表示为4位长度的字符型
STRING 死亡年死亡筛选年份筛选月份筛选 (A6). 建立4个变量“死亡年死亡筛选年份筛
选月份筛选”,格式均是A6 NUMERIC 编号(F2.0). 建立数字型变量“编号”,格式为F2.0
RENAME VARIABLES更改变量名称
RENAME VARIABLES ( 地区类别 = 地区类别筛选). 将“地区类别”字段名改为“地区
类别筛选”
RENAME VARIABLES ( 地区类别婚姻 = 地区类别筛选婚姻筛选 ). 同时更改多个字段名,注
意前后对应。
SORT CASES BY 卡片ID(A).
ALTER TYPE更改数据类型。
ALTER TYPE 录入日期(SDATE10). 将“录入日期”字段类型更改为日期,格式为日期10 EXECUTE.
ALTER TYPE 录入日期(A8). 将“录入日期”字段类型更改为字符,长度为8 EXECUTE.
SORT CASES排序
SORT CASES BY 卡片ID(A) . 数据以卡片ID进行排序,A为升序,D为降序
SORT CASES BY 卡片ID(A) 随访次数(D). 数据以卡片ID进行升序排列,相同卡片ID以
随访次数降序排列
*创建当前日期.
STRING 当前日期(A10). 建立一个“当前日期“字段
COMPUTE 当前日期=$DATE. 将当前计算机的日期赋值给字段
EXECUTE.
ALTER TYPE 当前日期(DATE9). 改变“当前日期”为日期型字段
FORMATS 当前日期(DATE9). 格式化字段输出形式
EXECUTE.。