2015-11-14 41 views
1

我运行的分析可能受益于BEA区域的集群。我之前没有使用Statsmodels中的集群标准错误选项,所以我不清楚我是否搞乱了语法,或者选项被破坏了。任何帮助将不胜感激。Statsmodels - OLS集群标准错误(不接受来自DF的系列?)

这里是代码的相关部分(注意topline_specs字典返回懦夫式的公式):

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

回溯从numpy的通话茎。它返回如下:

ValueError: The weights and list don't have the same length. 

一切我能找到使用集群标准错误看起来像cov_kwds参数可以采取一系列从数据框壳模型数据。我错过了什么?

+0

cov_type和cov_kwds的使用看起来不错。但是该公式需要是一个字符串,例如'公式=“GO〜RV + ISSUER +目的”'。否则,您可以直接使用数据'OLS(data_d ['GO'],sm.add_constant(data_d [['RV',....]]))。fit(...)' – user333700

+0

另外,如果您有在data_d中缺少值,那么在调用OLS之前,您需要删除它们。 AFAIR,如果缺少由'ols'中的公式/数据处理从数据中删除的值,则不检查'groups'是否具有匹配条目。 – user333700

+0

该字典返回一个字符串。然而,你的第二个评论是正确的。我无意中造成了缺失的值。感谢您的建议。如果你想把它放在答案中,我会检查它。 –

回答

1

当使用公式创建模型时,缺少的值处理默认为'drop',并且从给定模型的所有数据数组中删除具有缺少观察值的行(__init__)。在非公式接口中,默认值是忽略缺少的值。

但是,目前没有检查并自动丢失稍后给出的数组中的缺失值,在这种情况下,数据在cov_kwds中是必需的。如果这有一组原始观察值,但有些已被放入依赖变量和解释变量中,则会出现长度不匹配,并且会引发报告的异常。

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