5.3 变量的计算
5.3.1 变量计算的基本操作
对于复杂的统计分析问题,仅仅根据原始数据的变量值是不够的。有时需要利用已知的变量产生新变量。SPSS的“Compute Variable”过程可以完成对变量的计算并产生新的变量的任务。
利用“Compute Variable”过程进行变量计算的基本方法和操作步骤如下:
step 1 打开主对话框。
在数据编辑创窗口,选择菜单“Transform”→“Compute Variable”命令,打开“Compute Variable”(计算变量)对话框。如图5.1所示。
图5.1 “Compute Variable”(计算变量)对话框
step 2 确定目标变量名。
在对话框的左上角“Target Variable”(目标变量)窗口中输入目标变量的名称,如果输入的目标变量不是原数据文件的变量,则执行操作以后,在数据编辑窗口新产生一个变量;如果输入变量是已存在变量,则执行操作后,该变量覆盖原变量。
step 3 设置新变量的变量标签。
单击“Type & Label”按钮,出现如图5.2所示的“Compute Variable:Type and Label”对话框。该对话框用于设置目标变量标签和变量类型。
图5.2 “Compute Variable:Type and Label”对话框
“Label”窗口有两个关于值标签的单选项:
◆ LabeI 默认选项。直接输入变量标签。
◆ User expression as IabeI 利用计算新变量的表达式作为变量标签。例如,若选该项,图5.1中的变量值标签为:SUM(数学,语文,英语,综合)。
图5.2的“Type”(类型)窗口用于选择生成的变量类型,包括:
◆ Numeric 数值型。
◆ String 字符型。
设置完毕后,单击“Continue”按钮,返回“Compute Variable”主对话框。
step 4 设置变量的计算表达式。
在“Numeric Expression”(数值表达式)窗口内输入产生目标变量的数值计算表达式。输入计算表达式,可以通过左侧选择变量列表和下方的计算面板来完成。
在左侧的变量列表框中选择原始变量名后,单击右向箭头按钮,将选择的原始变量移动到“Numeric Expression”窗口中;再利用计算面板输入各种所需的操作符和计算常数。计算面板类似于计算器键盘,包含有常数、算术运算符、关系操作符、逻辑运算符。可以利用变量和各种操作符以及常量产生需要的数值表达式。
当需要SPSS函数构成表达式时,可以在对话框的右侧函数类中选择函数类,列表框中列出了SPSS函数的18个小类,单击需要的函数类后,在下方的函数列表框中会出现此类函数的函数名列表,找到所需的函数后,单击该函数名,则在中间的文本框中显示该函数的用法,再单击旁边的向上的箭头,使之出现在数值表达式窗口。
step 5 选择逻辑表达式(lf Cases)。
当满足不同条件的个案需要使用不同的表达式计算新变量的值时,新变量的值需要分步进行计算。假设在“Compute Variable”对话框已经确定了计算部分新变量值的表达式时,下面需要利用“Compute Variable:lf Cases”子对话框选择满足条件的个案。
仍在“Compute Variable”主对话框中,单击“lf”按钮,打开如图5.3所示的“Compute Variable:lf Cases”(计算变量:如果个案)对话框。
图5.3 “Compute Variable:lf Cases”(计算变量:如果个案)对话框
该对话框中给出下列选项:
◆ IncIude aII cases 默认选项。选择此项,表示对所有的个案使用“Compute Variable”主对话框中设置的表达式计算新变量值。
◆ IncIude if case satisfies condition 选择此项,表示只对满足条件表达式的个案计算新变量的值。选择此项后激活了条件选择框。在条件选择框中输入所需要选择个案的条件,即逻辑表达式。
逻辑表达式的输入方法:在左侧的变量列表框中选择原始变量名,单击右向箭头按钮,使选中的原始变量名出现在表达式框中。再利用计算面板输入各种所需操作符和常数,从而产生所需要的逻辑表达式。
当需要SPSS函数构成表达式的一部分时,可以在对话框的右侧“Function group”(函数类)函数分类列表框中选择函数类,列表框中列出了SPSS函数的18个小类,单击需要的函数类,这时在下方的函数列表框“Functions and Special Variables”(函数和特殊变量)中出现此类函数的函数名列表,找到所需的函数后,单击该函数名,则在中间的文本框中显示该函数的用法,再单击旁边的向上的箭头,使之粘贴在逻辑表达式窗口。
条件选择对话框“If Cases”在SPSS的其他功能中还会多次用到,应该熟悉其构成和用法。
单击“Continue”按钮,确认逻辑表达式的输入,并返回至“Compute Variable”主对话框。
step 6 执行操作。
单击“OK”按钮,执行满足条件个案的计算操作。
如果对于满足其他条件的个案,需要给出不同的计算表达式来产生变量,可以重复上述过程。
5.3.2 实例:高校提前录取名单的确定
给出一具体应用案例,说明变量计算的基本操作和计算结果。
某高校今年对部分考生采取单独出题、提前录取的招生模式。现有20名来自国内不同省市的考生报考该校,7个录取名额。考生提前录取的招生成绩表如表5.3所示,其中列出了考生的考试成绩和其他基本情况。(数据文件:compute.sav)
表5.3 考生提前录取的招生成绩表
该校制定了如下录取原则:
◆ 文化课成绩由数学、语文、英语和综合4门成绩组成。文化课成绩制定最低录取分数线:400分。
◆ 个人档案中若有“不良记录”,不予录取。
◆ 对西部考生和少数民族考生,给予加分优惠。少数民族考生加20分,西部考生加10分。
◆ 对参加过省以上竞赛并取得三等奖以上名次的考生,每项加10分。
◆ 文化课成绩和加分总和构成综合分,综合排名前7者录取。
下面利用SPSS软件,按照5.3.1节的方法,给出成绩排名的操作步骤:
step 1 建立数据文件。
原始数据文件名为compute.sav,包括12个变量,20个个案。为便于计算,除“姓名”为字符型变量外,其他变量都为数值型,其中“出生年月”为日期型,其余为标准型。下面定义变量值标签:
性别:1=“男”,2=“女”;
民族:1=“汉”,2=“回”,3=“蒙”,4=“维”,5=“其他少数民族”;
省份:0=“非西部考生”,1=“西部考生”。
step 2 对所有考生计算文化课总成绩。
选择菜单“Transform”→“Compute Variable”(计算变量)命令,打开“Compute Variable”对话框,如图5.1所示。在“Target Variable”(目标变量)窗口中输入新变量名“总成绩”,在变量名标签中输入“总成绩包括数学、语文、英语和综合成绩”。
在“Numeric Expression”(数值表达式)窗口中输入数值表达式:SUM(数学,语文,英语,综合),这里,SUM是SPSS函数,表示求括号内4个变量的和,SUM函数可以通过在“Function group”(函数组)窗口中选择“Statistical”统计函数类,然后,再选择“Statistical”类中的“Sum”函数得到。当然,此表达式也可以直接表示为“数学+语文+英语+综合”。
单击“OK”按钮,执行计算总成绩的操作。于是,在当前的数据编辑窗口中,增添一变量名为“总成绩”的变量,其变量值为考生文化课总成绩。
step 3 定义“录取成绩”变量和计算表达式。
在当前数据编辑窗口,再次选择菜单“Transform”→“Compute Variable”命令,打开“Compute Variable”主对话框,如图5.4所示。
图5.4 “Compute Variable”主对话框
首先,单击“Reset”按钮,清除先前使用该对话框定义的内容;然后,在对话框“Target Variable”框中,输入新变量名“录取成绩”。在变量名标签“Label”栏中输入“录取成绩由文化课总成绩和加分构成”。
在“Numeric Expression”(数值表达式)窗口中输入数值表达式:总成绩+(民族>=1)*20+省份*10+奖项*10。
数值表达式中可以含有关系表达式,例如此例中的“民族>=1”就是关系表达式,返回值为一逻辑值。当表达式为真时,返回值为1;当表达式为假时,返回值为0。这里的逻辑值0或1参与后续的数值计算。民族>=1时,根据“民族”变量的变量值标签含义可知,此时必为少数民族。
step 4 利用“lf Cases”对话框选择满足录取基本条件的考生。
在“Compute Variable”主对话框中,单击“lf”按钮,打开如图5.3所示的“Compute Variable:lf Cases”对话框。
选择“lnclude if case satisfies condition”选项,在激活的窗口内输入满足录取基本条件的表达式:不良记录< 1 & 总成绩 >= 400。单击“Continue”按钮,确认逻辑表达式的输入,并返回“Compute Variable”主对话框。
单击“OK”按钮,执行满足条件个案的计算操作。于是,在当前数据编辑窗口,增加变量“录取成绩”,不满足条件的变量值为缺失值。
step 5 对录取成绩排序。
在成绩表中,按录取成绩由高至低排名,在录取成绩排名相同的情况下,按总成绩决定先后。操作步骤如下:
选择菜单“Data”→“Sort Cases”,显示如图5.5所示的“Sort Cases”(个案排序)对话框。在左侧变量列表框中先选择变量“录取成绩”,单击右向箭头按钮,将其移动到“Sort by”框中,并在“Sort Order”框中选择该变量的排序方式:Descending(降序);再选取“总成绩”进入“Sort by”框中,排序方式选择:Descending(降序)。单击“OK”按钮,执行排序操作。
图5.5 “Sort Cases”(个案排序)对话框
图5.6显示的是提前招生录取排序表。从表中可以看出,20位考生中共有9位满足录取基本条件,在“录取成绩”列中,取前7名作为最后录取结果。
图5.6 提前招生录取排序表
step 6 “Paste”得到的Syntax语句程序如下:
/* 计算总成绩. COMPUTE 总成绩 = SUM(数学,语文,英语,综合) . VARIABLE LABELS 总成绩 '总成绩包括数学、英语、语文、综合' . EXECUTE . /* 计算录取成绩. IF (不良记录 < 1 & 总成绩 >= 400) 录取成绩 = 总成绩+(民族>=1)*20+省份*10 +奖项 *10 . VARIABLE LABELS 录取成绩 '录取成绩由文化课总成绩和加分构成' . EXECUTE . /* 录取成绩排序. SORT CASES BY 录取成绩 (D) 总成绩 (D) .