单向ANOVA失败,数据框在列中具有完全唯一的值

时间:2017-12-19 18:37:20

标签: python unique statsmodels anova

因此,当我使用 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

1 个答案:

答案 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