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

如何解决statsmodels.AnovaRM实际数据平衡却报“数据不平衡”错误

报错原因

statsmodels.AnovaRM对重复测量方差分析的平衡判定规则为:每个被试必须存在所有组内因子的全水平组合,且所有交叉组合的观测数完全相等,仅单个因子各水平总样本量一致不满足平衡要求。
你当前的问题大概率是两个原因之一:

  • 列名不匹配:你代码中within参数写的是Factor2,但你提供的样例数据中对应列名为Factor 2(中间包含空格),因子读取异常会触发不平衡报错。
  • 交叉组合缺失:Factor1有3个水平、Factor2有3个水平,总共有9种交叉组合,你提供的样例数据仅包含(0,a)/(1,b)/(2,c)3种组合,剩余组合完全缺失,不符合平衡要求。
排查方法

运行以下两行代码确认问题:

  1. 核对因子交叉组合的样本量:
print(anova_df.groupby(['Factor1', 'Factor2']).size())

平衡数据下输出的所有值必须相等。
2. 核对单个被试的水平覆盖情况:

print(anova_df.groupby('Subject')[['Factor1', 'Factor2']].nunique())

平衡数据下每个被试的Factor1唯一值为3、Factor2唯一值为3,且每个被试的交叉组合数为9。

修复方案
  • 如果是列名不匹配:将代码中Factor2改为和DataFrame列名完全一致的Factor 2即可。
  • 如果是交叉组合缺失:
    • 优先删除存在组合缺失的被试,仅保留所有组合数据完整的被试,再重新运行方差分析。
    • 若无法删除缺失被试,可手动补全缺失组合的观测值,因变量填入该组合的均值后再分析,该方法会影响统计效力,需谨慎使用。
    • 若数据确实无法做到完全平衡,改用statsmodels.MixedLM拟合混合线性模型即可,该方法不需要严格的平衡数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:06:03