如何使用statsmodels python进行2SLS IV回归?

时间:2016-05-03 18:48:11

标签: python regression statsmodels

我正在尝试使用statsmodels库在python中进行2阶段最小二乘回归。

from statsmodels.sandbox.regression.gmm import IV2SLS                       
resultIV = IV2SLS(dietdummy['Log Income'], dietdummy.drop(['Log Income', 'Diabetes']),     
dietdummy.drop(['Log Income', 'Reads Nutri')

Reads Nutri是我的内生变量,我的工具是Diabetes,我的因变量是Log Income

我做对了吗?它与我在stata上的方式大不相同。

另外,当我执行resultIV.summary()时,我得到一个类型错误,与F统计数据是非类型有关,我该怎样才能重新获得这个?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:6)

当我想自己做IV2SLS回归并遇到同样的问题时,我发现了这个问题。所以,只为其他所有人来到这里。

documentation of statsmodels显示了如何使用此命令。您的参数依次为endogexoginstrument,其中exog包含已检测的变量以及instrument工具和其他控制变量。从这个意义上说,你的模型很好。

您找到的TypeError目前是版本0.6.0和0.8.1中的open bug。并根据里程碑将其固定在0.9.0。

更新(28.06.2018):版本9.0.0于5月15日发布,应包含对上述错误的修复。

答案 1 :(得分:0)

就我个人而言,我发现 the IV2SLS function in linearmodels 4.5 比 statsmodels 版本更直观,因为它具有独立的因变量和内生变量参数,而 statsmodels 版本没有。我从 linearmodels 函数中得到的结果与我通过学校获得的 Excel 加载项得到的结果一致。

如果您选择使用 linearmodels 函数,this guide 也应该会有所帮助。例如,它告诉我我需要为我的函数添加一个常量以产生正确的输出。