1. 项目概述
SPSS里的多选题,大概是问卷数据分析里最容易被低估的一个环节。很多人拿到一份问卷数据,看到Q5_1、Q5_2、Q5_3这种带下划线的变量名就发懵,不知道该怎么处理,更不知道怎么做频率分析、交叉分析。更常见的情况是,辛辛苦苦把数据录入SPSS之后,点了一通菜单,结果分析出来的百分比加起来不是100%,于是开始怀疑自己哪里做错了。
其实方向没错,只是没有把多选题的定义方式搞对。这个项目要解决的,正是这个问题:SPSS中多选题的定义方法、操作路径、背后的统计逻辑,以及做完定义之后如何进一步做频率分析和交叉分析。无论你是做市场调研、毕业论文问卷,还是用户满意度调查,只要手里有带多选题的原始数据,这篇文章就能帮你把流程完整跑通。
适合谁来参考呢?刚接触SPSS的在校学生、需要用问卷数据做报告的分析岗同事、以及那些已经会用SPSS做单选题分析但对多选题感到别扭的从业者。读完这篇文章,你应该能搞清楚:多选题的数据该录成什么样、如何用SPSS的多重响应集功能把变量“捆”在一起、频率分析和交叉表的输出结果怎么解读,以及那些容易让人栽跟头的细节到底出在哪里。
先说明一下,下面的内容以SPSS的经典菜单操作为主,版本差异造成的按钮位置不同,我会在关键位置补充说明。拿到的数据只要是SPSS可识别的格式(.sav、.xlsx、.csv都行),操作逻辑基本一致。
2. 方案选型:为什么多选题必须“定义”而不是直接分析
2.1 多选题的数据结构和普通变量的本质差异
要理解多选题定义这件事,你得先搞清楚多选题在数据文件里长什么样。
单选题在SPSS数据视图里通常占一列,每一行一个样本,单元格里的数值代表该样本选的那个选项。这个结构非常直观,做频率分析的时候,SPSS只需要对单列做统计就够了。
多选题完全不是这么回事。一份问卷里如果有一道题是“您通常通过哪些渠道了解产品信息?(多选)”,选项有网络广告、朋友推荐、线下门店、社交媒体、其他共5个选项,你在录数据的时候就不可能只用一个变量来表达。受访者可能同时勾选了网络广告和社交媒体,一个单元格塞不进两个选项。所以常规做法是:每个选项单独占一列,用0/1或1/0来标记该受访者是否选了这一项。如果你用的是Excel问卷平台导出的数据,通常还会看到更直接的“勾选”形式,比如勾了就是选项名,没勾就是空值。
这样一来,上述这道多选题在SPSS数据视图里就变成了5个变量:Q3_1(是否选网络广告)、Q3_2(是否选朋友推荐)、Q3_3(是否选线下门店)、Q3_4(是否选社交媒体)、Q3_5(是否选其他)。
麻烦就在这儿。这5列变量虽然物理上各自独立,但在语义上它们是一个整体——都是同一道题。如果你不告诉SPSS“这几列属于一道多选题”,分析的时候就会出现一个尴尬的状况:你做频率分析只能一列一列地看,得到的是每个选项各自的选中人数,压根没法把这道题当作一个整体来统计,更没法计算“有多少人选择了这个选项占所有选择人次的比例”。
多选题定义这个操作,本质上就是给SPSS“建模”——把分散的多个变量声明为“多重响应集”,让软件知道这几列应该作为一个题目的整体来看待。这个动作在SPSS菜单里叫“分析—多重响应—定义变量集”,不同版本文菜单位置稍有差异。
2.2 二分法编码和分类法编码的选择逻辑
定义多重响应集的时候,SPSS会要求你选择一种编码方式,最常见的是二分法(勾选/未勾选)和分类法(把每个选项连接成一个取值范围)。这两者看起来只是一个选项选择的不同,实际上对应的是完全不同的数据录入逻辑。
用什么编码方式,取决于原始数据是怎么录的,而不是你想怎么定义。这是新手最容易弄反的地方。如果原始数据是每一列0/1编码(选了=1,没选=0),那就使用二分法;如果原始数据是多选排序题(比如“请选出您最常用的三个渠道,并按使用频率排序”),通常是几列分别记录第1选择、第2选择、第3选择对应的选项编号,这时候就得用分类法。
目前绝大多数问卷平台导出的数据,选项展开后都是0/1编码格式,所以你在实际操作中遇到二分法的概率远大于分类法。但这不代表分类法没用——你如果调查的是“请选出您最常用的3种渠道并排序”这种题目,每一列是一个“第1常用渠道”、下一列是“第2常用渠道”,每列填报的数字代表选项编号,那必须用分类法,而且类别范围必须覆盖所有选项的最小编号和最大编号(比如选项编号从1到6,范围就填1—6)。
2.3 为什么用多重响应集而不是直接合并变量
可能有人会想:既然这5列是一道题,我能不能把它们合并成一列再分析?表面上看好像可行,但实际操作下来问题很多。
合并变量意味着每个受访者只能保留一个值,多选信息就丢了。比如受访者同时选了Q3_1和Q3_4,你合并的时候到底保留哪个?保留任意一个都意味着丢失另一个选项的信息,而多选题的价值恰恰在于“同时选择”的组合信息。多重响应集则完全没有这个问题,它只是给这组变量做了一层“声明”,底层的多列数据一个都不动,分析时SPSS自动按照“选项维度”而不是“受访者维度”来统计。
另外,合并变量在SAS或R里面你还可以用reshape等操作来转换数据结构,但在SPSS图形界面里做这种长宽变换其实很绕,还容易出错。多重响应集是SPSS原生支持的分析机制,省时省力,输出格式也是专门的格式——表头会有“响应”和“个案百分比”两个维度的统计,这种输出是手动合并变量后做出来的普通频率表无法直接生成的。所以只要你不是有特别特殊的需求,直接按SPSS的思路走就对了。
3. 数据准备与编码规范:拿到原始数据后最先要做的事
3.1 原始数据导入前的清洗思路
很多人拿到Excel数据后,第一个动作就是直接导入SPSS,这个习惯可以,但不够好。多选题的数据在清洗阶段就需要特别关注。
需要优先检查的,是Excel每一列的表头是否符合SPSS变量命名规则。SPSS变量名默认不允许以数字开头,不允许包含特殊符号(比如“&”“%”),不允许超过64个字节。而问卷平台导出的表头往往是“Q3_1_网络广告”这种混合格式,直接导入后SPSS会自动改造成合法的变量名,但改名后的变量名可能长得很奇怪,影响后续操作。我一般的做法是:先在Excel里把表头改成干净的“Q3_1”“Q3_2”这种约定俗成的命名方式,再导入SPSS,然后在SPSS变量视图里手动补充变量标签(比如Q3_1的标签填“渠道-网络广告”)。
这里有个细节容易被忽略:多选题的选项值标签,赋值1代表“选中”,0代表“未选中”。如果你给值标签设成“1=是,0=否”,那么做多重响应集频率分析时,SPSS默认只统计值为1的记录,0值不参与分析。这个机制其实也解释了为什么多重响应集的频率表里选项的“响应”列加起来可能是总的人次而不是总人数。
为什么要强调这一步?因为我在实际项目里接过不止一次的“脏数据”情况:某道多选题在Excel里没有统一编码,有的单元格是1,有的单元格是空值,有的单元格填了“TRUE”。这类数据你要是直接丢进SPSS做多重响应集,结果就是要么SPSS识别不了这些值,要么统计分析时出现大量缺失值,最后分析出来的百分比完全是错的。所以在导入之前,把多选题相关的所有列统一检查一遍,确保编码只有0和1(或者只有空和1,看你的设定),这件事花不了几分钟,但能省掉后面一大串返工时间。
3.2 变量标签和值标签的正确设置
进入SPSS之后,先切到“变量视图”,把每个多选题变量的“标签”字段填清楚。这一步千万不能省。你可别小看这个标签,后续做多重响应集定义的时候,对话框里显示的是变量名还是变量标签,直接影响你能不能一眼选中正确的那几列。变量名叫Q3_1、Q3_2、Q3_3还好说,如果变量名是Q3_1、Q3_2、Q3_3、Q3_4、Q3_5,而且整个数据文件里还有其他题目的变量也带下划线编号,没有标签的话你很容易选错列。
值标签的设置也有讲究。对于二分法多选题,给“1”赋值“选中”,给“0”赋值“未选中”。有些同学习惯把“0”留空,只对“1”赋值“选中”,这种做法在做多重响应集的时候没问题,但如果你想对这列变量单独做交叉表或者频率表检查数据质量,空值的含义就会变得模糊——到底是“受访者没看到这个选项”还是“受访者看到了但没选”,说不清楚。所以我强烈建议:录入阶段就把0和1都赋好标签,这列变量才具备完整的问卷语义。
4. 核心操作全流程:定义多选题、生成频率表、做交叉分析
4.1 定义多重响应集的5个步骤
这一步是整篇文章的核心。操作路径是:菜单栏选择“分析”—“多重响应”—“定义变量集”。如果你用的是新版本的SPSS,菜单可能变成“分析”—“表”—“多重响应集”,或者直接在“分析”—“多重响应”下就能看到,找一下就行。
进入对话框后,你会看到左侧是当前数据文件里所有变量的列表,右侧有几个区域需要填。
第一步,把属于同一道多选题的所有变量全部选中,点中间的箭头按钮,加入“集合中的变量”框。注意这一步要一个不落,漏选一个变量,分析结果就会少一个选项。
第二步,选择编码方式。如果每个变量是0/1二分编码,选择“二分法”,并在“计数值”输入框中填“1”。如果你的数据是用分类法编码(比如多选排序题),选择“分类法”,并把“范围”设为该组变量的最小值和最大值。
第三步,在“集合名称”里给这个多重响应集起个名字。这个名字会出现在后续分析结果的表格中,建议用有意义的命名,比如Channels或Q3。注意SPSS对集合名称有要求,最好8个字符以内,不能用中文,不能用空格。
第四步,在“集合标签”里填上中文说明,比如“获取信息的渠道”。这个标签会显示在输出表格的顶部区域,方便你自己识别。
第五步,点击“添加”按钮,把定义好的集合放进右侧“多重响应集”列表里。确认无误后点“关闭”。到这一步,SPSS已经把这一组变量“捆绑”成了一个分析单元,后续做频率分析、交叉分析都能直接调用。
定义完多重响应集之后,很多人会疑惑:数据视图里的变量有没有变化?答案是没有任何变化——定义集合不会修改原始数据,不会生成新的变量,也不会改变任何单元格的值。它只是把一个“分析逻辑”保存在SPSS内部。这意味着你做完分析关闭数据文件之后,如果不保存对数据文件本身的修改,下次打开数据文件,多重响应集的定义会丢失,需要重新定义一遍。
4.2 用频率表验证多选题定义的正确性
定义完多重响应集之后,先不要急着做交叉表,先做一次频率分析验证一下定义是否正确。
操作路径:“分析”—“多重响应”—“频率”。在对话框左侧找到你刚定义的多重响应集,选入右侧“表格”框,点击确定。
输出结果会是一张专门的多选题频率表,包含两部分统计量:“响应”栏下面有N和百分比,分别代表每个选项被选中的次数和占所有响应总数的比例;“个案百分比”栏下面的百分比则代表选择该选项的人数占受访者总人数的比例。
读懂这张表是理解多选题分析的关键。
假设有200个受访者,5个选项的响应次数分别是100、80、60、40、20,那总响应次数是300。“响应”栏的百分比分别是100/300=33.3%、80/300=26.7%……这些百分比加起来等于100%,因为分母是总响应次数。但“个案百分比”栏的百分比,100/200=50%、80/200=40%……这一栏加起来可不是100%,因为有些受访者选了多个选项,被重复计算了。
这个输出逻辑很多人第一次看到的时候会懵。其实换个角度想就明白了:响应次数维度是从“选项被选了几次”去看,所以总数是所有选项的被选次数之和;个案百分比是从“有多少人选择了这个选项”去看,所以每个选项的分母都是总人数。多选题频率表的“个案百分比”列总和超过100%是正常的,不用慌张,这恰恰说明受访者做了多选。
4.3 多选题与单选题的交叉表分析
如果说频率表是多选题分析的基础,那交叉表就是把多选题价值放大的关键操作。打个比方,单选题分析回答的是“是什么”的问题,交叉表分析回答的是“谁更倾向于什么”的问题。比如你想知道不同年龄段的人群在获取信息的渠道上有没有差异,就需要做多选题与年龄的交叉表。
操作路径:“分析”—“多重响应”—“交叉表”。进入对话框后,把多重响应集选入“行”框,把分组变量(比如年龄段)选入“列”框。
这里有一个SPSS细节:把分组变量选入“列”框后,还需要点击“定义范围”按钮,填写该分组变量的最小值和最大值。比如年龄段变量编码是1到4,就填1和4。这个范围如果不填,SPSS会弹出错误提示,交叉表无法生成。
点击确定后,输出的是多选题专用的交叉表。这张表以“年龄段”为列,以“渠道”的每个选项为行,单元格里显示的是选择该渠道的人数,以及行百分比、列百分比、总百分比三种百分比。看结果时通常会关注两种百分比:一是每个年龄段内部各渠道的选择占比(行百分比),可以看该年龄段的主要渠道偏好;二是某个渠道在各年龄段中的选择占比(列百分比),可以看哪个年龄段的人群对特定渠道更偏爱。
比如结果如果显示“18-25岁人群中社交媒体渠道的行百分比是70%”,而“46岁以上人群只有20%”,那说明社交媒体渠道的受众明显偏年轻化——这种结论比单做频率表有意义得多,也是交叉表分析的核心价值所在。
4.4 多选题结果如何整合进正式报告
分析做完之后,输出结果默认会出现在SPSS的“查看器”窗口里。很多人做分析是一回事,写报告又是另一回事——分析完不知道如何把表格整理成报告里能用的形式,结果又去手工抄数据。
这里提供两个实用方案。
第一个方案是直接导出视图。在查看器窗口里选中需要的表格,右键选择“复制”,可以直接粘贴到Word或Excel里,表格格式基本可以保留。用这个方法时注意先双击表格,再选中特定单元格,这样可以调整行高列宽,避免导出后表格被截断。
第二个方案是手动整理成三线表。SPSS默认表格样式是带网格线的,学术报告或正式汇报材料通常用三线表更美观。在查看器里双击表格进入编辑状态,右键选择“表格外观”,挑一个适合自己的表格样式,或者手动把边框设置成顶线、栏目线、底线三个横线即可。整理完成后,把“响应”和“个案百分比”两列都保留,因为结论的论证需要这两组数据的配合。
5. 实操中的高频问题与排查技巧
这部分内容完全来自我实际做问卷分析项目时踩过的坑。每一个问题都是真实发生过的,排查方式是我亲测有效的。
5.1 SPSS与Excel往返导入导致的数据编码变化
最大的坑往往出现在数据来源环节。比如一份问卷数据最初是Excel文件,某道多选题的单元格里存的是“TRUE”和“FALSE”逻辑值,导入SPSS后,这些逻辑值可能会被转换为1和0。表面上看没什么问题,但实际上SPSS对这两个值的变量类型认定是数值型,你能正常做多重响应集定义——但如果你在Excel里原本存的是文本“是”和“否”,导入后SPSS会把它们识别为字符串变量。字符串变量是不能直接用于多重响应集定义的,即使变量里的内容1和0也是如此。你会看到变量类型是“字符串”,而不是“数值”。
这个问题的排查方法是:导入后先看变量视图,找出多选题相关变量的“类型”列。如果是字符串,需要先用“重新编码为不同变量”把字符串1和0转成数值1和0。转完之后记得把新变量的测量级别设为“名义”或“标度”,并贴上值标签。
另外,我建议各位在使用Excel完成问卷数据整理后,千万不要用“另存为”把文件反复在SPSS和Excel之间倒腾。SPSS本身能直接打开Excel格式的文件,倒腾多了容易出现编码漂移的隐蔽问题。
5.2 多重响应集定义后无法分析的边界情况
多重响应集定义完成后,有个高频问题:定义好集合,但在“频率”或“交叉表”对话框中找不到这个集合。大部分情况下,是因为你把定义好的集合放在了左侧但没点中间的箭头按钮把它移入右侧。但还有一种更隐蔽的情况:多重响应集的定义是在旧版SPSS中创建并保存的数据集,换了新版软件打开后,集合并不能自动恢复,需要重新定义。
另外还有个情况值得注意——如果你定义了多个多重响应集,而且它们之间共享了某些变量,比如Q3_1同时被放进“渠道”集合和“所有多选题集合”里,SPSS运行交叉表时可能出现冲突性错误或输出结果混乱。我建议一个变量只归属于一个多重响应集,除非你清楚自己在做什么。
5.3 为什么个案数不一致:缺失值和受访者跳过的影响
做多重响应集频率分析时,输出的表格底部会有一行“总计”行,旁边有“个案数”和“百分比”两列。这里有两个总计数值要分清:一个是“响应总计”(所有选项被选次数之和),一个是“个案总计”(有效受访者人数)。如果个案总计明显少于问卷中的总样本量,那就说明有一部分受访者在这道多选题上完全没有选择任何选项,他们在所有选项变量上的取值都是0,被SPSS视为缺失个案并未参与分析。
很多人第一次看到这个数字差时会担心数据丢了。实际上不是丢了,而是这些受访者跳过了这道题。这种情况在问卷设计合理的情况下很正常,比如这一题是针对特定人群的过滤题,那些不适用的人群跳过了。如果应该全部作答的题目却出现了大量空白,那你要回头检查是不是问卷逻辑设置出了问题,或者数据清洗过程中误删了行。
5.4 频率表百分比之和不是100%的恐慌
这个问题值得单独拿出来讲清楚。用多重响应集定义的频率表,通常包含两部分百分比:响应百分比和个案百分比。响应百分比加总接近100%,个案百分比加总远超100%。
如果你的结果里响应百分比加总不是100%,有两种可能:一是格式设置问题,SPSS输出默认保留一位小数,四舍五入导致合计是99.9%或100.1%,这是显示精度问题,不影响结论;二是你在定义多重响应集时“计数值”填错了,比如你的编码明明是1表示选中,却把计数值填成0,SPSS统计的就是另一组值了,输出的表格看起来会很奇怪,比例关系完全不对。
我遇到过一位同学,他定义的计数值填了缺失值对应的值(比如99),结果所有选项的响应次数都极低,还跑来找我排查。我让他打开数据视图一查,发现选中值为1、未选为0,计数值却填了99——定义条件写反了,自然全错。所以定义完之后,先跑一次简单的频率分析验证结果是否符合预期,这一步永远是保护伞。
5.5 常见问题速查表
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 多重响应集定义后找不到集合 | 未点“添加”按钮或未移入目标框 | 检查定义对话框的“多重响应集”列表,确认集合已添加 |
| 频率表响应百分比合计不是100% | 小数位四舍五入或计数值配置错误 | 调整输出格式保留小数位,核对计数值是否与编码一致 |
| 交叉表报错无法运行 | 分组变量的取值范围未定义 | 在交叉表对话框中点击“定义范围”,填入该变量的最小和最大值 |
| 个案总计远小于样本总量 | 部分受访者跳过了该多选题 | 检查原始数据该校验逻辑,确认是否存在大量空值 |
| 变量无法选入多重响应集 | 变量类型为字符串 | 先用重新编码功能将字符串转换为数值变量 |
| 输出表格下载后格式错乱 | 表格直接复制到Word时行高列宽失真 | 双击表格进入编辑状态调整行列,或使用表格外观模板 |
6. 进阶思路:多选题的频数统计、降维分析与展示技巧
6.1 多选题结果在学术论文里的报告规范
学术论文里报告多选题结果时,通常采用的是“响应次数+响应百分比+个案百分比”三列联报的思路。有些期刊要求只报告个案百分比,有些要求两套百分比都报告。最稳妥的方式是:在正文中主要引用个案百分比(因为它更直观,直接表达选择某个选项的人占比),同时在表格中附上响应次数,让读者能自行计算响应百分比。
这里还有一个小细节:论文表格里多选题的结果,需要脚注说明数据是多选题,个案百分比合计可超过100%。很多外审专家会看这个细节,如果表格里百分比相加超过100%却没有说明,审稿人会认为统计错误。提前在表格注释里写明“此题是多选题,各选项百分比之和不等于100%”,就免去了这个麻烦。
6.2 用多重响应集对接其他SPSS功能的高级玩法
多重响应集定义完成后,除了频率表和交叉表,还有一个容易被忽视的功能点:在“定制表”模块中,也可以把多重响应集拖入表格区域进行分析。SPSS的“定制表”功能比“多重响应”菜单提供更灵活的表格格式控制,比如可以自定义百分比显示方式、统计量类型,以及表格样式。
除此之外,多重响应集的分析结果也可以写入Syntax语法。如果后续每次更新数据都需要重新跑同一套分析,用Syntax语法文件来批量执行定义和分析操作,能省下大量重复点击菜单的时间。语法核心就是两行:定义一个集合用MULT RESPONSE GROUPS,调用它写进来之后用多重响应交叉表语法输出。具体语法格式因版本而异,但你在执行完一次菜单操作后,SPSS查看器的“日志”里能看到对应的语法语句,复制下来保存,下次直接用就行。
6.3 多选题结果的可视化展示方式
SPSS自带的多选题图表功能不算丰富,在“多重响应”菜单下没有直接的图形输出选项。想把结果变成柱状图或饼图,常见做法有两种。
第一种是把频率表的结果复制到Excel里自己画图。案例如下:把响应次数转为柱状图,每个选项一根柱子,比较直观;如果想要“同时选择”信息更丰富的展示,可以做一条折线,纵轴是个案百分比,横轴是选项,这种图适合展示多个选项的接受度差异。
第二种是用SPSS的图形画布模块,但需要先把多选题数据按“长格式”重新整理——每个受访者的每个选项选择成为一行数据,再用分类变量作为分组绘图。这种做法在数据量大的时候稍微复杂,但画出来的图能做更灵活的展示。
还有一个展示技巧值得提:多选题交叉表的分析结果画成“分组柱状图”或“堆叠柱状图”效果很好。比如不同年龄组对应不同渠道的选择率,分组柱状图能一眼看出组间差异,这种图做报告的时候比放一张大表格直观得多。
7. 个人实操心得:多选题数据的质量决定分析质量
走到最后,我想分享几个自己经常做多选题分析时遵循的习惯。这些不是教科书上的铁律,是我在真实项目里反复磨合出来觉得靠谱的做法。
第一个习惯:做任何多选题分析之前,先做一个完整的缺失值扫描。不是只盯着多选题那几列,而是把整个数据文件的缺失值分布跑一遍。很多时候问卷平台导出的数据里,受访者中途退出或跳题,会造成多选题后面一大批空值。如果不提前看清,分析时那些空值会影响个案总计,导致最后的汇总数据和你的预期差一大截。
第二个习惯:每次定义完多重响应集,我都强迫自己先跑一次频率分析再做其他操作。这一步看起来多余,但它的价值在于:它能在五分钟内帮你验证变量是否选对、计数值是否填对、选项是否有意外缺失。如果等到交叉表做完了才发现频率表的输出有问题,那返工的代价就太大了。
第三个习惯是管理好集合名称。在数据文件里同时有十几个多选题的情况下,集合名称的混乱会让你在分析时抓狂。我一般用题目编号作为集合名称,比如Q3、Q5、Q7,并在集合标签里写上题目的完整内容和适用条件。这样在定义交叉表时扫一眼就能确定选的是哪个集合,而不是靠猜。
最后说一个扩展方向。前面的内容主要是围绕二分法展开的,因为这是当前问卷平台最主流的导出格式。但如果你的数据是多选排序题,一定要去掌握分类法多重响应集的定义方式。分类法的操作流程和二分法很像,但计数值的设定逻辑完全不同。掌握了两种编码方式之后,你在SPSS里处理问卷数据的能力才算完整。以后遇到任何形式的多选题导入,你都能得心应手,不用临时翻教程。