2

我和这个问题有同样的错误。

奇怪的是,它在 ipython shell 中有效(提供了答案),但在 ipython 笔记本中无效。但它与C()运营商有关,因为没有它可以工作(但不是作为运营商)

与该示例相同:

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 notebook 和 shell 中都很有效,并且被patsy视为Region分类变量,因为它是由字符串组成的。

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

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

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

TypeError: 'Series' object is not callable

请注意,在 notebook 和 shellstatsmodelspatsy都是相同的版本(分别为 0.5.0 和 0.3.0)

你有同样的错误吗?

4

1 回答 1

2

我最终发现了问题。

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

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

del C

在运行回归之前。

希望这将帮助面临同样问题的人。

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

于 2014-10-07T12:35:29.410 回答