我正试图用统计模型进行三元重复测量方差分析。AnovaRM,但在执行双向ANOVA时已经存在障碍:当运行时
aov = AnovaRM(anova_df, depvar='Test', subject='Subject',
within=["Factor1", "Factor2"], aggregate_func='mean').fit()
print(aov)
它返回"0";数据不平衡&";。让我们看看我从数据帧中提取的因素,这些因素是我输入的:
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)
因为这是一个测试,我甚至将Factors相互对齐。
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
这怎么不平衡?我做错了什么,我该怎么解决?
我遇到了同样的问题。AnovaRM运行和工作的数据集在本教程中:https://pythontutorials.eu/numerical/statistics-solution-1/
我还使用了你的方法,在所有变量的所有级别上迭代检查形状。输出还显示,所有东西都有相同的形状。上面链接中的数据集也具有此功能。
事实证明,仅仅拥有相同的形状是不够的。对于用于subject
的变量,在输入df中,如果运行类似df[subject_name].value_counts()
的程序,则每个唯一的subject_name
都必须具有相同的数字。如果数字不同,AnovaRM会给您一个不平衡的数据错误。
我在我的df上使用了这种检查方法,它表明一些主题的值比其他主题的值少,而在检查上面链接中的示例df时,每个主题的值都相同。此外,我手动将我的df子集设置为包括具有相同数值/测量值的受试者,AnovaRM对我很有效。试一下,让我知道这是否有助于你理解不平衡的真正含义。
factor1=factor2。
尝试使用类似";"治疗";下降因子1和2:
treatment When
X F1 = 0 and F2 = a
Y F1 = 1 and F2 = b
Z F1 = 2 and F2 = c