def starting_values(self, nconstraints): beta = gee_ordinal_starting_values(self.endog, len(self.params)) if nconstraints > 0: m = self.exog_ex.shape[1] - nconstraints beta = beta[0:m] return beta
def test_ordinal_pandas(self): family = Binomial() endog_orig, exog_orig, groups = load_data("gee_ordinal_1.csv", icept=False) data = np.concatenate( (endog_orig[:, None], exog_orig, groups[:, None]), axis=1) data = pd.DataFrame(data) data.columns = ["endog", "x1", "x2", "x3", "x4", "x5", "group"] # Recode as cumulative indicators endog, exog, intercepts, nlevel = \ gee_setup_ordinal(data, "endog") exog1 = np.concatenate((intercepts, exog), axis=1) groups = exog1[:, -1] exog1 = exog1[:, 0:-1] v = GlobalOddsRatio(nlevel, "ordinal") beta = gee_ordinal_starting_values(endog_orig, exog_orig.shape[1]) md = GEE(endog, exog1, groups, None, family, v) mdf = md.fit(start_params=beta) cf = np.r_[1.09238131, 0.02148193, -0.39879146, -0.01855666, 0.02983409, 1.18123172, 0.01845318, -1.10233886] se = np.r_[0.10878752, 0.10326078, 0.11171241, 0.05488705, 0.05995019, 0.0916574, 0.05951445, 0.08539281] assert_almost_equal(mdf.params, cf, decimal=2) assert_almost_equal(mdf.bse, se, decimal=2)
def test_ordinal(self): family = Binomial() endog_orig, exog_orig, groups = load_data("gee_ordinal_1.csv", icept=False) data = np.concatenate((endog_orig[:,None], exog_orig, groups[:,None]), axis=1) # Recode as cumulative indicators endog, exog, intercepts, nlevel = gee_setup_ordinal(data, 0) exog1 = np.concatenate((intercepts, exog), axis=1) groups = exog1[:,-1] exog1 = exog1[:,0:-1] v = GlobalOddsRatio(nlevel, "ordinal") beta = gee_ordinal_starting_values(endog_orig, exog_orig.shape[1]) md = GEE(endog, exog1, groups, None, family, v) mdf = md.fit(start_params = beta) cf = np.r_[1.09238131, 0.02148193, -0.39879146, -0.01855666, 0.02983409, 1.18123172, 0.01845318, -1.10233886] se = np.r_[0.10878752, 0.10326078, 0.11171241, 0.05488705, 0.05995019, 0.0916574, 0.05951445, 0.08539281] assert_almost_equal(mdf.params, cf, decimal=5) assert_almost_equal(mdf.bse, se, decimal=5)