在 statsmodels 中使用分类变量的聚类标准误差(Python)

3

我想在statsmodels中运行一个回归,使用分类变量和聚类标准误差。

我的数据集包含机构、处理、年份和注册人数列。处理是一个虚拟变量,机构是一个字符串,其他是数字。我已经确保删除了任何空值。

df.dropna()    
reg_model = smf.ols("enroll ~ treatment + C(year) + C(institution)", df)
.fit(cov_type='cluster', cov_kwds={'groups': df['institution']})

我遇到了如下问题: 有没有办法解决这个问题,使我的标准误差聚类?

结果显示,dropna() 没有捕获到一些空值,我不得不使用 fillna(, inplace=True) 进行替换,然后它就正常工作了。 - tower489
1
你使用 dropna 的方式有误。如果没有 inplace=True 参数,df.dropna() 只是返回一个不包含空值的 DataFrame 副本 - 它并不会将其保存到 df 对象中。此外,如果有更多的变量而你只想在回归的子集中删除空值,你还需要使用 subset 参数。你可以改为使用 reg_model = smf.ols("enroll ~ treatment + C(year) + C(institution)", df.dropna(subset = ['enroll','treatment','year','institution'])) - Gene Burinsky
1个回答

3
你需要在fit中使用参数cov_type='cluster'cov_type是一个关键字参数,当关键字作为位置参数使用时,其位置不正确。详见http://www.statsmodels.org/stable/generated/statsmodels.regression.linear_model.OLS.fit.html 总的来说,当关键字参数被作为位置参数使用时,statsmodels不能保证向后兼容性,即未来版本中关键字的位置可能会发生变化。
但是,我不明白ValueError从哪里来。 Python拥有非常信息丰富的tracebacks,在询问问题时,添加完整的traceback或至少包含最近几行的异常引发位置非常有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接