ipython notebook和patsy分类变量(公式)

时间:2014-10-06 10:33:09

标签: ipython ipython-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)

你有同样的错误吗?

1 个答案:

答案 0 :(得分:2)

我最终找到了问题。

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

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

del C

在运行回归之前。

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

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