cc7*_*768 3 python pandas statsmodels
我正在尝试完成一项家庭作业,为此我需要在 statsmodels 中使用分类变量(由于拒绝像其他人一样使用 stata)。我花了一些时间阅读 Patsy 和 Statsmodels 的文档,但我不太明白为什么这段代码不起作用。我尝试将它们分解并使用 patsy 命令创建它,但出现了相同的错误。
我目前有:
import numpy as np
import pandas as pd
import statsmodels.formula.api as sm
# This is where I'm getting data
data = pd.read_csv("http://people.stern.nyu.edu/wgreene/Econometrics/bankdata.csv")
# I want to use this form for my regression
form = "C ~ Q1 + Q2 + Q3 + Q4 + Q5 + C(BANK)"
# Do the regression
mod = sm.ols(form, data=data)
reg = mod.fit()
print(reg.summary2())
Run Code Online (Sandbox Code Playgroud)
此代码会引发错误:TypeError: 'Series' object is not callable。statsmodels 网站上有一个非常相似的示例,它似乎工作正常,我不确定我正在做的事情和他们正在做的事情之间有什么区别。
很感谢任何形式的帮助。
干杯
问题是,这C是 DataFrame 中一列的名称,也是表示您想要一个分类变量的委婉方式。最简单的修复方法是将列重命名为:
data = data.rename_axis({'C': 'C_data'}, axis=1)
form = "C_data ~ Q1 + Q2 + Q3 + Q4 + Q5 + C(BANK)"
然后调用sm.ols就可以了。
该错误消息TypeError: 'Series' object is not callable可以解释如下:
C为数据框的列。在这种情况下,系列data['C']data['C']为带有参数的函数BANK。Series 对象不实现__call__方法,因此会出现错误消息'Series' object is not callable。祝你好运!
| 归档时间: |
|
| 查看次数: |
5959 次 |
| 最近记录: |