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

2024-09-24 20:30:50 发布

您现在位置:Python中文网/ 问答频道 /正文

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

y~C(治疗组,治疗组(“对照组”)

然后,我会运行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()

或对于Linearmodel:

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

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


Tags: 工具testmodel系数我会olsinsttdf
1条回答
网友
1楼 · 发布于 2024-09-24 20:30:50

如果其他人被困在这个问题上…我在使用Linearmodels时找到了解决方案

因此,在运行模型之后:

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'])

相关问题 更多 >