Statsmodels带聚类稳健标准误的Logit模型实现疑问
问题描述
我有如下DataFrame:
df.head() id case volfluid map rr o2 fluid 1044 36 3 3.0 1.0 3.0 2.0 0.0 1045 37 3 2.0 3.0 1.0 2.0 1.0 1046 38 3 3.0 2.0 2.0 1.0 0.0 1047 36 4 2.0 3.0 1.0 3.0 1.0 1048 37 4 1.0 1.0 3.0 3.0 1.0 ...
我希望运行以id为聚类变量且带有稳健标准误的Logistic回归模型,当前代码如下:
smf.logit('''fluid ~ C(volfluid) + C(map, Treatment(reference = 3.0)) + C(o2, Treatment(reference = 3.0)) + C(rr) + C(case, Treatment(reference = 4))''', data = df).fit(cov_type='cluster', cov_kwds={'groups': df['id']})
不确定该代码是否同时实现了聚类与稳健标准误,已知设置cov_type='hc0'可得到稳健标准误,有两个疑问:
- 设置
cov_type='hc0'时能否仍按id聚类? - 聚类标准误是否本身就具备稳健性?
解答
1. 当前代码的有效性
你写的这段代码已经同时实现了按id聚类和稳健标准误。在statsmodels中,cov_type='cluster'参数就是用来计算聚类稳健标准误的,它会自动处理同一id下观测的组内相关性,同时对异方差保持稳健。
2. hc0与聚类的兼容性
cov_type='hc0'仅针对异方差做稳健调整,无法直接结合聚类分组。如果需要同时考虑组内聚集效应(同一id的观测存在相关性)和异方差,必须使用cov_type='cluster'并通过cov_kwds={'groups': df['id']}指定聚类分组变量,这才是正确的做法。
3. 聚类标准误的稳健性本质
聚类标准误本身就具备双重稳健性:
- 对**组内观测的相关性(如重复测量、聚类聚集)**稳健
- 对异方差稳健
它是比单纯的hc0稳健标准误更全面的调整方式,专门适配存在组内聚集的数据集场景,比如你的数据中同一个id对应多条观测的情况。
内容的提问来源于stack exchange,提问作者hulio_entredas
相关产品推荐
相关产品推荐

