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

R语言中轴对数变换前箱线图均值位置异常问题求助

解决对数刻度箱线图均值点位置异常问题

你的问题核心是算术均值与几何均值的混淆:当前代码计算的是原始数据的算术均值(16.2),但数据中的极端大值(如340)会大幅拉高这个值,导致它在对数刻度上的位置偏离箱线图的集中区域;而你预期的应该是对数转换后数据的均值(即几何均值),它更贴合对数尺度下的中心趋势。

修正方案

修改stat_summary的fun参数,直接计算几何均值(先对数据取log10,计算均值后再转换回原始尺度):

df %>%
  ggplot(aes(x = 0, y = value)) +
  geom_boxplot(width = .12, outlier.color = NA) +
  # 计算几何均值作为均值点
  stat_summary(fun = function(x) 10^mean(log10(x)), 
               geom="point", shape=21, size=3, color="black", fill="grey") +
  labs(
    x = "",
    y = "Particle counts (P/kg)"
  ) +
  scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x), 
                labels = trans_format("log10", math_format(10^.x)))

原理说明

  • 原始数据的算术均值:mean(df$value) ≈ 16.2,对应对数刻度的log10(16.2)≈1.2,这个值因极端大值被拉高,远离多数数据的集中区域。
  • 几何均值:10^mean(log10(df$value))≈0.44,它是对数转换后数据的均值还原值,更能反映对数尺度下数据的中心位置,与箱线图的分位数区域匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:18:32