You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IAT数据处理求助:按指定规则筛选合格被试(R语言)

IAT被试筛选的R代码实现需求

我正在开展IAT(内隐联想测验)研究,需遵循Nosek等人的标准流程与计分算法筛选被试。参考脚本已生成P_300(<300ms反应占比)、P_error(错误率)字段,test字段标记练习块(1)与关键块(2)。已完成以下R语言初步数据处理代码(注:当前代码移除了test字段,后续筛选需重新关联该字段以区分练习块与关键块):

library(tidyverse)
# libraries ----
library(tidyverse)

# load raw data ----
iat_raw <- read.delim("data/iat_raw.xlsx",
  header = TRUE,
  sep = "\t",
  fill = TRUE,
  colClasses = rep("numeric", 7)
)

# flag and summarise data ----
iat_1 <- iat_raw %>%
  select(-c(order, test)) %>%
  mutate(
    lat300 = if_else(latency < 300, 1, 0),
    lat3k = if_else(latency > 3000, 1, 0),
    lat400 = if_else(latency < 400, 1, 0),
    lat10k = if_else(latency > 10000, 1, 0)
  ) %>%
  group_by(id, blocknum) %>%
  summarise(
    # mean standraddeviation for block latencies including all trials 
    M_latency = round(mean(latency),0),
    SD_latency = round(sd(latency),3),
    M_correct = round(mean(correct),3),
    SD_correct = round(sd(correct),3),
    # trial counts
    N_trials = n(),
    N_correct = sum(correct),
    N_error = n() - sum(correct),
    N_300 = sum(lat300),
    N_3k = sum(lat3k),
    N_400 = sum(lat400),
    N_10k = sum(lat10k),
    # percentages of trial counts
    # P_correct = round(N_correct / n(), 3), # the same like M_correct
    P_error = round(N_error / n(), 3),
    P_300 = round(N_300 / n(), 3),
    P_3k = round(N_3k / n(), 3),
    P_400 = round(N_400 / n(), 3),
    P_10k = round(N_300 / n(), 3)
  ) %>%
  ungroup() %>%
  arrange()

现需实现以下7条不合格被试排除规则(需排除整个不合格被试而非仅标记块),重点解决「任意块」及「跨块汇总」的筛选逻辑:

  • 总测验中<300ms反应占比超10%;
  • 任意关键块中<300ms反应占比超25%;
  • 任意练习块中<300ms反应占比超35%;
  • 所有关键块总错误率超30%;
  • 任意关键块错误率超40%;
  • 所有练习块总错误率超40%;
  • 任意练习块错误率超50%。

请协助完成后续代码编写。

内容的提问来源于stack exchange,提问作者marsellus w.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:05:21