1
import statsmodels.formula.api as sm
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()
print df.head()
mod = sm.ols(formula='Lottery ~ Literacy + Wealth + Region', data=df)
res = mod.fit()
print res.summary()

打印表格后吐回这个错误。

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-f69caff21ed0> in <module>()
6 df = df[['Lottery', 'Literacy', 'Wealth', 'Region']].dropna()
7 print df.head()
----> 8 mod = sm.ols(formula='Lottery ~ Literacy + Wealth + Region', data=df)
9 res = mod.fit()
10 print res.summary()

TypeError: from_formula() takes at least 3 arguments (2 given)

这似乎不是可接受的行为。我究竟做错了什么?

4

1 回答 1

2

(我评论中的猜测是错误的)

您的 statsmodels 版本太旧。文档和示例对于 statsmodels 0.5 的发布版本是正确的。

自 0.5.0.dev-1bbd4ca 起,该data关键字已重命名。df

所以要么升级,我强烈推荐,要么使用旧的关键字名称

mod = sm.ols(formula='Lottery ~ Literacy + Wealth + Region', df=df)

应该与您拥有的版本一起使用。

于 2013-08-30T14:06:58.627 回答