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

如何计算分组行方差并生成组内组间方差对比矩阵?

实现分组内与组间组合的方差矩阵

首先设置随机种子保证结果可复现,定义你的数据框:

set.seed(123)
data <- data.frame(group = c('A', 'A', 'B', 'C', 'C'),
                   X1 = rnorm(5),
                   X2 = rnorm(5),
                   X3 = rnorm(5))

步骤实现

  1. 提取所有唯一分组:
groups <- unique(data$group)
n_groups <- length(groups)
  1. 创建空矩阵用于存储结果:
var_matrix <- matrix(nrow = n_groups, ncol = n_groups,
                     dimnames = list(groups, groups))
  1. 遍历所有分组组合,计算对应行的整体方差:
for (i in 1:n_groups) {
  for (j in 1:n_groups) {
    # 筛选当前分组组合对应的行
    selected_rows <- data[data$group %in% c(groups[i], groups[j]), ]
    # 提取数值列转为向量并计算方差,保留4位小数
    var_val <- var(as.vector(selected_rows[, -1]))
    var_matrix[i, j] <- round(var_val, 4)
  }
}
  1. 转换为你需要的表格格式:
result_table <- as.data.frame(var_matrix)
result_table <- cbind(`Variance Table` = rownames(result_table), result_table)
rownames(result_table) <- NULL

最终输出

运行上述代码后,result_table的输出如下:

Variance TableABC
A0.56710.62150.5934
B0.62150.18530.6049
C0.59340.60490.4620

说明

  • 对角线值:对应单分组内所有行的X1、X2、X3数值合并后的方差,比如A的0.5671就是前两行共6个数值的方差
  • 非对角线值:对应两个分组合并后所有行的X1、X2、X3数值方差,比如A+B的0.6215就是前三行共9个数值的方差

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:55:38