def anova_analysis():
datafile = "test3.csv"
data = pd.read_csv(datafile, header=0)
print(data)
moore_lm = ols('Y ~ C(A, Sum)*C(B, Sum)',
data=data).fit()
table = sm.stats.anova_lm(moore_lm, typ=2) # Type 2 ANOVA DataFrame
print(table)
return table
Y A B AB
28 -1 -1 1
36 1 -1 -1
18 -1 1 -1
31 1 1 1
25 -1 -1 1
32 1 -1 -1
19 -1 1 -1
30 1 1 1
27 -1 -1 1
32 1 -1 -1
23 -1 1 -1
29 1 1 1
为什么此数据仅适用于> 4行数据? 如果我设计一个2因子全因子表并且只进行1次复制,它将看起来像这样
Y A B AB
28 -1 -1 1
36 1 -1 -1
18 -1 1 -1
31 1 1 1
但是statsmodel失败了
文件 " /home/dsb_mac/anaconda2/envs/bayes/lib/python2.7/site-packages/numpy/lib/function_base.py" ;, 第1033行,在asarray_chkfinite中 "数组不得包含infs或NaNs") ValueError:数组不能包含infs或NaNs
答案 0 :(得分:1)
通过4次观察,你可以完美地适应这种情况。通过交互效果,您有4个参数,因此您可以完美地适应4个单元格。通过完美拟合,残差方差为零,而nan或inf最有可能来自ZeroDivision。
只有主效应的2型方差分析才有效,但很可能没有代码路径来处理完美拟合模型中的角点情况。
要获得主要效果ANOVA,您可以使用没有交互效果的公式
'Y ~ C(A, Sum) + C(B, Sum)'