我正在尝试使用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统计数据是非类型有关,我该怎样才能重新获得这个?
非常感谢任何帮助。
答案 0 :(得分:6)
当我想自己做IV2SLS回归并遇到同样的问题时,我发现了这个问题。所以,只为其他所有人来到这里。
documentation of statsmodels显示了如何使用此命令。您的参数依次为endog
,exog
和instrument
,其中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 也应该会有所帮助。例如,它告诉我我需要为我的函数添加一个常量以产生正确的输出。