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)
这似乎不是可接受的行为。我做错了什么?
答案 0 :(得分:2)
(我的评论中的猜测是错误的)
你的statsmodels版本太旧了。文档和示例对于statsmodels 0.5的发布版本是正确的。
自0.5.0.dev-1bbd4ca起,data
关键字已从df
重命名。
所以要么升级,我强烈推荐,要么使用旧的关键字名称
mod = sm.ols(formula='Lottery ~ Literacy + Wealth + Region', df=df)
应该使用您拥有的版本。