def test_two_way_clustering(data): mod = PooledOLS(data.y, data.x) y = PanelData(data.y) entity_clusters = pd.DataFrame(y.entity_ids, index=y.index) vc1 = PanelData(data.vc1) clusters = vc1.copy() clusters.dataframe['var.cluster.entity'] = entity_clusters clusters._frame = clusters._frame.astype(np.int64) res = mod.fit(cov_type='clustered', clusters=clusters, debiased=False) y = mod.dependent.dataframe.copy() x = mod.exog.dataframe.copy() y.index = np.arange(len(y)) x.index = y.index clusters = mod.reformat_clusters(clusters) ols_mod = IV2SLS(y, x, None, None) ols_res = ols_mod.fit(cov_type='clustered', clusters=clusters.dataframe) assert_results_equal(res, ols_res)
def test_cov_equiv_cluster(data): mod = PooledOLS(data.y, data.x) res = mod.fit(cov_type='clustered', cluster_entity=True, debiased=False) y = PanelData(data.y) clusters = pd.DataFrame(y.entity_ids, index=y.index) res2 = mod.fit(cov_type='clustered', clusters=clusters, debiased=False) assert_results_equal(res, res2) res = mod.fit(cov_type='clustered', cluster_time=True, debiased=False) clusters = pd.DataFrame(y.time_ids, index=y.index) res2 = mod.fit(cov_type='clustered', clusters=clusters, debiased=False) assert_results_equal(res, res2) res = mod.fit(cov_type='clustered', clusters=data.vc1, debiased=False) y = mod.dependent.dataframe.copy() x = mod.exog.dataframe.copy() y.index = np.arange(len(y)) x.index = y.index clusters = mod.reformat_clusters(data.vc1) ols_mod = IV2SLS(y, x, None, None) res2 = ols_mod.fit(cov_type='clustered', clusters=clusters.dataframe, debiased=False) assert_results_equal(res, res2)