def test_gaussian_lmm(): df = pd.read_csv(os.path.join(get_resource_path(), "sample_data.csv")) model = Lmer("DV ~ IV3 + IV2 + (IV2|Group) + (1|IV3)", data=df) opt_opts = "optimizer='Nelder_Mead', optCtrl = list(FtolAbs=1e-8, XtolRel=1e-8)" model.fit(summarize=False, control=opt_opts) assert model.coefs.shape == (3, 8) estimates = np.array([12.04334602, -1.52947016, 0.67768509]) assert np.allclose(model.coefs["Estimate"], estimates, atol=0.001) assert isinstance(model.fixef, list) assert model.fixef[0].shape == (47, 3) assert model.fixef[1].shape == (3, 3) assert isinstance(model.ranef, list) assert model.ranef[0].shape == (47, 2) assert model.ranef[1].shape == (3, 1) assert model.ranef_corr.shape == (1, 3) assert model.ranef_var.shape == (4, 3) assert np.allclose(model.coefs.loc[:, "Estimate"], model.fixef[0].mean(), atol=0.01) # Test prediction assert np.allclose(model.predict(model.data, use_rfx=True), model.data.fits) # Smoketest for simulate model.simulate(2) model.simulate(2, use_rfx=True) # Smoketest for old_optimizer model.fit(summarize=False, old_optimizer=True)
def test_gaussian_lmm(): df = pd.read_csv(os.path.join(get_resource_path(), "sample_data.csv")) model = Lmer("DV ~ IV3 + IV2 + (IV2|Group) + (1|IV3)", data=df) opt_opts = "optimizer='Nelder_Mead', optCtrl = list(FtolAbs=1e-8, XtolRel=1e-8)" model.fit(summarize=False, control=opt_opts) assert model.coefs.shape == (3, 8) estimates = np.array([12.04334602, -1.52947016, 0.67768509]) assert np.allclose(model.coefs["Estimate"], estimates, atol=0.001) assert isinstance(model.fixef, list) assert (model.fixef[0].index.astype(int) == df.Group.unique()).all() assert (model.fixef[1].index.astype(float) == df.IV3.unique()).all() assert model.fixef[0].shape == (47, 3) assert model.fixef[1].shape == (3, 3) assert isinstance(model.ranef, list) assert model.ranef[0].shape == (47, 2) assert model.ranef[1].shape == (3, 1) assert (model.ranef[1].index == ["0.5", "1", "1.5"]).all() assert model.ranef_corr.shape == (1, 3) assert model.ranef_var.shape == (4, 3) assert np.allclose(model.coefs.loc[:, "Estimate"], model.fixef[0].mean(), atol=0.01) # Test prediction assert np.allclose(model.predict(model.data, use_rfx=True), model.data.fits) # Test simulate out = model.simulate(2) assert isinstance(out, pd.DataFrame) assert out.shape == (model.data.shape[0], 2) out = model.simulate(2, use_rfx=True) assert isinstance(out, pd.DataFrame) assert out.shape == (model.data.shape[0], 2) # Smoketest for old_optimizer model.fit(summarize=False, old_optimizer=True) # test fixef code for 1 fixed effect model = Lmer("DV ~ IV3 + IV2 + (IV2|Group)", data=df) model.fit(summarize=False, control=opt_opts) assert (model.fixef.index.astype(int) == df.Group.unique()).all() assert model.fixef.shape == (47, 3) assert np.allclose(model.coefs.loc[:, "Estimate"], model.fixef.mean(), atol=0.01) # test fixef code for 0 fixed effects model = Lmer("DV ~ (IV2|Group) + (1|IV3)", data=df) model.fit(summarize=False, control=opt_opts) assert isinstance(model.fixef, list) assert (model.fixef[0].index.astype(int) == df.Group.unique()).all() assert (model.fixef[1].index.astype(float) == df.IV3.unique()).all() assert model.fixef[0].shape == (47, 2) assert model.fixef[1].shape == (3, 2)