因此,当我使用 statsmodel 运行ANOVA时,当我发送的数据帧具有任何具有完全不同值的列时,我无法得出结论性结果:例如:Region列有West,East,South 。
所以当我们运行ANOVA时 - 单向
mod = smf.ols('y~x', data=dfx).fit()
aov_table = sma.stats.anova_lm(mod, typ=1)
我收到错误ValueError: shapes (2,3) and (2,) not aligned: 3 (dim 1) != 2 (dim 0)
,其中打印了下表。
table = df sum_sq mean_sq F PR(>F)
0 0.0 0.0 0.0 0.0 0.0
1 0.0 0.0 0.0 0.0 0.0, n_rows = 2, test = 'F'
pr_test = 'PR(>F)', robust = None
我打算删除那些只有唯一值的列。但是我想知道除了这个之外是否有任何原因导致上述错误。
添加dfx,(对于失败的列)
x y
0 A 5.400412
1 B -2.919641
2 C -1.022450
3 D 9.851076
4 E -0.748245
5 F -9.003224
6 G 2.018952
7 H 4.205281
8 I 19.259112
9 J 12.923128
10 K -9.833181
11 L 9.517925
12 M 8.117810
13 N 1.347473
14 O -1.627433
15 P 0.831698
16 Q -2.780851
17 R 0.303317
18 S 0.573363
19 T 11.629423
20 U NaN
21 V NaN
22 W NaN
23 x NaN
24 y NaN
25 z NaN
26 a1 NaN
27 a2 NaN
28 a3 NaN
答案 0 :(得分:1)
你可以通过删除带有x值的nan的行来取得进展,就像在这里的第一行一样。
>>> df = df.ix[range(20)]
>>> df
x y
0 A 5.400412
1 B -2.919641
2 C -1.022450
3 D 9.851076
4 E -0.748245
5 F -9.003224
6 G 2.018952
7 H 4.205281
8 I 19.259112
9 J 12.923128
10 K -9.833181
11 L 9.517925
12 M 8.117810
13 N 1.347473
14 O -1.627433
15 P 0.831698
16 Q -2.780851
17 R 0.303317
18 S 0.573363
19 T 11.629423
>>> mod = smf.ols('y~x', data=df).fit()
>>> aov_table = sm.stats.anova_lm(mod)
>>> aov_table
df sum_sq mean_sq F PR(>F)
x 19.0 1.010356e+03 53.176656 0.0 NaN
Residual 0.0 8.443431e-28 inf NaN NaN