ggplot2中如何为不同年龄分组设置对应标准误的误差棒
差异化分组误差棒实现方法
你现有代码的问题是给所有观测统一使用1.76作为误差计算基数,只需要通过条件判断为不同年龄组匹配对应标准误,再计算误差上下界即可,不需要改动原有数据结构和因子设置逻辑。
修改后的完整代码
library(tidyverse) # 提前加载tidyverse,覆盖tibble、dplyr、forcats相关依赖函数 viz_data_one <- tibble( age_group = c(rep("Young Adult", 4), rep("Older Adult", 4)), MemoryAccuracy = c(32.8, 28.448, 27.672, 27.075, 29.667, 28.944, 27.556, 28.889), reward = rep(c("Self High Value", "Self Low Value", "Other High Value", "Other Low Value"), 2) ) %>% mutate( # 按年龄组匹配对应标准误,若需要用1.94近似老年组值,直接替换1.937即可 se = if_else(age_group == "Young Adult", 1.76, 1.937), upper = MemoryAccuracy + se, lower = MemoryAccuracy - se, reward = as_factor(reward) %>% fct_relevel( "Self High Value", "Self Low Value", "Other High Value", "Other Low Value" ) )
修改点说明
- 移除了tibble初始化时固定写死的
upper、lower计算逻辑,将这部分计算移到后续mutate流程中,方便做分组条件判断 - 新增
se列存储每行对应的标准误值:青年成人组自动赋值1.76,老年成人组自动赋值1.937 - 误差上下界直接调用行对应的
se值计算,自动实现两组误差棒长度差异化 - 原有的奖励条件因子重排逻辑完全保留,不会影响后续绘图的坐标轴顺序
运行
View(viz_data_one)即可直接查看计算结果,确认老年组的误差范围是基于对应标准误计算的。
内容的提问来源于stack exchange,提问作者Tessa
相关产品推荐
相关产品推荐

