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

如何修改R的summary函数,使其计算几何均值而非默认算术均值

如何让R的summary函数基于几何均值生成汇总统计?

你当前使用R的summary()函数对TitanicSurvival数据集做分组汇总统计,代码如下:

data("TitanicSurvival")
s <- summary(age ~ sex + survived, TitanicSurvival)
plot(s, main ='', subtitles=FALSE)

默认情况下该函数会计算算术均值,要改为几何均值,可按以下方式实现:

核心前提

几何均值仅适用于正数数据,因此第一步需要过滤掉age字段中的NA、0或负数(TitanicSurvival的age无负数,但存在NA值):

clean_data <- TitanicSurvival[!is.na(TitanicSurvival$age) & TitanicSurvival$age > 0, ]

方法1:基础R实现分组几何均值+自定义绘图

用基础R的aggregate()函数直接计算分组几何均值(几何均值公式为exp(mean(log(x)))),再自行绘制可视化图表:

# 定义几何均值计算函数
geo_mean <- function(x) exp(mean(log(x), na.rm = TRUE))

# 按sex和survived分组计算age的几何均值
grouped_geo_mean <- aggregate(age ~ sex + survived, data = clean_data, FUN = geo_mean)
print(grouped_geo_mean)

# 绘制类似原summary的分组柱状图
barplot(
  tapply(grouped_geo_mean$age, list(grouped_geo_mean$sex, grouped_geo_mean$survived), identity),
  beside = TRUE,
  col = c("#1f77b4", "#ff7f0e"),
  main = "",
  xlab = "Sex",
  ylab = "Age (Geometric Mean)",
  legend.text = unique(grouped_geo_mean$survived),
  args.legend = list(x = "topright")
)

方法2:用Hmisc包扩展summary函数(支持原plot方法)

如果你希望保留原summary()的输出格式和plot()方法,可以使用Hmisc包的summary.formula函数,它支持自定义统计函数:

# 安装并加载Hmisc包(首次使用需执行安装命令)
# install.packages("Hmisc")
library(Hmisc)

# 传入自定义几何均值函数生成汇总结果
s <- summary(age ~ sex + survived, data = clean_data, fun = geo_mean)
# 绘制可视化图
plot(s, main = "", subtitles = FALSE)

内容的提问来源于stack exchange,提问作者Ahir Bhairav Orai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:30:42