pythonのバージョン更新したらstatsmodelsで分散分析できなくなった件
分散分析ができなくなっちゃった...汗
前回の記事からanacondaのバージョンを上げました。
anaconda3-4.3.0からanaconda3-5.3.0バージョンを更新して、今日は実験の解析でstatmodelsを使って分散分析をしようとしたら、以下のようなエラーが...
--------------------------------------------------------------------------- AssertionError Traceback (most recent call last) <ipython-input-6-0d5566028b0b> in <module>() 10 # Make a model 11 formula = 'percentage' + '~Cond' ---> 12 lm = ols(formula, data = df_group1).fit() 13 result = sm.stats.anova_lm(lm) 14 print(result)
あれ、今までできていた統計解析ができない(笑)。 調べたところ、statsmodelsでformulaのparserに使用されるpatsyと呼ばれるライブラリにバグがあったことが原因らしいです。これは、stackoverflowやstatmodelsのissuesにも対策方法が書かれていました。
Python 3.7.1から発生しているバグみたいですね。肝心の解決方法は案外シンプルでpip install -U patsy
でpatsyのバージョンを更新すれば問題ないです。バージョンを更新する前は
In [1]: import patsy In [2]: patsy.__version__ Out[2]: '0.5.0'
となっていますが、更新すれば0.5.1にバージョンアップされると思います。結果、無事に分散分析できました。0.05<0.07なので、有意傾向みたいです笑
# Make a model formula = 'percentage' + '~Cond' lm = ols(formula, data = df_group1).fit() result = sm.stats.anova_lm(lm) print(result) df sum_sq mean_sq F PR(>F) Cond 1.0 2.215560e+05 221556.004523 3.505502 0.075861 Residual 20.0 1.264047e+06 63202.360938 NaN NaN
分散分析がしたい場合は以下のような記事を参考にすると良いと思います。機会があれば、分散分析や多重比較補正の方法などを本格的に載せようかなと思います。今日はとりあえずここまで。