Statsmodels - OLS 聚类标准误差(不接受 DF 的系列?)

Mar*_* Jr 4 python statsmodels

我正在运行一项分析,该分析可能会受益于 BEA 区域的聚类。我以前没有在 Statsmodels 中使用过集群标准错误选项,所以我不清楚我是否搞乱了语法,或者该选项已损坏。任何帮助将不胜感激。

这是相关的代码部分(请注意,该topline_specs字典返回 Patsy 风格的公式):

#Capture topline specs
topline_specs={'GO':spec_dict['PC_GO']['Total']['TYPE']['BOTH'],
               'RV':spec_dict['PC_RV']['Total']['TYPE']['BOTH'],
               'ISSUER':spec_dict['PROP']['ISSUER']['TYPE']['BOTH'],
               'PURPOSE':spec_dict['PROP']['PURPOSE']['TYPE']['BOTH']}

#Estimate each model
topline_mods={'GO':smf.ols(formula=topline_specs['GO'],data=data_d).fit(cov_type='cluster',
                                                                       cov_kwds={'groups':data_d['BEA_INT']})}

topline_mods['GO']
Run Code Online (Sandbox Code Playgroud)

回溯源于 numpy 调用。它返回以下内容:

ValueError: The weights and list don't have the same length.
Run Code Online (Sandbox Code Playgroud)

我能找到的关于使用集群标准错误的所有内容看起来都像是cov_kwds参数可以从容纳模型数据的 DataFrame 中获取一个 Series。我缺少什么?

Jos*_*sef 5

当使用公式创建模型时,缺失值处理默认为“删除”,并且具有缺失观测值的行将从提供给模型的所有数据数组中删除 ( __init__)。在非公式界面中,当前默认忽略缺失值。

但是,目前无法检查和自动删除稍后给出的数组中的缺失值,在本例中是cov_kwds. 如果它具有原始的一组观察值,但一些因变量和解释变量已被删除,那么就会出现长度不匹配,并且会引发报告的异常。

我重新打开了https://github.com/statsmodels/statsmodels/issues/1220,因为在特殊情况下我们可以通过 pandas 索引获得足够的信息来处理缺失值。