(8)如何用stata处理multiple responses多
多选题是问卷处理中一个相对比较麻烦的问题,让许多人头疼,不知该如何处理。在 spss 的分析菜单中专门为多选题提供了 multiple response(中文常译作 "多重响应",即可以有多种回答的题目,虽然翻译的并不好。O.O。) 的功能,只需要先定义一个多重响应集,然后就可以进行频数分析和列联表分析。
遗憾的是在 stata 中,官方并未提供相应的命令来处理这个问题,但是还好我们有强大的外部命令来弥补。B. Jann 2005年发表在 《stata journal》 上的一篇文章 Tabulation of multiple responses 提供了以 mrtab 为核心的一系列命令专门用来处理多选题的问题。本文基本学习自这篇文章,感谢前人的付出,有兴趣的可以去找原文看。
Note:本文使用的案例 data 和 dofile 见文末。
封闭式多选题、半开放式多选题在分析之前我们必须先了解多选题数据存储的两种模式:the indicator mode(二分变量式) 和 the polytomous mode(多分类模式).
二分类编码模式示例1、二分类的编码模式(the indicator mode):我们应该都很熟悉,在对类别变量的处理中经常会用到,即虚拟变量(0/1变量,“是”=1,“否”=0)的编码方式,将每一个选项都作为一个单独的变量,有多少个选项就有多少个虚拟变量,被访者选了该选项便编码为1,未选该项则编为0.如下图所示:
多分类编码_未加值标签 多分类编码模式_加上指标签2、多分类的编码模式(the polytomous mode):也较容易理解,即直接对每一个选项按照1、2、3、4、5.....的顺序编码,有多少个选项就给多少个编码。这种编码方式的好处在于:对于半开放式的多选题尤为实用,因为在半开放式的多选题中,研究者无法预知除了自己设定的答案选项以外还会出现多少个新答案,当在某个 responser 处出现一个新答案时,研究者只需要在其后新增一个编码即可,非常方便。(此外,使用多分类的编码后 mrtab + gen 的 option 可以快速转换成二分类的编码方式,这个后面再说)如下图示例:
当然,我们似乎可以在二分类的编码模式下用 tab 命令对各项逐个进行统计,再汇总,但是这种办法显然不够便利,我们需要的是一步到位的简单办法。
基本命令语法 案例使用的主要命令多选题分析的主命令为 mrtab ,其基本的语法如下:
下面对其中涉及的命令及一些主要的 options 进行解释,至于其他的可以自行阅读 help 文件。
mrtab jiaotong1-jiaotong4主命令 mrtab :如果采用的是二分类的编码模式,则可以直接用 mrtab 加上所有的题项进行列表统计。stata 默认的是 1 表示“选中该项”,0 表示“未选中该项”。得出的结果如下:
mrtab vehicle1- vehicle4,poly response(1 2 3 4) sort title("Way to work")poly & response:作为 option 两个需要搭配使用,poly 告诉 stata 我的编码方式为多分类编码模式,而response 则指定所有选项的编码,例如在案例中 1、2、3、4 覆盖了所有的编码,那么只需要加上 reponse(1/4) 或者 response(1 2 3 4)即可,告诉stata 1、2、3、4 是我的选项,所有不在这个 list 里面的值都会作为未选或者缺失。结果如下图:
sort :按照 frequency 的大小排序显示,在双变量的 mrtab 中还可以指定以哪一列为基准排序,如sort(1)即以第一列为基准排序,同理 sort(#)。
title:指定统计表的标题,中文都支持,如 title("Way to work"),可自行尝试。
generate( ):将多分类的编码模式转换成二分类的编码模式。mrtab vehicle1-vehicel4,poly response(1/4) gen(jiaotong),在gen( )括号里自定义一个前缀名就行,例如我这里用jiaotong,就会转换成 jiaotong1 - jiaotong4 四个二分类变量。
双变量列表统计:只需添加一个 by(prof)by:在多选题与其他类别变量做双变量列联统计的时候使用,by(另一类别变量 ),在本例中,我自己设置了一个 prof 职业变量,三类,1、教师;2、公务员;3、公司职员。所以只需要添加一个option——by(prof) 即可完成双变量列表统计。
mrtab 加上column 的option 结果row & column :与普通的 tab 命令的row col 类似,在tab中是行百分比和列百分比,在这里差不多意思,col 表示计算百分比时分母的base是 column total of observations,row表示计算cell的百分比时的 base是row total of responses; this is equal to the row total of observations。可以自行尝试之后观察下。下面是加上 column之后的结果:
卡方独立性检验chi2 & lrchi2:在双变量统计中常用,检验行列之间是否独立。使用的是卡方检验或者似然比卡方检验likelihood-ratio χ2 statistic。至于为什么用似然比卡方,作者给出的解释是 as an alternative to chi2,结果:
mrgraph bar:多选题的柱状图绘图命令,与列表统计命令无太大区别,与普通的 graph bar 对于绘图设置的一些选项基本也都是通用的,例如改变 bar 的颜色,改变Y轴刻度标签 等等。具体可以查阅 graph bar 的 options,示例
mrgraph barmrgraph bar vehicle1- vehicle4,poly response(1 2 3 4) sort title(Way to work) ///
bar(1,color(green)) intensity(*0.8) /*intensity填充颜色透明度为原来的80%*/
双变量绘图双变量的绘图:
mrgraph bar vehicle1- vehicle4,poly by(prof,separate ) response(1 2 3 4) ///
sort title("Way to work") bar(1,color(green)) bar(2,color(red)) ///
bar(3,color(purple)) intensity(*0.9) ylabel(0(3)18,angle(0)) ytitle("频率") ///
legend(row(3) position(11) ring(0))
横版绘图横版绘图:只需要将命令中的 bar 改成 hbar 表示 horizontal 显示,然后再将图例的position修改为1点钟方向显示即可。
本文 data 和 dofile 文件:百度网盘链接:http://pan.baidu.com/s/1c1GtsPy 密码:gxbb
Referrence:B. Jann,《stata journal》2005,Tabulation of multiple responses