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

嵌套数据集用map调用t_test报错,请求解决并实现指定检验需求

解决rstatix::t_test结合nest+map时的terms错误并实现分组自定义检验

错误原因分析

你遇到的no terms component nor attribute错误,本质是在嵌套数据中调用rstatix::t_test时参数传递的上下文不对——单独用map仅传递数据集时,t_test无法正确解析公式的变量关联,或是没有匹配到对应分组的检验参数。

解决方案步骤

我们需要将分组与对应的检验方向(hyp向量)绑定,再用map2同时传递嵌套数据集和检验参数,确保每个分组的t检验都能正确应用参考组和自定义的alternative参数。

1. 模拟示例数据集(若你已有真实数据可直接替换)

library(tidyverse)
library(rstatix)

set.seed(123)
df <- tibble(
  grp = rep(c("A", "B", "C", "D"), each = 20),
  gender = rep(c("Men", "Women"), each = 10, times = 4),
  value = c(
    rnorm(10, 25, 3), rnorm(10, 22, 3),  # A组:Men均值更高
    rnorm(10, 26, 3), rnorm(10, 23, 3),  # B组:Men均值更高
    rnorm(10, 20, 3), rnorm(10, 23, 3),  # C组:Men均值更低
    rnorm(10, 27, 3), rnorm(10, 24, 3)   # D组:Men均值更高
  )
)

# 定义各分组对应的检验方向
hyp <- c(rep('greater',2), 'less', 'greater')

2. 绑定分组与检验参数,嵌套数据并执行检验

# 创建分组与检验方向的对应表
grp_hyp <- tibble(grp = unique(df$grp), hyp = hyp)

# 嵌套数据并合并检验参数
df_nested <- df %>%
  group_by(grp) %>%
  nest() %>%
  left_join(grp_hyp, by = "grp")

# 用map2同时传递数据集和检验参数,执行t检验
df_results <- df_nested %>%
  mutate(
    test = map2(
      .x = data,  # 每个分组的嵌套数据集
      .y = hyp,   # 对应分组的检验方向
      ~ t_test(.x, formula = value ~ gender, ref.group = "Women", alternative = .y)
    )
  ) %>%
  unnest(test) %>%
  select(-data)  # 移除冗余的嵌套数据列

# 查看最终结果
df_results

3. 结果说明

  • 每个分组(grp)都会以Women为参考组,执行对应hyp指定方向的t检验
  • 结果包含t值、p值、置信区间等rstatix默认输出的统计量,可直接用于后续分析或可视化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:23:15