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

R语言:被试内设计下双向重复测量稳健ANOVA技术求助

被试内设计的稳健双向ANOVA实现方案

以下针对你的被试内设计(自变量:condition[A/B/C]、side[左/右];因变量:value_1、value_2),提供稳健ANOVA的具体代码实现,解决数据格式匹配问题:

一、推荐使用长格式数据直接分析(更高效)

如果数据是长格式(每行对应一个被试的一个试次,包含id、condition、side、value_1、value_2),无需转宽,直接用WRS2包的rm_anova()函数处理,该函数原生支持多因素被试内的稳健检验:

代码示例

# 加载依赖包
library(WRS2)
library(dplyr)

# 针对value_1分析主效应与交互效应
result_v1 <- rm_anova(
  formula = value_1 ~ condition * side | id,
  data = your_long_data,
  robust = TRUE
)
print(result_v1)

# 针对value_2重复上述分析
result_v2 <- rm_anova(
  formula = value_2 ~ condition * side | id,
  data = your_long_data,
  robust = TRUE
)
print(result_v2)

说明

  • 公式中condition * side表示包含两个自变量的主效应及交互效应;| id指定被试id为重复测量的分组变量。
  • 输出结果会返回各效应的稳健统计量(如调整后的F值、p值),直接判断显著性。

二、若已转宽格式数据的处理方案

如果已将数据转为宽格式(每个condition+side组合对应一列,如A_left_v1、A_right_v1等),使用WRS2::rmanova()函数,需手动匹配因素水平与列的对应关系:

代码示例

library(WRS2)

# 提取value_1对应的所有试次列,保留被试id
data_v1_wide <- your_wide_data %>% select(id, contains("_v1"))

# 构建自变量的水平组合设计矩阵(需与宽列的顺序严格对应)
design_matrix <- expand.grid(
  condition = c("A", "B", "C"),
  side = c("左", "右")
)

# 运行稳健重复测量ANOVA
result_v1_wide <- rmanova(
  y = data_v1_wide[, -1],  # 所有试次的value_1数据
  id = data_v1_wide$id,    # 被试id
  design = design_matrix   # 自变量水平组合
)
print(result_v1_wide)

# 对value_2重复上述步骤,替换为contains("_v2")即可

说明

  • 宽列的命名需与design_matrix的水平组合顺序一致(如先A左、A右,再B左、B右等),否则会导致因素匹配错误。
  • 随机化平衡的设计不会影响分析,只要每个被试的所有条件组合数据完整即可。

三、事后检验(若交互效应显著)

如果交互效应显著,可使用rm_contrast()做特定条件组合的两两比较:

# 针对value_1,比较condition在side=左时的差异
contrast_v1 <- rm_contrast(
  formula = value_1 ~ condition * side | id,
  data = your_long_data,
  contrast = list(condition = c(1, -1, 0)),  # 对比A与B
  condition = list(side = "左")
)
print(contrast_v1)

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:22:48