Python statsmodels示例似乎不起作用

Python statsmodels示例似乎不起作用,python,pandas,statsmodels,Python,Pandas,Statsmodels,在打印表格后,回吐此错误 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()

在打印表格后,回吐此错误

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回溯(最近一次调用上次)
在()
6 df=df[[‘彩票’、‘识字’、‘财富’、‘地区’]]
7打印测向头()
---->8 mod=sm.ols(公式='lotking~识字率+财富+地区',data=df)
9 res=mod.fit()
10打印资源摘要()
TypeError:from_formula()至少接受3个参数(给定2个)
这似乎是不可接受的行为。我做错了什么?

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

您的statsmodels版本太旧。该文档和示例适用于statsmodels 0.5的发布版本

自0.5.0.dev-1bbd4ca以来,
data
关键字已从
df
重命名

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

---------------------------------------------------------------------------
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)

应该使用您现有的版本。

我认为这是因为公式和数据不是关键字参数。试着把他们从呼叫ols的电话中删除。对我有用。能否键入
将statsmodels.api导入为sm;打印sm.version.version
和导入patsy;将patsy.\uuuu version\uuuuu打印到提示符中,让我知道您得到了什么?将statsmodels.api作为sm导入;打印sm.version.version 0.5.0.dev-1bbd4caimport patsy;打印patsy.\uuuu版本\uuuuu删除公式和数据关键字确实有效。我很难理解为什么[会像他们那样陈述这些例子?我是通过pip获得的。你认为我应该升级我的pip包吗?
mod = sm.ols(formula='Lottery ~ Literacy + Wealth + Region', df=df)