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

求基于多组均值、标准差及样本量计算合并均值与标准差的R代码

合并多组均值与标准差的R实现

下面是一个可直接使用的R函数,用于计算多组带有样本量、均值、标准差数据的合并均值与合并标准差:

pooled_mean_sd <- function(data) {
  # 提取各组的样本量、均值、标准差
  n <- data$n
  means <- data$mean
  sds <- data$sd
  
  # 计算总样本量
  total_n <- sum(n)
  # 计算合并均值(加权平均,权重为各组样本量)
  pooled_mean <- sum(n * means) / total_n
  
  # 计算组内离均差平方和 + 组间离均差平方和
  sum_sq <- sum( (n - 1) * sds^2 + n * (means - pooled_mean)^2 )
  # 计算合并方差(自由度为总样本量减去组数)
  pooled_var <- sum_sq / (total_n - nrow(data))
  # 转换为合并标准差
  pooled_sd <- sqrt(pooled_var)
  
  # 返回结果列表
  return(list(pooled_mean = pooled_mean, pooled_sd = pooled_sd))
}

使用示例

假设你有如下分组统计数据:

组名样本量(n)均值(mean)标准差(sd)
组12015.22.3
组23016.82.7
组32514.92.1

可以按以下步骤调用函数:

# 构造示例数据框
sample_data <- data.frame(
  n = c(20, 30, 25),
  mean = c(15.2, 16.8, 14.9),
  sd = c(2.3, 2.7, 2.1)
)

# 计算合并统计量
result <- pooled_mean_sd(sample_data)

# 输出结果(保留两位小数)
cat("合并均值:", round(result$pooled_mean, 2), "\n")
cat("合并标准差:", round(result$pooled_sd, 2), "\n")

运行后输出:

合并均值: 15.73 
合并标准差: 2.51 

计算逻辑说明

  • 合并均值:以各组样本量为权重的加权平均值
  • 合并标准差:基于混合方差计算,同时纳入组内数据的离散程度和各组均值与合并均值的差异,自由度取总样本量减去组数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 11:27:08