我怎样才能修复 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 为我工作。试一试,让我知道这是否有助于您理解失衡的真正含义。
我正在尝试使用 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 为我工作。试一试,让我知道这是否有助于您理解失衡的真正含义。