ipython 笔记本和 patsy 分类变量(公式)

标签 ipython jupyter-notebook statsmodels patsy

我遇到了与此 question 相同的错误。

奇怪的是,它可以在 ipython shell 中工作(提供答案),但不能在 ipython 笔记本中工作。但它与 C() 运算符相关,因为没有它就可以工作(但不能作为运算符)

与此相同example :

import statsmodels.formula.api as smf
import numpy as np
import pandas


url = "http://vincentarelbundock.github.com/Rdatasets/csv/HistData/Guerry.csv"
df = pandas.read_csv(url)
df = df[['Lottery', 'Literacy', 'Wealth', 'Region']].dropna()
df.head()
mod = smf.ols(formula='Lottery ~ Literacy + Wealth + Region', data=df)
res = mod.fit()
print res.summary()

这在 ipython 笔记本和 shell 中都很有效,并且 patsyRegion 视为分类变量,因为它由字符串组成。

但是如果我尝试这个(如教程中所示):

res = smf.ols(formula='Lottery ~ Literacy + Wealth + C(Region)', data=df).fit()

我在 ipython 笔记本中遇到错误:

TypeError: 'Series' object is not callable

请注意,笔记本和 shell 中的 statsmodelspatsy 版本相同(分别为 0.5.0 和 0.3.0)

你也有同样的错误吗?

最佳答案

我最终发现了问题。

这是因为我之前在笔记本中使用过一个名为 C 的变量。但令人惊讶的是,它不是我使用的 df 列。

无论如何,基本的解决方案是:

del C

在运行回归之前。

希望这可以帮助遇到同样问题的人。

但我仍然不确定这是否是 patsy 的预期行为。

关于ipython 笔记本和 patsy 分类变量(公式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26214409/

相关文章:

python - 用于控制 Jupyter 仪表板的多个单元格的小部件

python - 如何使用 statsmodels 拟合 ARMAX 模型

python - 无法在马尔可夫政权切换模型中的属性类中设置属性

python - 如何获取 statsmodels/patsy 公式所依赖的列?

python - 从另一个脚本导入变量并保持更新

python - 无法让 matplotlib 生成绘图

Python Spyder : unable to connect to remote ipython kernel

python - 使用 PyPlot 为散点图制作动画

python - 提取进出 ipython/jupyter 笔记本的 pickle 的方法

python - 如何降级numpy?