0

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

y ~ C(treatment_group, Treatment('控制')

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

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

statsmodel的代码:

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's response here建议您可以使用 wald t 检验,但我需要使用限制矩阵而不是公式。因此,如果有人对如何做到这一点有任何想法,那将不胜感激。

4

1 回答 1

1

如果其他人对此感到困惑......我在使用线性模型时找到了解决方案。

所以在运行模型之后:

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'])
于 2021-10-19T11:11:16.100 回答