第 23 课:数据清洗
🎯 核心实操目标
通关要求:执行数据清洗标准五步——剔除无效样本 / 处理缺失值 / 识别异常值 / 反向题反转(高频踩坑!)/ 计算量表总分。本课你将用 Case A 数据集(N=540)实际跑通完整清洗流程,最终得到约 500 行有效样本,为后续统计分析奠定基础。
📋 课前准备(5 分钟自检)
工具/账号
- [ ] Jamovi 2.5+ 或 SPSS 29+(推荐 Jamovi,免费 + 操作直观)
- [ ] Excel / WPS(辅助手动检查)
数据/素材
- [ ] Case A 数据集:case_A_questionnaire.csv(540 行 × 33 列)
- [ ] Case A 数据字典:case_A_data_dictionary.md(明确反向题位置)
应急通道
- Jamovi 安装失败 → 用 SPSS 或 JASP 替代
- 数据量大卡顿 → 把 Duration_Min 字段先排序,剔除明显异常后再做后续
场景痛点破冰:清洗不当让你白做一场
"数据回收完,新手最容易犯的三个致命错误: ① 反向题忘记反转 → Cronbach's α 从 0.85 直接掉到 0.4 ② 缺失值没处理 → SPSS 把 99 当成 99 分计入均值 ③ 不剔除无效问卷 → 一群乱填的 30 秒满分党拉高方差,相关系数被噪声稀释
本课的目标只有一个:让你的数据从 540 行毛坯变成 500 行可分析的精装版。"
🗺️ 架构重组:数据清洗五步法
🚀 拆解实战 A:Step 1 剔除无效样本
打开 Jamovi → 导入 case_A_questionnaire.csv(应有 540 行)。
剔除规则:
- Duration_Min < 3 分钟(27 道题不可能 3 分钟答完)
- 连续 10+ 题选同一选项("满分党"或"乱填党")
- 反向题与正向题完全同向(不用心填答)
Jamovi 操作:
- Data 标签 → Filters → 添加过滤器:
Duration_Min > 3 - 数据样本量从 540 → 应该剩 505 左右
🚀 拆解实战 B:Step 2 处理缺失值
| 策略 | 适用 | 操作 |
|---|---|---|
| 列表删除(推荐) | 缺失 < 5% 时 | 整行删除任何变量缺失的样本 |
| 均值填补 | 缺失 5–10% 且 MCAR | 用该变量均值替换 |
| 多重插补 MICE | 缺失 10–20% 且非 MCAR | 用 R/Python mice 包 |
| 整行删除 | 缺失 > 20% | 该行不可救药 |
Jamovi 中的操作:
- Data 标签 → 右键变量 → Setup → Missing values 中输入 99(如果用 99 标记缺失)
Case A 的实际处理
Case A 数据集本身只有 ~3% 随机缺失,可用列表删除法(删任何含缺失的行)。 预期剩余约 500 行。
🚀 拆解实战 C:Step 3 识别异常值
单变量异常(Z-score 法)
Z = (X - 均值) / 标准差
|Z| > 3 → 异常值Jamovi 操作:
- Exploration → Descriptives → 选所有量表题 → 勾选 Z scores → 检查输出
多变量异常(Mahalanobis 距离)
适用于回归分析前,检测整个题项模式异常的离群样本。 Jamovi 进阶轨可在 Regression 分析后查看。
🚀 拆解实战 D:⚠️ Step 4 反向题反转(高频踩坑!)
⚠️ 这一步出错会让所有后续分析报废
反向题不反转 → Cronbach's α 大幅下降(从 .85 → .4) 反向题反转两次 → 一切倒置 反转操作只做一次!
Case A 的反向题(3 道)
根据数据字典:
Anxiety_4_R(认知焦虑反向)Strategy_8_R(学习策略反向)Efficacy_7_R(自我效能反向)
Jamovi 操作(Compute 新变量)
Data 标签 → Compute → 新变量名: Anxiety_4_RECODED
Formula: 6 - Anxiety_4_R
(对 Strategy_8_R 和 Efficacy_7_R 重复同样操作)反转验证
原值 1 → 反转为 5
原值 2 → 反转为 4
原值 3 → 反转为 3
原值 4 → 反转为 2
原值 5 → 反转为 1验证方法:检查反转后变量与原维度其他题项的相关——应该都是正相关 +.3 以上。
🚀 拆解实战 E:Step 5 计算量表总分/均分
把同维度的题项加总(或求均值):
Anxiety_Total = Anxiety_1 + Anxiety_2 + Anxiety_3 + Anxiety_4_RECODED +
Anxiety_5 + ... + Anxiety_12
Anxiety_Mean = Anxiety_Total / 12
(同样对 Strategy 和 Efficacy 做)💡 总分还是均分?
- 总分:方便与文献对比(如果文献用总分报告)
- 均分:保持原量表的 1-5 范围,跨研究可比性强
- 学术推荐用均分——M=3.21 比 "总分 38.5" 更有意义
🚀 拆解实战 F:完整清洗 Prompt(AI 辅助)
markdown
【Role】资深 Jamovi 数据清洗专家。
【任务】我刚导入 case_A_questionnaire.csv (540 行 × 33 列)。
请逐步指导我完成完整数据清洗,每步给出 Jamovi 具体菜单路径和参数:
1. 剔除 Duration_Min < 3 的样本
2. 列表删除任何核心量表题缺失的行
3. 用 Z-score 识别 |Z|>3 的异常值,标记但暂不删除
4. 反转 Anxiety_4_R / Strategy_8_R / Efficacy_7_R 三个反向题
(公式: 6 - 原值)
5. 计算三个量表的均分:Anxiety_Mean / Strategy_Mean / Efficacy_Mean
6. 给出最终清洗后样本量和各变量描述统计
【约束】
- 严禁直接给我数字结果(我要自己跑出来验证)
- 严禁让我跳过任何步骤
- 每步操作完后告诉我"预期看到什么"以便我验证🚀 拆解实战 G:清洗日志(必做)
每次清洗都要记录完整日志,方便未来复现 + 应对盲审追问:
| 步骤 | 操作 | 删除/修改数 | 剩余 | 备注 |
|---|---|---|---|---|
| 初始 | 导入数据 | — | 540 | 原始数据 |
| Step 1 | 剔除 Duration < 3 min | -35 | 505 | 35 个低质问卷 |
| Step 2 | 列表删除缺失 | -5 | 500 | 含缺失的行 |
| Step 3 | 异常值识别 | 0(标记不删) | 500 | 8 个 Z>3 但保留 |
| Step 4 | 反向题反转 | — | 500 | 3 道反向题完成 |
| Step 5 | 计算均分 | — | 500 | 三个量表均分生成 |
| 终态 | — | -40 | 500 | 可用于分析 |
📦 本课交付物(提交给 AI 初审/讲师抽检)
- [ ] 清洗日志:完整 5 步操作的删除人数 + 剩余样本量
- [ ] 反向题反转验证:截图证明 Anxiety_4_RECODED 与其他焦虑题正相关
- [ ] 清洗后描述统计:3 个均分变量的均值/SD/最小值/最大值
- [ ] 保存清洗后数据:导出为
case_A_cleaned.csv用于下一课
🏁 小结与自测 (Milestone Checklist)
- [ ] 我执行了完整 5 步清洗流程,剩余样本约 500 行
- [ ] 反向题反转正确执行:Anxiety_4_R / Strategy_8_R / Efficacy_7_R 三个都做了 6-X 反转
- [ ] 反转后我验证了与其他同维度题项正相关(避免反转错误)
- [ ] 我的清洗日志详细记录每步的删除人数与原因
- [ ] 我清楚反向题不反转会让 Cronbach's α 大幅下降
- [ ] 我用均分而非总分(跨研究可比性强)
- [ ] 清洗后数据已保存为单独文件,原始数据保留备份
