嵌套数据集用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
相关产品推荐
相关产品推荐

