带有分类变量的statsmodels中的聚集标准错误(Python)

带有分类变量的statsmodels中的聚集标准错误(Python),python,regression,statsmodels,patsy,Python,Regression,Statsmodels,Patsy,我想在statsmodels中运行一个使用分类变量和聚集标准错误的回归 我有一个包含机构、治疗、年份和注册列的数据集。治疗是一个虚拟,制度是一个字符串,其他的都是数字。我已确保删除任何空值 df.dropna() reg_model = smf.ols("enroll ~ treatment + C(year) + C(institution)", df) .fit(cov_type='cluster', cov_kwds={'groups': df['institution']})

我想在statsmodels中运行一个使用分类变量和聚集标准错误的回归

我有一个包含机构、治疗、年份和注册列的数据集。治疗是一个虚拟,制度是一个字符串,其他的都是数字。我已确保删除任何空值

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

ValueError:权重和列表的长度不相同


有没有办法解决这个问题,使我的标准错误群集?

您需要合适的
cov\u type='cluster'

cov_type
是一个关键字参数,当关键字用作位置参数时,它的位置不正确。

一般来说,当关键字参数用作位置参数时,statsmodels不能保证向后兼容性,也就是说,关键字位置在将来的版本中可能会更改

然而,我不明白ValueError是从哪里来的。
Python有非常丰富的回溯信息,在询问添加完整回溯或至少最后几行显示异常发生位置的问题时非常有用。

结果表明dropna()没有捕获一些空值,我必须使用
fillna(,inplace=True)替换这些空值
然后它工作得很好您使用的
dropna
有缺陷。如果没有
inplace=True
参数,
df.dropna()
只返回数据帧的一个不带null的副本-它不会将其保存到
df
对象。此外,如果有比您列出的变量更多的变量,但您只想在回归中的子集中删除空值,那么您也需要
subset
参数。您可以改为
reg_model=smf.ols(“注册~treatment+C(year)+C(institution)”,df.dropna(subset=[“注册”,“治疗”,“year”,“institution”))