如何使用 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 展示了如何使用这个命令。您的论点是 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 日发布,应该包含对上述错误的修复。
就个人而言,我发现 the IV2SLS function in linearmodels 4.5 比 statsmodels 版本更直观,因为它有独立的因变量和内生变量参数,而 statsmodels 版本没有。我从 linearmodels 函数得到的结果与我在学校获得的 Excel 加载项得到的结果一致。
如果您选择使用线性模型函数,this guide 应该也会有所帮助。例如,它告诉我我需要为我的函数添加一个常量以产生正确的输出。
我正在尝试使用 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 展示了如何使用这个命令。您的论点是 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 日发布,应该包含对上述错误的修复。
就个人而言,我发现 the IV2SLS function in linearmodels 4.5 比 statsmodels 版本更直观,因为它有独立的因变量和内生变量参数,而 statsmodels 版本没有。我从 linearmodels 函数得到的结果与我在学校获得的 Excel 加载项得到的结果一致。
如果您选择使用线性模型函数,this guide 应该也会有所帮助。例如,它告诉我我需要为我的函数添加一个常量以产生正确的输出。