def test_combine_subset_regression(self): # split sample into two, use first sample as prior for second endog = self.endog exog = self.exog nobs = len(endog) n05 = nobs // 2 np.random.seed(987125) # shuffle to get random subsamples shuffle_idx = np.random.permutation(np.arange(nobs)) ys = endog[shuffle_idx] xs = exog[shuffle_idx] k = 10 res_ols0 = OLS(ys[:n05], xs[:n05, :k]).fit() res_ols1 = OLS(ys[n05:], xs[n05:, :k]).fit() w = res_ols1.scale / res_ols0.scale #1.01 mod_1 = TheilGLS(ys[n05:], xs[n05:, :k], r_matrix=np.eye(k), q_matrix=res_ols0.params, sigma_prior=w * res_ols0.cov_params()) res_1p = mod_1.fit(cov_type='data-prior') res_1s = mod_1.fit(cov_type='sandwich') res_olsf = OLS(ys, xs[:, :k]).fit() assert_allclose(res_1p.params, res_olsf.params, rtol=1e-9) corr_fact = 0.96156318 # corrct for differences in scale computation assert_allclose(res_1p.bse, res_olsf.bse * corr_fact, rtol=1e-3) # regression test, does not verify numbers # especially why are these smaller than OLS on full sample # in larger sample, nobs=600, those were close to full OLS bse1 = np.array([ 0.27609914, 0.15808869, 0.39880789, 0.78583194, 0.68619331, 0.56252314, 0.55757562, 0.68538523, 0.39695081, 0.55988991]) assert_allclose(res_1s.bse, bse1, rtol=1e-7)
def _initialize(cls): y, x = cls.y, cls.x # adding 10 to avoid strict rtol at predicted values close to zero y = y + 10 k = x.shape[1] cov_type = 'HC0' restriction = np.eye(k)[2:] modp = TheilGLS(y, x, r_matrix=restriction) # the corresponding Theil penweight seems to be 2 * nobs / sigma2_e cls.res2 = modp.fit(pen_weight=120.74564413221599 * 1000) pen = smpen.L2ContraintsPenalty(restriction=restriction) mod = GLMPenalized(y, x, family=family.Gaussian(), penal=pen) # use default weight for GLMPenalized mod.pen_weight *= 1 cls.res1 = mod.fit(cov_type=cov_type, method='bfgs', maxiter=100, disp=0, trim=False) cls.k_nonzero = k cls.exog_index = slice(None, cls.k_nonzero, None) cls.k_params = x.shape[1] cls.atol = 1e-5 cls.rtol = 1e-5
def setup_class(cls): y, x = cls.get_sample() nobs = len(y) weights = (np.arange(nobs) < (nobs // 2)) + 0.5 mod1 = TheilGLS(y, x, sigma=weights, sigma_prior=[0, 0, 1., 1.]) cls.res1 = mod1.fit(200000) cls.res2 = GLS(y, x[:, :3], sigma=weights).fit()
def _initialize(cls): y, x = cls.y, cls.x # adding 10 to avoid strict rtol at predicted values close to zero y = y + 10 k = x.shape[1] cov_type = 'HC0' restriction = np.eye(k)[2:] modp = TheilGLS(y, x, r_matrix=restriction) # the corresponding Theil penweight seems to be 2 * nobs / sigma2_e cls.res2 = modp.fit(pen_weight=120.74564413221599 * 1000, use_t=False) pen = smpen.L2ContraintsPenalty(restriction=restriction) mod = GLMPenalized(y, x, family=family.Gaussian(), penal=pen) # use default weight for GLMPenalized mod.pen_weight *= 1 cls.res1 = mod.fit(cov_type=cov_type, method='bfgs', maxiter=100, disp=0, trim=False) cls.k_nonzero = k cls.exog_index = slice(None, cls.k_nonzero, None) cls.k_params = x.shape[1] cls.atol = 1e-5 cls.rtol = 1e-5
def setup_class(cls): cls.skip_inference = True y, x = cls.get_sample() xd = np.column_stack((x, x)) #sp = np.zeros(5), np.ones(5) r_matrix = np.eye(5, 10, 5) mod1 = TheilGLS(y, xd, r_matrix=r_matrix) #sigma_prior=[0, 0, 1., 1.]) cls.res1 = mod1.fit(0.001, cov_type='data-prior') cls.res2 = OLS(y, x).fit()
def setup_class(cls): y, x = cls.get_sample() #merge var1 and var2 x2 = x[:, :2].copy() x2[:, 1] += x[:, 2] #mod1 = TheilGLS(y, x, r_matrix =[[0, 1, -1, 0, 0]]) mod1 = TheilGLS(y, x[:, :3], r_matrix=[[0, 1, -1]]) cls.res1 = mod1.fit(200000) cls.res2 = OLS(y, x2).fit() # adjust precision, careful: cls.tol is mutable tol = {'pvalues': (1e-4, 2e-7), 'tvalues': (5e-4, 0)} tol.update(cls.tol) cls.tol = tol
def setup_class(cls): exog, penalty_matrix, restriction = cls._init() endog = data_mcycle['accel'] modp = TheilGLS(endog, exog, r_matrix=restriction) # scaling of penweith in R mgcv s_scale_r = 0.02630734 # Theil penweight uses preliminary sigma2_e to scale penweight sigma_e = 1405.7950179165323 cls.pw = pw = 1 / sigma_e / s_scale_r cls.res1 = modp.fit(pen_weight=pw, cov_type=cls.cov_type) cls.res2 = results_pls.pls5 cls.rtol_fitted = 1e-7 cls.covp_corrfact = 0.99786932844203202
def setup_class(cls): y, x = cls.get_sample() #merge var1 and var2 x2 = x[:, :2].copy() x2[:, 1] += x[:, 2] #mod1 = TheilGLS(y, x, r_matrix =[[0, 1, -1, 0, 0]]) mod1 = TheilGLS(y, x[:, :3], r_matrix =[[0, 1, -1]]) cls.res1 = mod1.fit(200000) cls.res2 = OLS(y, x2).fit() # adjust precision, careful: cls.tol is mutable tol = {'pvalues': (1e-4, 2e-7), 'tvalues': (5e-4, 0)} tol.update(cls.tol) cls.tol = tol
def setup_class(cls): cur_dir = os.path.dirname(os.path.abspath(__file__)) filepath = os.path.join(cur_dir, "results", "theil_textile_predict.csv") cls.res_predict = pd.read_csv(filepath, sep=",") names = "year lconsump lincome lprice".split() data = np.array( '''\ 1923 1.99651 1.98543 2.00432 1924 1.99564 1.99167 2.00043 1925 2 2 2 1926 2.04766 2.02078 1.95713 1927 2.08707 2.02078 1.93702 1928 2.07041 2.03941 1.95279 1929 2.08314 2.04454 1.95713 1930 2.13354 2.05038 1.91803 1931 2.18808 2.03862 1.84572 1932 2.18639 2.02243 1.81558 1933 2.20003 2.00732 1.78746 1934 2.14799 1.97955 1.79588 1935 2.13418 1.98408 1.80346 1936 2.22531 1.98945 1.72099 1937 2.18837 2.0103 1.77597 1938 2.17319 2.00689 1.77452 1939 2.2188 2.0162 1.78746'''.split(), float).reshape(-1, 4) endog = data[:, 1] # constant at the end to match Stata exog = np.column_stack((data[:, 2:], np.ones(endog.shape[0]))) #prior(lprice -0.7 0.15 lincome 1 0.15) cov(lprice lincome -0.01) r_matrix = np.array([[1, 0, 0], [0, 1, 0]]) r_mean = [1, -0.7] cov_r = np.array([[0.15**2, -0.01], [-0.01, 0.15**2]]) mod = TheilGLS(endog, exog, r_matrix, q_matrix=r_mean, sigma_prior=cov_r) cls.res1 = mod.fit(cov_type='data-prior', use_t=True) #cls.res1._cache['scale'] = 0.0001852252884817586 # from tg_mixed cls.res1._cache['scale'] = 0.00018334123641580062 # from OLS from .results import results_theil_textile as resmodule cls.res2 = resmodule.results_theil_textile
def setup_class(cls): cur_dir = os.path.dirname(os.path.abspath(__file__)) filepath = os.path.join(cur_dir, "results", "theil_textile_predict.csv") cls.res_predict = pd.read_csv(filepath, sep=",") names = "year lconsump lincome lprice".split() data = np.array('''\ 1923 1.99651 1.98543 2.00432 1924 1.99564 1.99167 2.00043 1925 2 2 2 1926 2.04766 2.02078 1.95713 1927 2.08707 2.02078 1.93702 1928 2.07041 2.03941 1.95279 1929 2.08314 2.04454 1.95713 1930 2.13354 2.05038 1.91803 1931 2.18808 2.03862 1.84572 1932 2.18639 2.02243 1.81558 1933 2.20003 2.00732 1.78746 1934 2.14799 1.97955 1.79588 1935 2.13418 1.98408 1.80346 1936 2.22531 1.98945 1.72099 1937 2.18837 2.0103 1.77597 1938 2.17319 2.00689 1.77452 1939 2.2188 2.0162 1.78746'''.split(), float).reshape(-1, 4) endog = data[:, 1] # constant at the end to match Stata exog = np.column_stack((data[:, 2:], np.ones(endog.shape[0]))) #prior(lprice -0.7 0.15 lincome 1 0.15) cov(lprice lincome -0.01) r_matrix = np.array([[1, 0, 0], [0, 1, 0]]) r_mean = [1, -0.7] cov_r = np.array([[0.15**2, -0.01], [-0.01, 0.15**2]]) mod = TheilGLS(endog, exog, r_matrix, q_matrix=r_mean, sigma_prior=cov_r) cls.res1 = mod.fit(cov_type='data-prior') #cls.res1._cache['scale'] = 0.0001852252884817586 # from tg_mixed cls.res1._cache['scale'] = 0.00018334123641580062 # from OLS from .results import results_theil_textile as resmodule cls.res2 = resmodule.results_theil_textile
def setup_class(cls): y, x = cls.get_sample() #merge var1 and var2 x2 = x[:, :2].copy() x2[:, 1] += x[:, 2] #mod1 = TheilGLS(y, x, r_matrix =[[0, 1, -1, 0, 0]]) mod1 = TheilGLS(y, x[:, :3], r_matrix =[[0, 1, -1]]) cls.res1 = mod1.fit(100) cls.res2 = OLS(y, x2).fit() # adjust precision, careful: cls.tol is mutable import copy tol = copy.copy(cls.tol) tol2 = {'default': (0.15, 0), 'params': (0.05, 0), 'pvalues': (0.02, 0.001), } tol.update(tol2) cls.tol = tol
def test_combine_subset_regression(self): # split sample into two, use first sample as prior for second endog = self.endog exog = self.exog nobs = len(endog) n05 = nobs // 2 np.random.seed(987125) # shuffle to get random subsamples shuffle_idx = np.random.permutation(np.arange(nobs)) ys = endog[shuffle_idx] xs = exog[shuffle_idx] k = 10 res_ols0 = OLS(ys[:n05], xs[:n05, :k]).fit() res_ols1 = OLS(ys[n05:], xs[n05:, :k]).fit() w = res_ols1.scale / res_ols0.scale #1.01 mod_1 = TheilGLS(ys[n05:], xs[n05:, :k], r_matrix=np.eye(k), q_matrix=res_ols0.params, sigma_prior=w * res_ols0.cov_params()) res_1p = mod_1.fit(cov_type='data-prior') res_1s = mod_1.fit(cov_type='sandwich') res_olsf = OLS(ys, xs[:, :k]).fit() assert_allclose(res_1p.params, res_olsf.params, rtol=1e-9) corr_fact = np.sqrt(res_1p.scale / res_olsf.scale) # corrct for differences in scale computation assert_allclose(res_1p.bse, res_olsf.bse * corr_fact, rtol=1e-3) # regression test, does not verify numbers # especially why are these smaller than OLS on full sample # in larger sample, nobs=600, those were close to full OLS bse1 = np.array([ 0.26589869, 0.15224812, 0.38407399, 0.75679949, 0.66084200, 0.54174080, 0.53697607, 0.66006377, 0.38228551, 0.53920485 ]) assert_allclose(res_1s.bse, bse1, rtol=1e-7)
def test_combine_subset_regression(self): # split sample into two, use first sample as prior for second endog = self.endog exog = self.exog nobs = len(endog) n05 = nobs // 2 np.random.seed(987125) # shuffle to get random subsamples shuffle_idx = np.random.permutation(np.arange(nobs)) ys = endog[shuffle_idx] xs = exog[shuffle_idx] k = 10 res_ols0 = OLS(ys[:n05], xs[:n05, :k]).fit() res_ols1 = OLS(ys[n05:], xs[n05:, :k]).fit() w = res_ols1.scale / res_ols0.scale #1.01 mod_1 = TheilGLS(ys[n05:], xs[n05:, :k], r_matrix=np.eye(k), q_matrix=res_ols0.params, sigma_prior=w * res_ols0.cov_params()) res_1p = mod_1.fit(cov_type='data-prior') res_1s = mod_1.fit(cov_type='sandwich') res_olsf = OLS(ys, xs[:, :k]).fit() assert_allclose(res_1p.params, res_olsf.params, rtol=1e-9) corr_fact = 0.96156318 # corrct for differences in scale computation assert_allclose(res_1p.bse, res_olsf.bse * corr_fact, rtol=1e-3) # regression test, does not verify numbers # especially why are these smaller than OLS on full sample # in larger sample, nobs=600, those were close to full OLS bse1 = np.array([ 0.27609914, 0.15808869, 0.39880789, 0.78583194, 0.68619331, 0.56252314, 0.55757562, 0.68538523, 0.39695081, 0.55988991 ]) assert_allclose(res_1s.bse, bse1, rtol=1e-7)
def test_combine_subset_regression(self): # split sample into two, use first sample as prior for second endog = self.endog exog = self.exog nobs = len(endog) n05 = nobs // 2 np.random.seed(987125) # shuffle to get random subsamples shuffle_idx = np.random.permutation(np.arange(nobs)) ys = endog[shuffle_idx] xs = exog[shuffle_idx] k = 10 res_ols0 = OLS(ys[:n05], xs[:n05, :k]).fit() res_ols1 = OLS(ys[n05:], xs[n05:, :k]).fit() w = res_ols1.scale / res_ols0.scale #1.01 mod_1 = TheilGLS(ys[n05:], xs[n05:, :k], r_matrix=np.eye(k), q_matrix=res_ols0.params, sigma_prior=w * res_ols0.cov_params()) res_1p = mod_1.fit(cov_type='data-prior') res_1s = mod_1.fit(cov_type='sandwich') res_olsf = OLS(ys, xs[:, :k]).fit() assert_allclose(res_1p.params, res_olsf.params, rtol=1e-9) corr_fact = np.sqrt(res_1p.scale / res_olsf.scale) # corrct for differences in scale computation assert_allclose(res_1p.bse, res_olsf.bse * corr_fact, rtol=1e-3) # regression test, does not verify numbers # especially why are these smaller than OLS on full sample # in larger sample, nobs=600, those were close to full OLS bse1 = np.array([ 0.26589869, 0.15224812, 0.38407399, 0.75679949, 0.66084200, 0.54174080, 0.53697607, 0.66006377, 0.38228551, 0.53920485]) assert_allclose(res_1s.bse, bse1, rtol=1e-7)
def test_regression(self): y = self.endog x = self.exog n_groups, k_vars = self.dgp.n_groups, self.dgp.k_vars R = np.c_[np.zeros((n_groups, k_vars - 1)), np.eye(n_groups)] r = np.zeros(n_groups) R = np.c_[np.zeros((n_groups - 1, k_vars)), np.eye(n_groups - 1) - 1. / n_groups * np.ones( (n_groups - 1, n_groups - 1))] r = np.zeros(n_groups - 1) R[:, k_vars - 1] = -1 lambd = 1 #1e-4 mod = TheilGLS(y, x, r_matrix=R, q_matrix=r, sigma_prior=lambd) res = mod.fit() # regression test params1 = np.array([ 0.96518694, 1.06152005, 0.31844136, 3.02747485, 3.25308031, 3.76229199, 1.99795797, 3.9831158, 3.1055317, 1.91599103, 4.5354633, 4.14332517, 3.69462963, 3.79567255, 2.18633118, 2.02848738, 3.74269763, 3.60041509, 3.27734962, 2.47771329, 3.23858674, 4.2973348, 3.98013994, 3.73415254, 2.88870379, 3.91311563, 3.71043309, 1.80506601, 3.78067131, 1.77164485, 3.88247, 3.28328127, 3.1313951, 3.03006754, 3.31012921, 3.08761618, 2.96735903, 1.54005178, 1.27778498, 1.47949121, 4.87184321, 3.03812406, 3.43574332, 2.16983158, 4.45339409, 2.64502381, 4.04767553, 4.42282326, 2.40153298, 3.55409206, 2.71256315, 3.32197196, 3.56054788, 2.58639318, 0.96230275, 1.8382348, 2.30788361, 2.49415769, 0.74777288, 3.04014659, 1.82256153, 4.89165865 ]) assert_allclose(res.params, params1) pen_weight_aicc = mod.select_pen_weight(method='aicc') pen_weight_gcv = mod.select_pen_weight(method='gcv') pen_weight_cv = mod.select_pen_weight(method='cv') pen_weight_bic = mod.select_pen_weight(method='bic') assert_allclose(pen_weight_gcv, pen_weight_aicc, rtol=0.1) # regression tests: assert_allclose(pen_weight_aicc, 2.98779297, rtol=1e-4) assert_allclose(pen_weight_gcv, 2.69970703, rtol=1e-4) assert_allclose(pen_weight_bic, 5.76005859, rtol=1e-4) assert_allclose(pen_weight_cv, 1.3, rtol=1e-4)
def test_regression(self): y = self.endog x = self.exog n_groups, k_vars = self.dgp.n_groups, self.dgp.k_vars Rg = (np.eye(n_groups - 1) - 1. / n_groups * np.ones( (n_groups - 1, n_groups - 1))) R = np.c_[np.zeros((n_groups - 1, k_vars)), Rg] r = np.zeros(n_groups - 1) R[:, k_vars - 1] = -1 lambd = 1 #1e-4 mod = TheilGLS(y, x, r_matrix=R, q_matrix=r, sigma_prior=lambd) res = mod.fit() # regression test params1 = np.array([ 0.9751655, 1.05215277, 0.37135028, 2.0492626, 2.82062503, 2.82139775, 1.92940468, 2.96942081, 2.86349583, 3.20695368, 4.04516422, 3.04918839, 4.54748808, 3.49026961, 3.15529618, 4.25552932, 2.65471759, 3.62328747, 3.07283053, 3.49485898, 3.42301424, 2.94677593, 2.81549427, 2.24895113, 2.29222784, 2.89194946, 3.17052308, 2.37754241, 3.54358533, 3.79838425, 1.91189071, 1.15976407, 4.05629691, 1.58556827, 4.49941666, 4.08608599, 3.1889269, 2.86203652, 3.06785013, 1.9376162, 2.90657681, 3.71910592, 3.15607617, 3.58464547, 2.15466323, 4.87026717, 2.92909833, 2.64998337, 2.891171, 4.04422964, 3.54616122, 4.12135273, 3.70232028, 3.8314497, 2.2591451, 2.39321422, 3.13064532, 2.1569678, 2.04667506, 3.92064689, 3.66243644, 3.11742725 ]) assert_allclose(res.params, params1) pen_weight_aicc = mod.select_pen_weight(method='aicc') pen_weight_gcv = mod.select_pen_weight(method='gcv') pen_weight_cv = mod.select_pen_weight(method='cv') pen_weight_bic = mod.select_pen_weight(method='bic') assert_allclose(pen_weight_gcv, pen_weight_aicc, rtol=0.1) # regression tests: assert_allclose(pen_weight_aicc, 4.77333984, rtol=1e-4) assert_allclose(pen_weight_gcv, 4.45546875, rtol=1e-4) assert_allclose(pen_weight_bic, 9.35957031, rtol=1e-4) assert_allclose(pen_weight_cv, 1.99277344, rtol=1e-4)
def test_regression(self): y = self.endog x = self.exog n_groups, k_vars = self.dgp.n_groups, self.dgp.k_vars R = np.c_[np.zeros((n_groups, k_vars-1)), np.eye(n_groups)] r = np.zeros(n_groups) R = np.c_[np.zeros((n_groups-1, k_vars)), np.eye(n_groups-1)-1./n_groups * np.ones((n_groups-1, n_groups-1))] r = np.zeros(n_groups-1) R[:, k_vars-1] = -1 lambd = 1 #1e-4 mod = TheilGLS(y, x, r_matrix=R, q_matrix=r, sigma_prior=lambd) res = mod.fit() # regression test params1 = np.array([ 0.96518694, 1.06152005, 0.31844136, 3.02747485, 3.25308031, 3.76229199, 1.99795797, 3.9831158 , 3.1055317 , 1.91599103, 4.5354633 , 4.14332517, 3.69462963, 3.79567255, 2.18633118, 2.02848738, 3.74269763, 3.60041509, 3.27734962, 2.47771329, 3.23858674, 4.2973348 , 3.98013994, 3.73415254, 2.88870379, 3.91311563, 3.71043309, 1.80506601, 3.78067131, 1.77164485, 3.88247 , 3.28328127, 3.1313951 , 3.03006754, 3.31012921, 3.08761618, 2.96735903, 1.54005178, 1.27778498, 1.47949121, 4.87184321, 3.03812406, 3.43574332, 2.16983158, 4.45339409, 2.64502381, 4.04767553, 4.42282326, 2.40153298, 3.55409206, 2.71256315, 3.32197196, 3.56054788, 2.58639318, 0.96230275, 1.8382348 , 2.30788361, 2.49415769, 0.74777288, 3.04014659, 1.82256153, 4.89165865]) assert_allclose(res.params, params1) pen_weight_aicc = mod.select_pen_weight(method='aicc') pen_weight_gcv = mod.select_pen_weight(method='gcv') pen_weight_cv = mod.select_pen_weight(method='cv') pen_weight_bic = mod.select_pen_weight(method='bic') assert_allclose(pen_weight_gcv, pen_weight_aicc, rtol=0.1) # regression tests: assert_allclose(pen_weight_aicc, 2.98779297, rtol=1e-4) assert_allclose(pen_weight_gcv, 2.69970703, rtol=1e-4) assert_allclose(pen_weight_bic, 5.76005859, rtol=1e-4) assert_allclose(pen_weight_cv, 1.3, rtol=1e-4)
def test_regression(self): y = self.endog x = self.exog n_groups, k_vars = self.dgp.n_groups, self.dgp.k_vars Rg = (np.eye(n_groups-1) - 1. / n_groups * np.ones((n_groups - 1, n_groups-1))) R = np.c_[np.zeros((n_groups - 1, k_vars)), Rg] r = np.zeros(n_groups - 1) R[:, k_vars-1] = -1 lambd = 1 #1e-4 mod = TheilGLS(y, x, r_matrix=R, q_matrix=r, sigma_prior=lambd) res = mod.fit() # regression test params1 = np.array([ 0.9751655 , 1.05215277, 0.37135028, 2.0492626 , 2.82062503, 2.82139775, 1.92940468, 2.96942081, 2.86349583, 3.20695368, 4.04516422, 3.04918839, 4.54748808, 3.49026961, 3.15529618, 4.25552932, 2.65471759, 3.62328747, 3.07283053, 3.49485898, 3.42301424, 2.94677593, 2.81549427, 2.24895113, 2.29222784, 2.89194946, 3.17052308, 2.37754241, 3.54358533, 3.79838425, 1.91189071, 1.15976407, 4.05629691, 1.58556827, 4.49941666, 4.08608599, 3.1889269 , 2.86203652, 3.06785013, 1.9376162 , 2.90657681, 3.71910592, 3.15607617, 3.58464547, 2.15466323, 4.87026717, 2.92909833, 2.64998337, 2.891171 , 4.04422964, 3.54616122, 4.12135273, 3.70232028, 3.8314497 , 2.2591451 , 2.39321422, 3.13064532, 2.1569678 , 2.04667506, 3.92064689, 3.66243644, 3.11742725]) assert_allclose(res.params, params1) pen_weight_aicc = mod.select_pen_weight(method='aicc') pen_weight_gcv = mod.select_pen_weight(method='gcv') pen_weight_cv = mod.select_pen_weight(method='cv') pen_weight_bic = mod.select_pen_weight(method='bic') assert_allclose(pen_weight_gcv, pen_weight_aicc, rtol=0.1) # regression tests: assert_allclose(pen_weight_aicc, 4.77333984, rtol=1e-4) assert_allclose(pen_weight_gcv, 4.45546875, rtol=1e-4) assert_allclose(pen_weight_bic, 9.35957031, rtol=1e-4) assert_allclose(pen_weight_cv, 1.99277344, rtol=1e-4)
def setup_class(cls): y, x = cls.get_sample() mod1 = TheilGLS(y, x, sigma_prior=[0, 0, 1., 1.]) cls.res1 = mod1.fit(0) cls.res2 = OLS(y, x).fit()