如何移除调研中所有问题答案完全一致(直线作答)的被试数据
李克特量表直线作答无效被试的识别与移除方法
你的思路是完全可行的,统计单名被试所有量表题作答的唯一值数量是识别直线作答最直接有效的方案。
核心判定逻辑
直线作答的本质特征是同一被试在全部量表题上的作答完全一致,因此只要某被试的所有量表题作答的唯一值数量为1,即可判定为直线作答无效样本。
操作步骤(适配你给出的数据集结构)
你的数据集包含非量表列Participant(被试ID)和量表列A_1到B_3,操作可按以下流程执行:
- 第一步:提取所有量表题列,排除不需要参与计算的被试ID列
- 第二步:逐行计算选中量表列的唯一作答值数量
- 第三步:过滤掉唯一值数量等于1的行,剩余即为有效作答数据
常用代码实现
R(tidyverse 生态)
library(tidyverse) # raw_data 为你的原始数据集 clean_data <- raw_data %>% rowwise() %>% # 计算A_1到B_3所有列的唯一值数量 mutate(unique_ans_cnt = n_distinct(c_across(A_1:B_3))) %>% ungroup() %>% # 仅保留非直线作答的有效被试 filter(unique_ans_cnt > 1)
Python(Pandas)
import pandas as pd # raw_data 为你的原始数据集 scale_columns = [col for col in raw_data.columns if col != "Participant"] # 筛选出唯一值数量大于1的行 clean_data = raw_data[raw_data[scale_columns].nunique(axis=1) > 1].copy()
优化建议
- 若你的量表题量较大,可调整判定阈值,比如将「唯一值数量≤2」或「连续10道题作答一致」作为判定标准,适配不同研究场景的严谨度要求
- 可以结合作答时长、测谎题作答结果等维度共同筛选无效样本,进一步提升数据质量
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

