Example #1
0
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)
Example #2
0
def test_multiple(data, precision):
    dependent = data.set_index(["nr", "year"]).lwage
    exog = add_constant(
        data.set_index(["nr", "year"])[["expersq", "married", "union"]])
    res = PanelOLS(dependent, exog, entity_effects=True,
                   time_effects=True).fit()
    res2 = PanelOLS(dependent, exog,
                    entity_effects=True).fit(cov_type="clustered",
                                             cluster_entity=True)
    exog = add_constant(data.set_index(["nr", "year"])[["married", "union"]])
    res3 = PooledOLS(dependent, exog).fit()
    exog = data.set_index(["nr", "year"])[["exper"]]
    res4 = RandomEffects(dependent, exog).fit()
    comp = compare([res, res2, res3, res4], precision=precision)
    assert len(comp.rsquared) == 4
    d = dir(comp)
    for value in d:
        if value.startswith("_"):
            continue
        getattr(comp, value)
    with pytest.raises(ValueError):
        compare([res, res2, res3, res4], precision="unknown")
Example #3
0
def test_multiple(data, precision):
    dependent = data.set_index(['nr', 'year']).lwage
    exog = sm.add_constant(
        data.set_index(['nr', 'year'])[['expersq', 'married', 'union']])
    res = PanelOLS(dependent, exog, entity_effects=True,
                   time_effects=True).fit()
    res2 = PanelOLS(dependent, exog,
                    entity_effects=True).fit(cov_type='clustered',
                                             cluster_entity=True)
    exog = sm.add_constant(
        data.set_index(['nr', 'year'])[['married', 'union']])
    res3 = PooledOLS(dependent, exog).fit()
    exog = data.set_index(['nr', 'year'])[['exper']]
    res4 = RandomEffects(dependent, exog).fit()
    comp = compare([res, res2, res3, res4], precision=precision)
    assert len(comp.rsquared) == 4
    d = dir(comp)
    for value in d:
        if value.startswith('_'):
            continue
        getattr(comp, value)
    with pytest.raises(ValueError):
        compare([res, res2, res3, res4], precision='unknown')
Example #4
0
def test_panel_no_effects_weighted(data):
    res = PanelOLS(data.y, data.x, weights=data.w).fit()
    res2 = PooledOLS(data.y, data.x, weights=data.w).fit()
    assert_results_equal(res, res2)
Example #5
0
def test_panel_no_effects(data):
    res = PanelOLS(data.y, data.x).fit()
    res2 = PooledOLS(data.y, data.x).fit()
    assert_results_equal(res, res2)
Example #6
0
def test_alt_rsquared_weighted(data):
    mod = PooledOLS(data.y, data.x, weights=data.w)
    res = mod.fit(debiased=False)
    assert_allclose(res.rsquared, res.rsquared_overall)
def test_extra_df(data):
    mod = PooledOLS(data.y, data.x)
    res = mod.fit()
    res_extra = mod.fit(extra_df=10)
    assert np.all(np.diag(res_extra.cov) > np.diag(res.cov))
Example #8
0
def test_uneuqal_samples():
    data = generate_data(False, "pandas")
    with pytest.raises(ValueError, match="dependent and exog must have"):
        PooledOLS(data.y.iloc[::2], data.x)