Skip to content

Commit 2c7c323

Browse files
committed
add some tests
1 parent f3bf0a3 commit 2c7c323

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

tests/test_vs_fixest.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,14 @@
118118
"Y2 ~ X2| f2 | X1 ~ Z1 + Z2",
119119
]
120120

121+
gml_fmls = [
122+
"Y ~ X1 + X2",
123+
"Y ~ X1*X2",
124+
# "Y ~ X1 + C(f2)",
125+
# "Y ~ X1 + i(f1, ref = 1)",
126+
"Y ~ X1:X2",
127+
]
128+
121129

122130
@pytest.fixture
123131
def data_feols(N=1000, seed=76540251, beta_type="2", error_type="2"):
@@ -584,6 +592,39 @@ def test_single_fit_iv(
584592
check_absolute_diff(py_confint, r_confint, 1e-06, "py_confint != r_confint")
585593

586594

595+
@pytest.mark.slow
596+
@pytest.mark.parametrize("N", [1000])
597+
@pytest.mark.parametrize("seed", [170])
598+
@pytest.mark.parametrize("dropna", [True, False])
599+
@pytest.mark.parametrize("fml", gml_fmls)
600+
def test_glm_vs_fixest(N, seed, dropna, fml):
601+
data = pf.get_data(N=N, seed=seed)
602+
data["Y"] = np.where(data["Y"] > 0, 1, 0)
603+
if dropna:
604+
data = data.dropna()
605+
606+
fit_logit = pf.feglm(fml=fml, data=data, family="logit")
607+
# fit_probit = pf.feglm(fml = fml, data=data, family="probit")
608+
609+
r_fml = _py_fml_to_r_fml(fml)
610+
data_r = get_data_r(fml, data)
611+
612+
fit_logit_r = fixest.feglm(
613+
ro.Formula(r_fml), data=data_r, family=stats.binomial(link="logit")
614+
)
615+
# fit_probit_r = fixest.feglm(ro.Formula(r_fml), data=data_r, family=stats.binomial(link="probit"))
616+
617+
py_logit_coefs = fit_logit.coef()
618+
# py_probit_coefs = fit_probit.coef()
619+
r_logit_coefs = stats.coef(fit_logit_r)
620+
# r_probit_coefs = stats.coef(fit_probit_r)
621+
622+
check_absolute_diff(
623+
py_logit_coefs, r_logit_coefs, 1e-08, "py_logit_coefs != r_logit_coefs"
624+
)
625+
# check_absolute_diff(py_probit_coefs, r_probit_coefs, 1e-08, "py_probit_coefs != r_probit_coefs")
626+
627+
587628
@pytest.mark.slow
588629
@pytest.mark.parametrize("N", [100])
589630
@pytest.mark.parametrize("seed", [17021])

0 commit comments

Comments
 (0)