def test_general_demean_twoway(panel):
y = PanelData(panel)
dm1 = y.demean('both')
g = pd.DataFrame(y.entity_ids, index=y.index)
g['column2'] = pd.Series(y.time_ids.squeeze(), index=y.index)
dm2 = y.general_demean(g)
assert_allclose(dm1.values2d, dm2.values2d)
g = pd.DataFrame(np.random.randint(0, 10, g.shape), index=y.index)
dm2 = y.general_demean(g)
g1 = pd.Categorical(g.iloc[:, 0])
d1 = pd.get_dummies(g1)
g2 = pd.Categorical(g.iloc[:, 1])
d2 = pd.get_dummies(g2, drop_first=True)
d = np.c_[d1, d2]
dm1 = y.values2d - d @ np.linalg.lstsq(d, y.values2d)[0]
assert_allclose(dm1 - dm2.values2d, np.zeros_like(dm2.values2d), atol=1e-7)
评论列表
文章目录