我有一个债券发行的数据集,如下所示:
发行人CUSIP | 国家 | 行业 | 金额 | 发布后事件 | 年份 | 四分之一 |
---|---|---|---|---|---|---|
000001 | 墨西哥 | A | 100 | 0 | 2010 | 2010年第一季度 |
000002 | 中国 | B | 200 | 1 | 2015 | 2015Q2 |
000002 | 中国 | B | 150 | 0 | 2014 | 2014年第三季度 |
000003 | 中国 | C | 130 | 1 | 2018 | 2018年第四季度 |
000004 | 智利 | C | 100 | 0 | 2012 | 2012年第一季度 |
000005 | 智利 | D | 100 | 1 | 2013 | 2013Q2 |
数据按发行人季度汇总。每行代表新发行的公司债券金额。 回归上下文是这样的:每个国家都会发生某些类型的事件。我想看看这些事件是否会对该国以美元发行债券金额产生任何影响。因此,我按以下方式回归双重差分方程: `
AMT ~ POSTEVENT +C(NATION)+C(INDUSTRY)*C(YEAR)+C(QUARTER)
`
发行人(由唯一的 CUSIP 标识)嵌套在国家/地区行业组中。因此,我考虑双向聚集标准错误并使用以下代码来获取它: `
MOD = smf.ols("AMT ~ POST*INCLUDE +C(NATION)+C(INDUSTRY)*C(YEAR)+C(QUARTER)", data=issueinUSD)
RES = MOD.fit(cov_type='cluster',cov_kwds={'groups':np.asarray(pd.concat([issueinUSD['NATION'],issueinUSD['QUARTER']]))})
I try to get groups for clustering with the cov_kwds specification. But I keep getting this error:
~/opt/anaconda3/lib/python3.9/site-packages/statsmodels/regression/linear_model.py in fit(self, method, cov_type, cov_kwds, use_t, **kwargs)
341
342 if isinstance(self, OLS):
--> 343 lfit = OLSResults(
344 self, beta,
345 normalized_cov_params=self.normalized_cov_params,
~/opt/anaconda3/lib/python3.9/site-packages/statsmodels/regression/linear_model.py in __init__(self, model, params, normalized_cov_params, scale, cov_type, cov_kwds, use_t, **kwargs)
1605 use_t = use_t_2
1606 # TODO: warn or not?
-> 1607 self.get_robustcov_results(cov_type=cov_type, use_self=True,
1608 use_t=use_t, **cov_kwds)
1609 for key in kwargs:
~/opt/anaconda3/lib/python3.9/site-packages/statsmodels/regression/linear_model.py in get_robustcov_results(self, cov_type, use_t, **kwargs)
2550 # duplicate work
2551 self.n_groups = n_groups = len(np.unique(groups))
...
107 else:
<__array_function__ internals> in bincount(*args, **kwargs)
ValueError: The weights and list don't have the same length.
` 谁能告诉我为什么会出现这个错误。
如果我只使用单向聚类,它会给出一个估计。但双向集群,不。 我的组中也没有任何 NaN 值。
当其他变量中有 nan 时(不是在组变量中,但可能在实际的 Y 和 X 变量中),通常会发生这种情况。