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

How to do 2SLS IV regression using statsmodels python?

我正在尝试使用 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() 时,我得到一个 TypeError(与 F 统计量为非类型有关)。我该如何解决这个问题?

当我想自己做一个 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 日发布,应该包含对上述错误的修复。

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

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