SPSS也能编程?

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/

▼更多精彩内容,请长按二维码▼

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181025G1PRMY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券