2013-08-28 44 views
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() 

打印表後返回此錯誤。statsmodels示例似乎不起作用

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

這似乎不是可接受的行爲。我究竟做錯了什麼?

+1

我認爲這是因爲公式和數據不是關鍵字參數。嘗試從通話中刪除他們到ols。 – user333700

+1

適合我。你可以輸入'import statsmodels.api as sm;打印sm.version.version'和'輸入patsy;將patsy .__ version__'打印成提示並讓我知道你得到了什麼? – TomAugspurger

+0

import smsmodels.api as sm;打印sm.version.version 0.5.0.dev-1bbd4ca – tipanverella

回答

2

(我的評論中的猜測是錯誤的)

您的statsmodels版本太舊了。文檔和示例對於statsmodels 0.5的發佈版本是正確的。

data關鍵字自從0.5.0.dev-1bbd4ca以來已從df更名。

因此,無論你升級,我強烈建議,或者您使用舊關鍵字名稱

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

應與你有版本。

+0

我通過點子。你認爲我應該升級我的pip軟件包? – tipanverella

+0

它確實沒有關鍵字的工作! :-) – tipanverella