我怎样才能修复 statsmodels.AnovaRM 声称 "Data is unbalanced" 尽管它不是?

How can I fix statsmodels.AnovaRM claiming "Data is unbalanced" although it isn't?

我正在尝试使用 statsmodels.AnovaRM 执行三向重复测量方差分析,但在执行双向方差分析时已经存在障碍:当 运行

aov = AnovaRM(anova_df, depvar='Test', subject='Subject',
    within=["Factor1", "Factor2"], aggregate_func='mean').fit()
print(aov)

它returns“数据不平衡。”。让我们看看我从我输入的DataFrame中提取的因素:

Factor1, level 0, shape: (68, 6)
Factor1, level 1, shape: (68, 6)
Factor1, level 2, shape: (68, 6)
Factor2, level a, shape: (68, 6)
Factor2, level b, shape: (68, 6)
Factor2, level c, shape: (68, 6)

因为这是一个测试,我什至将因素相互对齐。

   Test Factor1 Factor 2
0   32.6    0   a
1   39.3    1   b
2   43.0    2   c
3   32.0    0   a
4   32.8    1   b
5   38.3    2   c
6   36.7    0   a
7   40.4    1   b
8   41.9    2   c

怎么会不平衡呢?我做错了什么,我该如何解决?

每个块中的因子 1 = 因子 2。

尝试使用像“治疗”这样的索引和下降因子 1 和 2:

treatment           When
    X           F1 = 0 and F2 = a
    Y           F1 = 1 and F2 = b
    Z           F1 = 2 and F2 = c

我运行遇到了同样的问题。 AnovaRM 运行 使用并工作的数据集在本教程中:https://pythontutorials.eu/numerical/statistics-solution-1/

我还使用了您的方法来检查遍历所有变量的所有级别的形状。输出还显示一切都具有相同的形状。上面link中的数据集也有这个特征。

事实证明,形状相同是不够的。对于你用于 subject 的变量,在你的输入 df 中,如果你 运行 类似 df[subject_name].value_counts() 的东西,每个唯一的 subject_name 必须有相同的数字。如果数字不同,AnovaRM 会给你一个不平衡的数据错误。

我在我的 df 上使用了这种检查方法,它表明某些主题的值比其他主题少,而在检查上面 link 的示例 df 时,每个主题都具有相同数量的值。此外,我手动对我的 df 进行子集化以包括具有相同数量 values/measurements 的主题,并且 AnovaRM 为我工作。试一试,让我知道这是否有助于您理解失衡的真正含义。