Python 单向方差分析失败,数据帧在列中具有完全唯一的值
因此,当我使用statsmodel运行方差分析时,当我发送的数据帧中有任何列具有完全不同的值时,我无法得出结论性结果,例如:区域列具有西、东、南 所以当我们进行方差分析时-单向Python 单向方差分析失败,数据帧在列中具有完全唯一的值,python,unique,statsmodels,anova,Python,Unique,Statsmodels,Anova,因此,当我使用statsmodel运行方差分析时,当我发送的数据帧中有任何列具有完全不同的值时,我无法得出结论性结果,例如:区域列具有西、东、南 所以当我们进行方差分析时-单向 mod = smf.ols('y~x', data=dfx).fit() aov_table = sma.stats.anova_lm(mod, typ=1) 我得到一个错误ValueError:shapes(2,3)和(2,)未对齐:3(dim1)!=2(尺寸0)其中打印了下表 table = df
mod = smf.ols('y~x', data=dfx).fit()
aov_table = sma.stats.anova_lm(mod, typ=1)
我得到一个错误ValueError:shapes(2,3)和(2,)未对齐:3(dim1)!=2(尺寸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值为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
dfx是否足够小,可以显示在您的问题中?如果是,请这样做。请按要求添加。
anova_lm
反对这样一个事实,即您正在尝试形成一个线性模型,其中(x,y)的行秩小于x的行秩。您能分享一些关于这方面的阅读材料吗,我不知道这一要求。当我在几十年前学习它时,它来自。好的,所以不是唯一的值导致了问题。但是NaN在其相应的“y”值中的存在。
>>> 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