2017-12-19 19 views
0

statsmodelを使用してANOVAを実行すると、送信したデータフレームに次のような完全に異なる値を持つ列がある場合、地域列には西、東、南があります。データフレームに列内の完全な一意の値を持つ単方向ANOVAが失敗する

ので、我々は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 

私は、一意の値しか持たない列を削除する予定です。しかし、私は上記のエラーの理由以外に何らかの理由があるかどうかを知りたがっていました。

 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

あなたの質問に表示するのに十分なdfxですか?もしそうなら、してください。上記のように質問があると –

+0

が追加されました。 –

+0

'anova_lm'は、(x、y)の行ランクがxの行ランクより小さい線形モデルを作成しようとしているという事実に反対しています。 –

答えて

1

はあなたがここに最初の行のように、ナンのx値のために行をドロップすることにより、一種の進捗状況を作ることができます(それが失敗した列の)DFXを、追加します。

>>> 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 
+0

これは問題を引き起こしていた固有の値ではありません。対応する「y」値にNaNが存在することを示します。 –

+0

そうです。 ... –

関連する問題