如何在 Statsmodels 或 Linearmodels 中检验 2SLS 的系数相等性?

How to do test of equality of coefficient for 2SLS in Statsmodels or Linearmodels?

所以如果我 运行 一个有多个治疗组和一个对照组的实验,我会使用 Statsmodel ols 分析结果,看看是否有任何治疗组与对照组有统计学差异:

y ~ C(treatment_group, 治疗('Control')

然后我会 运行 results.t_test_pairwise() 找出每个治疗组的系数是否相等。 IE。了解每个治疗组的结果是否在统计学上显着不同。

在目前的情况下,我使用 Statsmodel/Linearmodel 的 2SLS 来分析工具变量,而不仅仅是 运行 标准 ols。我可以 运行 完美地进行分析,并且得到了结果。但是现在我需要看看不同工具(三个不同治疗组)的系数是否相同,所以我知道不同治疗组的效果是否不同。

统计模型代码:

from statsmodels.sandbox.regression.gmm import IV2SLS as SM2SLS
model = SM2SLS(tdf[endog],tdf['elect_lpd'],tdf[inst]).fit()

或者对于线性模型:

model = LM2SLS(tdf.elect_lpd, tdf[controls], tdf[endog], tdf[inst]).fit(cov_type='clustered')

Josef 的,建议您可以使用 wald t 检验,但我需要使用限制矩阵而不是公式。因此,如果有人对如何做到这一点有任何想法,我们将不胜感激。

如果其他人遇到这个问题...我在使用线性模型时找到了解决方案。

所以在 运行 模型之后:

model = LM2SLS(tdf.elect_lpd, tdf[controls], tdf[endog], tdf[inst]).fit(cov_type='clustered')

然后您可以 运行 wald 测试来比较每个治疗组之间的差异。就我而言,我有两个治疗组(sbs 和 wing):

test.wald_test(formula = ['endog_sbs = endog_wing'])