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

如何计算给定DataFrame分组数据的组间平方和SSB

Pandas 分组数据组间平方和(SSB)计算方法

示例数据集

本次计算使用的结构化DataFrame格式如下:

variable  value
0       G1      1
1       G1      2
2       G2      3
3       G2      4
4       G3      5
5       G3      6

计算逻辑

组间平方和核心计算逻辑和给出的参考公式一致:

SSB = 所有分组的「组内观测值和的平方/组样本量」之和 - 「全体观测值和的平方/总样本量」
针对当前示例数据,手动代入计算的过程为:G1组和为3、G2组和为7、G3组和为11,总观测和为21、总样本量为6,最终SSB = (3²/2 + 7²/2 + 11²/2) - 21²/6 = 16。

代码实现

直接用pandas原生分组聚合即可完成计算,不需要额外依赖,同时兼容组样本量不一致的场景:

import pandas as pd

# 1. 未加载数据时可先构造示例数据集,已有目标df可跳过此段
df = pd.DataFrame({
    'variable': ['G1', 'G1', 'G2', 'G2', 'G3', 'G3'],
    'value': [1, 2, 3, 4, 5, 6]
})

# 2. 分组统计每组的观测和、组内样本量
group_agg = df.groupby('variable')['value'].agg(group_sum='sum', group_size='count')

# 3. 计算全局统计量
total_sum = df['value'].sum()
total_count = len(df)

# 4. 代入公式得到SSB结果
ssb = (group_agg['group_sum'] ** 2 / group_agg['group_size']).sum() - (total_sum ** 2 / total_count)

运行代码后得到的ssb值为16.0,和手动计算结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:27:20