调查问卷选项无回答率的SAS程序实现
2012-10-21孙玉环
孙玉环
(1.北京大学中国社会科学调查中心,北京 100871;2.东北财经大学统计学院,辽宁 大连 116025)
0 前言
无回答是指抽样调查中由于种种原因没有能够对被抽中的样本单元的全部或部分进行回答,从而没有获得有关这些单元的全部或部分数据。按损失的信息范围划分,无回答可以分为单元无回答(unit non-response)和选项无回答(item non-response),前者指样本单元没有提供任何信息,后者指样本单元虽然接受了调查,但是对其中某个或某些调查题目没有回答[1],比如,被调查者对某些选项表示不知道或拒绝回答,访员由于疏忽遗漏了某些选项,由于某种原因调查被中断等。
选项无回答率的高低,是评价问卷调查数据质量、问卷题目难易程度以及访问员调查工作质量的重要标准。不过由于综合性社会调查项目往往覆盖范围广、样本量大、调查内容繁杂,而且选项无回答率的计算标准不统一,计算口径多种多样,在常用的SAS、SPSS、STATA等具有数据分析功能的软件中,并没有可以直接计算选项无回答率的过程。
本文将结合笔者从事大型社会调查项目数据质量核查和数据整理的经验,首先给出选项无回答率的一般计算公式,然后借助于SAS系统灵活的编程功能,具体探讨计算调查问卷选项无回答率的实现程序及技巧。
1 选项无回答率的一般计算方法及计算难点
1.1 选项无回答率的一般计算方法
综合性社会调查项目在数据采集、数据录入和数据清理环节,一般来说,对于受访者表示不知道或拒绝回答、访问员因疏忽等原因出现的应填未填项以及因问题跳转所产生的不适用等特殊情况,都会要求用一些特定的值来表示,比如,用“-1”表示不知道、“-2”表示拒绝回答、“-9”表示应填未填答、“-8”表示不适用。汇总后的调查数据库经过上述处理后,理论上将不再存在空缺值。
在上述特殊情况中,受访者表示不知道、拒绝回答以及因访问员疏忽等原因出现的应填未填项,都属于无回答的范畴。对于因问题跳转所产生的不适用情况,虽然也表现为未回答,但这是由于受访对象因不具备某些特征,而不再适合继续回答某些问题。比如,当受访对象确定为未成年人时,相应的了解婚姻状况、工作状况的题目将不再适用,也就没有必要继续询问(问卷设计时,这种情况往往表现为题目的直接跳转),因“不适用”而造成的数据空缺,不应计入无回答的统计范围。
基于上述对选项无回答情况的界定,选项无回答率的计算口径应为以去掉不适用情况后的全部样本单元数为分母,以不知道、拒绝回答、应填未填三种无回答情况的样本单元数合计为分子的结构相对数。记选项无回答率为p,样本单元数为n,则选项无回答率的计算公式可定义如下:
1.2 综合性调查项目计算选项无回答率的难点
选项无回答率的计算公式理解起来并不困难,在小规模调查项目中,依据计算公式,利用各个变量的频数分布表,通过简单计算即可得到。但在综合性调查项目中,由于样本量大、调查题目多、调查内容繁杂,往往还需要从不同角度反映和监测选项无回答率的高低,比如,既可能需要了解每一个选项在全部问卷中的平均无回答率,也可能需要了解每一份问卷在全部选项上的平均无回答率,有时出于比较和分析的目的,还可能需要计算按照访员、地区等分组的各组选项无回答率,这时如果仍然直接依据公式来计算,就会变得十分困难。而综合性社会调查项目中,计算选项无回答率是调查质量核查和质量控制的重要环节,实时、高效地提供准确、简洁及具有可读性的无回答率计算结果,是保证质量核查环节顺利实施的前提。
2 计算选项无回答率的SAS程序实现案例及解析
SAS(Statistical Analysis System)是由美国北卡罗来纳州州立大学1966年开发的大型集成软件系统,由数十个专用模块构成,具有完备的数据访问、管理、分析和呈现及应用开发功能,尤其在数据处理和统计分析领域,SAS系统已经成为国际上的标准软件系统。基于SAS系统编写计算选项无回答率的程序,具有计算过程灵活、运算速度快、准确程度高、程序可重复验证以及输出结果可读性强等优势。
2.1 案例设定
假设test.family为某入户调查项目以SAS格式存储的数据库,数据库中共有15个变量,其中hhno为户编码变量,itvid为访员编码变量,x_a1,x_a2,x_a3,x_a4,x_b1,x_b2,x_b3,x_b4为8个数值变量,x_a5,x_b5,y_a1,y_a2,y_a3为5个字符变量,共有有效观测1000条。
该调查项目在访问员填写问卷和录入员录入数据时,对于拒绝回答等特殊情况已做了统一规定,即,不知道用“-1”表示、拒绝回答用“-2”表示、不适用用“-8”表示、应填未填答用“-9”表示,数据库中不再有其他形式的空缺值。下面的SAS程序中,将直接基于这种特殊值的表示方法进行数据整理。
2.2 选项无回答率计算过程的SAS程序实现
不同的研究目的,无回答率的计算口径也会不同,具体可以分为问卷中选项的平均无回答率和选项在全部问卷上的平均无回答率。下面将具体探讨这两种计算口径的无回答率的SAS实现程序。
2.2.1 问卷中选项的平均无回答率的计算
问卷中选项的平均无回答率,是指每一份问卷中有效回答选项占全部应回答选项的比重,对每一份问卷所关注选项的总体无回答情况进行实时测定和监控,是评价调查数据质量、评价访员访问工作质量和核发劳务报酬的依据。
(1)实现程序
程序的实现目标是计算test.family数据库中每条观测(每份问卷)在全部15个变量(选项)上的无回答率并存储成EXCEL格式的数据库。具体SAS实现程序如下:
【程序1】
(2)程序编写技巧解析
在该SAS程序中,主要应用了以下编写技巧:
①通过变量代换,将全部变量转换成0/1变量。程序中首先通过变量值代换,把原始数据库中的有效值代换为1,无回答情况代换为0(无回答情况包括不知道-1、拒绝回答-2和应填未填项-9),不适用情况(-8)代换为缺失(数值变量赋值为“.”,字符变量赋值为空),即将全部数据转换成是非标志变量(0/1变量),该类变量的均值为n1/n,也就是取值为1的观测数占全部观测总数的比重。
②在对字符变量做变量值代换的过程中,利用y1(i)=y1(i)+0(即把字符型变量加上数值0),灵活地实现了把字符变量转换成数值变量的过程。
③利用样本统计函数中的均值函数mean,计算每一条观测的全部非缺失0/1变量的均值,据此得到每一条观测在全部选项上的回答率。SAS系统中均值函数的一般表达式为mean(of x1-xn)或mean(x1,x2,x3,…),用于计算列表变量中所有非缺失变量值的算术平均值[2]。在本程序中,由于不适用情况(-8)事先被赋值为缺失,并不参与函数运算,即相当于实现了选项无回答率计算公式中的分母(n全部-n不适用) 部分。对每一条观测来说,全部非缺失0/1变量的均值为n1/n,即取值为1(选项有回答)的变量个数占全部变量总数(有回答和无回答选项数目的合计)的比重,相当于有回答率,用1减去有回答率即可得到无回答率。本程序中函数mean的灵活运用,避免了简单地利用“判断+计数”方式直接计算无回答率的过程,大大提高了程序的运行效率。
④利用样本统计函数中的求和函数sum,计算每一条观测的有效回答的选项个数。SAS系统中求和函数的一般表达式为sum(of x1-xn)或sum(x1,x2,x3,…),用于计算列表变量中所有非缺失变量值的合计[3]。在本程序中,由于已经把有效值代换为1、无回答情况代换为0、不适用情况代换为缺失,不适用(-8)情况不参与函数运算,此时求和的结果即等于有效值的个数。
⑤灵活应用数组语句(array)完成对多个变量重复相同数据处理的过程,简化了程序。
⑥利用SAS输出传送系统(ODS),将以户编码和访员编码为标志变量的无回答率计算结果直接输出为excel格式,便于后续质量核查工作的开展。
2.2.2 选项在全部问卷上的平均无回答率的计算
选项在全部问卷上的平均无回答率,是指某一选项在全部问卷中的有效回答观测数占全部应回答观测数的比重,用以反映受访者回答该选项时的难易程度。无回答率过高的选项,既可能是由于题目本身不好理解或过于敏感,也可能是题目表述存在疏忽,在调查实施进程中,对于发现的无回答率总体平均水平特别高的选项,应该及时查找和分析原因,并采取补救措施,比如,更正问卷设计错误、改进提问技巧、提请访问员关注等,尽可能提高每一个选项的回答率,从而提高调查数据质量。
(1)实现程序
程序的实现目标是计算test.family数据库中 10个数值变量(选项)在全部1000条观测(问卷)上的无回答率,并存储成EXCEL格式的数据库。具体SAS实现程序如下:
【程序2】
(2)程序编写技巧解析
在该SAS程序中,主要应用了以下编写技巧:
①读入数据时,直接利用筛选条件“where&var^=-8”,将不适用的情况过滤掉,然后利用条件语句“if&var in(-1,-2,-9)then&var=.”,把无回答情况赋值为缺失值。
②利用计算变量基本描述统计量的均值过程(means过程),得到有效值和缺失值的个数,再依据选项无回答率的计算公式,构造变量p=nmiss/(n+nmiss),直接得到无回答率。
③因为需要逐一计算各个变量的无回答率,通过编写和运用宏noanswer,避免了程序文本的大量重复。
④利用赋值语句var="&var",增加一个新的字符型变量,该变量的取值即为所计算出的无回答率的对应变量名,作为后续合并数据库的标志变量。
⑤把append过程置于宏noanswer过程中,并在引用宏程序计算无回答率之前,首先建立一个空数据库noanswer,作为执行宏程序时直接追加的基础数据库。这样做的好处是,直接在宏程序中完成了变量无回答率计算结果的逐一追加,避免了待全部变量的无回答率计算完成后再合并数据库的过程,提高了程序的利用效率和准确性。尤其是在综合性调查项目中,出于不同的分析目的,往往可能需要不断增加或减少某些分析变量,这时只需简单的替换定义宏变量和引用宏程序过程中的文本即可完成,可以避免由于代换疏忽而出现漏合并或重复合并数据集的错误。
⑥利用SAS输出传送系统(ODS),将以变量名称为标志变量的无回答率计算结果直接输出为excel格式,便于后续质量核查工作的开展。
2.2.3 补充说明
程序2中只是给出了计算数值型变量(选项)在全部问卷上的平均无回答率的实现过程,如果需要计算字符型变量在全部问卷上的平均无回答率,可以仿照程序1中的方法,先把字符变量转换为数值变量,然后再套用程序2即可。
除了上述两种无回答率的计算口径外,有时为了特定的分析和核查目的,还需要分访员比较所完成问卷在全部变量(选项)上的平均无回答率、分区域比较各变量(选项)的平均无回答率等等,这时只要以上述两个程序为基础,灵活地增加分组语句(by语句)即可实现。
3 结语
本文给出的两个分别计算问卷中选项的平均无回答率和选项在全部问卷上的平均无回答率的SAS实现程序,凸显了SAS系统在处理大规模复杂数据时的优势,在样本量大、调查题目多、调查内容繁杂的综合性调查项目中具有很强的实践应用价值。从中也可以看出,应用SAS系统不应只停留在对常用SAS过程语句的简单运用上,还应该根据数据分析的需要,灵活地应用各种SAS函数、数据管理技巧以及宏编程技术等,提高程序的简洁性、运算效率以及结果的可读性和准确性。
[1]严洁.政治敏感问题无回答的处理:多重插补法的应用[J].华中师范大学学报(人文社会科学版),2010,49(2).
[2]朱世武.SAS编程技术教程[M].北京:清华大学出版社,2007.