SPSS编程
傻瓜软件并不傻瓜,小编今天才知道SPSS也是可以像SAS、R等一样有编辑命令的,学艺不精,自以为是认为SPSS只是按钮操作,类似变量赋值、统计检验这些都是可以编程的。SPSS中依靠syntax语法实现其编程的作用。
Syntax的语法规则包含2种,一种是在syntax窗口中直接运行的语法规则,又称交互模式语法规则;另一种是调用外部的syntax语句文件语法规则,又称批处理模式语法规则
交互模式语法规则:
• 每个命令必须从新行开始。但可从任意列开始,END DATA命令例外,该命令必须在数据结尾之后第一行的第一列中开始。
• 每个命令应该以句点为命令终止符。但是BEGIN DATA可以省略(.)中的终止符,其后的内联数据视为一个连续指定。注:命令语法的每行不能超过256个字节
• 命令终止符必须是命令中的最后一个非空白字符。(换句话说就是有(.)就代表一个语句的结束)
• 如果没有句点作为命令终止符,则将空行解释为命令终止符。
注意:为与命令的其他执行模式(包括在交互式会话中用INSERT或INCLUDE命令运行的命令文件)兼容,命令语法的每行不能超过256个字节。
• 大多数子命令由斜杠(/)分隔。第一条子命令前面的斜杠通常是可选的。
• 变量名必须使用全名拼写。
• 单引号或双引号内包含的文本必须包含在单独一行上。
• 区域设置或语言环境设置如何,必须使用句点(.)指示小数。
• 以句点结束的变量名可能在由对话框创建的命令中导致错误。不能在对话框中创建这样的变量名,并且通常应避免这样的变量名。
FREQUENCIES
VARIABLES=JOBCAT GENDER
/PERCENTILES=25 50 75
/BARCHART.
freq var=jobcat gender /percent=25 50 75 /bar
· 命令语法不区分大小写,三个字母或四个字母的缩写可用于许多命令规范。可以使用任意多行指定单独一条命令。可以在几乎所有允许单个空格的地方添加空格或换行符,例如斜杠、括号和算术运算符两端或变量名之间。
批处理模式语法规则:
• 命令文件中的所有命令必须以列1开始。如果要缩进指定的命令以提高命令文件的可读性,则可以在第一列中使用加号(+)或减号(–)。
• 如果对命令使用多行,则每个连续行的列1必须为空。
• 命令终止符是可选的。
• 一行不能超过256个字节,任何256个字节以外的语句将被忽略。
除非现有的命令文件已使用了INCLUDE命令,否则应改用INSERT命令,因为它适用于符合任意规则的命令文件。如果通过将对话框选择粘贴到语法窗口中来生成命令语法,则这些命令的格式满足以上任意一种情况都能运行。
标点符号的含义:
· 方括号 [],括号中的内容不是必要的,或是可以省略,省略时按默认值执行。
·花括号{},以纵向排列的花括号内的元素,表示任选其一。
·圆括号(),通常指示括号内的内容是参数,通常圆括号是命令的一部分,不能省略。
·双星号**,指示这是默认值,并且表示该默认值所在的子命令省略时,该默认值起作用。
·粗体,也是默认值,该默认值所在的子命令没有省略时,该默认值可以不写。
· 省略号 . . .,省略号所指代的内容可以出现多次,例如图例中 [/varlist . . .],表示可以为 WITH 变量指定多个 variable list.
我们以多组资料秩和检验,事后采用Nemenyi两两比较为例,来学习一下SPSS中的编程。
·首先在SPSS中打开要分析的数据,先做非参数检验的多组独立样本检验,得到非参数检验的结果以及各组的RANK,然后就可以进行编程了。
·新建一个syntax文件。从数据编辑窗口,打开"文件"菜单,然后依次选择"新建", "Syntax."
·输入代码
*这里假设K=5.
data list free/kHcr1 r2 r3 r4 r5Nn1 n2 n3 n4 n5.
begin data
30.707 281.34 406.09 393.55 366.30 326.90 616 387 29 21 66 113
end data.
compute H =12/(N* (N+1))* (r1*r1*n1+r2*r2*n2+r3*r3*n3+r4*r4*n4+r5*r5*n5)-3*(N+1).
compute C=H/Hc.
compute x12=(r1-r2)**2/((N*(N+1)/12)*(1/n1+1/n2)*c).
compute x13=(r1-r3)**2/((N*(N+1)/12)*(1/n1+1/n3)*c).
compute x14=(r1-r4)**2/((N*(N+1)/12)*(1/n1+1/n4)*c).
compute x15=(r1-r5)**2/((N*(N+1)/12)*(1/n1+1/n5)*c).
compute x23=(r2-r3)**2/((N*(N+1)/12)*(1/n2+1/n3)*c).
compute x24=(r2-r4)**2/((N*(N+1)/12)*(1/n2+1/n4)*c).
compute x25=(r2-r5)**2/((N*(N+1)/12)*(1/n2+1/n5)*c).
compute x34=(r3-r4)**2/((N*(N+1)/12)*(1/n3+1/n4)*c).
compute x35=(r3-r5)**2/((N*(N+1)/12)*(1/n3+1/n5)*c).
compute x45=(r4-r5)**2/((N*(N+1)/12)*(1/n4+1/n5)*c).
compute p12=1-cdf.chisq(x12,4).
compute p13=1-cdf.chisq(x13,4).
compute p14=1-cdf.chisq(x14,4).
compute p15=1-cdf.chisq(x15,4).
compute p23=1-cdf.chisq(x23,4).
compute p24=1-cdf.chisq(x24,4).
compute p25=1-cdf.chisq(x25,4).
compute p34=1-cdf.chisq(x34,4).
compute p35=1-cdf.chisq(x35,4).
compute p45=1-cdf.chisq(x45,4).
execute.
注意事项:
k不是必须的,如果写上,数据集中也要加上个数,标蓝的部分根据自己实际情况替换。SPSS syntax的命令需要以"."结尾。如果要加注释的话,有两种方式:可以选择以"*"或以"comment"命令开始。如果没有以"."结束注释,SPSS会将"*"或"comment"与下一个"."之间的语句都作为注释。要是这样的话,好多语句就不会被执行了。
135 editor
最后附一个关于syntax的操作链接
http://wangli12a.blog.163.com/blog/static/7796125201222042918824/
▼更多精彩内容,请长按二维码▼
领取专属 10元无门槛券
私享最新 技术干货