def _work(y, x, w, regi_ids, r, yend, q, robust, sig2n_k, name_ds, name_y, name_x, name_yend, name_q, name_w, name_regimes): y_r = y[regi_ids[r]] x_r = x[regi_ids[r]] yend_r = yend[regi_ids[r]] q_r = q[regi_ids[r]] x_constant = USER.check_constant(x_r) if robust == 'hac' or robust == 'ogmm': robust2 = None else: robust2 = robust model = BaseTSLS(y_r, x_constant, yend_r, q_r, robust=robust2, sig2n_k=sig2n_k) model.title = "TWO STAGE LEAST SQUARES ESTIMATION - REGIME %s" % r if robust == 'ogmm': _optimal_weight(model, sig2n_k, warn=False) model.robust = USER.set_robust(robust) model.name_ds = name_ds model.name_y = '%s_%s' % (str(r), name_y) model.name_x = ['%s_%s' % (str(r), i) for i in name_x] model.name_yend = ['%s_%s' % (str(r), i) for i in name_yend] model.name_z = model.name_x + model.name_yend model.name_q = ['%s_%s' % (str(r), i) for i in name_q] model.name_h = model.name_x + model.name_q model.name_w = name_w model.name_regimes = name_regimes if w: w_r, warn = REGI.w_regime(w, regi_ids[r], r, transform=True) set_warn(model, warn) model.w = w_r return model
def __init__(self, y, x, yend=None, q=None,\ w=None, w_lags=1, lag_q=True,\ robust=None, gwk=None, sig2n_k=False,\ spat_diag=False,\ vm=False, name_y=None, name_x=None,\ name_yend=None, name_q=None,\ name_w=None, name_gwk=None, name_ds=None): n = USER.check_arrays(x, yend, q) USER.check_y(y, n) USER.check_weights(w, y, w_required=True) USER.check_robust(robust, gwk) yend2, q2 = set_endog(y, x, w, yend, q, w_lags, lag_q) x_constant = USER.check_constant(x) BaseGM_Lag.__init__(self, y=y, x=x_constant, w=w.sparse, yend=yend2, q=q2,\ w_lags=w_lags, robust=robust, gwk=gwk,\ lag_q=lag_q, sig2n_k=sig2n_k) self.predy_e, self.e_pred, warn = sp_att(w,self.y,self.predy,\ yend2[:,-1].reshape(self.n,1),self.betas[-1]) set_warn(self,warn) self.title = "SPATIAL TWO STAGE LEAST SQUARES" self.name_ds = USER.set_name_ds(name_ds) self.name_y = USER.set_name_y(name_y) self.name_x = USER.set_name_x(name_x, x) self.name_yend = USER.set_name_yend(name_yend, yend) self.name_yend.append(USER.set_name_yend_sp(self.name_y)) self.name_z = self.name_x + self.name_yend self.name_q = USER.set_name_q(name_q, q) self.name_q.extend(USER.set_name_q_sp(self.name_x, w_lags, self.name_q, lag_q)) self.name_h = USER.set_name_h(self.name_x, self.name_q) self.robust = USER.set_robust(robust) self.name_w = USER.set_name_w(name_w, w) self.name_gwk = USER.set_name_w(name_gwk, gwk) SUMMARY.GM_Lag(reg=self, w=w, vm=vm, spat_diag=spat_diag)
def __init__(self, y, x, yend, q, w=None, robust=None, gwk=None, sig2n_k=False, spat_diag=False, vm=False, name_y=None, name_x=None, name_yend=None, name_q=None, name_w=None, name_gwk=None, name_ds=None): n = USER.check_arrays(y, x, yend, q) USER.check_y(y, n) USER.check_weights(w, y) USER.check_robust(robust, gwk) USER.check_spat_diag(spat_diag, w) x_constant = USER.check_constant(x) BaseTSLS.__init__(self, y=y, x=x_constant, yend=yend, q=q, robust=robust, gwk=gwk, sig2n_k=sig2n_k) self.title = "TWO STAGE LEAST SQUARES" self.name_ds = USER.set_name_ds(name_ds) self.name_y = USER.set_name_y(name_y) self.name_x = USER.set_name_x(name_x, x) self.name_yend = USER.set_name_yend(name_yend, yend) self.name_z = self.name_x + self.name_yend self.name_q = USER.set_name_q(name_q, q) self.name_h = USER.set_name_h(self.name_x, self.name_q) self.robust = USER.set_robust(robust) self.name_w = USER.set_name_w(name_w, w) self.name_gwk = USER.set_name_w(name_gwk, gwk) SUMMARY.TSLS(reg=self, vm=vm, w=w, spat_diag=spat_diag)
def __init__(self, y, x, yend=None, q=None,\ w=None, w_lags=1, lag_q=True,\ robust=None, gwk=None, sig2n_k=False,\ spat_diag=False,\ vm=False, name_y=None, name_x=None,\ name_yend=None, name_q=None,\ name_w=None, name_gwk=None, name_ds=None): n = USER.check_arrays(x, yend, q) USER.check_y(y, n) USER.check_weights(w, y, w_required=True) USER.check_robust(robust, gwk) yend2, q2 = set_endog(y, x, w, yend, q, w_lags, lag_q) x_constant = USER.check_constant(x) BaseGM_Lag.__init__(self, y=y, x=x_constant, w=w.sparse, yend=yend2, q=q2,\ w_lags=w_lags, robust=robust, gwk=gwk,\ lag_q=lag_q, sig2n_k=sig2n_k) self.predy_e, self.e_pred, warn = sp_att(w,self.y,self.predy,\ yend2[:,-1].reshape(self.n,1),self.betas[-1]) set_warn(self, warn) self.title = "SPATIAL TWO STAGE LEAST SQUARES" self.name_ds = USER.set_name_ds(name_ds) self.name_y = USER.set_name_y(name_y) self.name_x = USER.set_name_x(name_x, x) self.name_yend = USER.set_name_yend(name_yend, yend) self.name_yend.append(USER.set_name_yend_sp(self.name_y)) self.name_z = self.name_x + self.name_yend self.name_q = USER.set_name_q(name_q, q) self.name_q.extend( USER.set_name_q_sp(self.name_x, w_lags, self.name_q, lag_q)) self.name_h = USER.set_name_h(self.name_x, self.name_q) self.robust = USER.set_robust(robust) self.name_w = USER.set_name_w(name_w, w) self.name_gwk = USER.set_name_w(name_gwk, gwk) SUMMARY.GM_Lag(reg=self, w=w, vm=vm, spat_diag=spat_diag)
def _work(y,x,regi_ids,r,yend,q,w_r,w_lags,lag_q,robust,sig2n_k,name_ds,name_y,name_x,name_yend,name_q,name_w,name_regimes): y_r = y[regi_ids[r]] x_r = x[regi_ids[r]] if yend != None: yend_r = yend[regi_ids[r]] else: yend_r = yend if q != None: q_r = q[regi_ids[r]] else: q_r = q yend_r, q_r = set_endog_sparse(y_r, x_r, w_r, yend_r, q_r, w_lags, lag_q) x_constant = USER.check_constant(x_r) if robust == 'hac': robust = None model = BaseTSLS(y_r, x_constant, yend_r, q_r, robust=robust, sig2n_k=sig2n_k) model.title = "SPATIAL TWO STAGE LEAST SQUARES ESTIMATION - REGIME %s" %r model.robust = USER.set_robust(robust) model.name_ds = name_ds model.name_y = '%s_%s'%(str(r), name_y) model.name_x = ['%s_%s'%(str(r), i) for i in name_x] model.name_yend = ['%s_%s'%(str(r), i) for i in name_yend] model.name_z = model.name_x + model.name_yend model.name_q = ['%s_%s'%(str(r), i) for i in name_q] model.name_h = model.name_x + model.name_q model.name_w = name_w model.name_regimes = name_regimes return model
def __init__(self, y, x, regimes, w=None, robust=None, gwk=None, sig2n_k=True, nonspat_diag=True, spat_diag=False, moran=False, white_test=False, vm=False, constant_regi='many', cols2regi='all', regime_err_sep=True, cores=None, name_y=None, name_x=None, name_regimes=None, name_w=None, name_gwk=None, name_ds=None): n = USER.check_arrays(y, x) USER.check_y(y, n) USER.check_weights(w, y) USER.check_robust(robust, gwk) USER.check_spat_diag(spat_diag, w) self.name_x_r = USER.set_name_x(name_x, x) self.constant_regi = constant_regi self.cols2regi = cols2regi self.name_w = USER.set_name_w(name_w, w) self.name_gwk = USER.set_name_w(name_gwk, gwk) self.name_ds = USER.set_name_ds(name_ds) self.name_y = USER.set_name_y(name_y) self.name_regimes = USER.set_name_ds(name_regimes) self.n = n cols2regi = REGI.check_cols2regi( constant_regi, cols2regi, x, add_cons=False) self.regimes_set = REGI._get_regimes_set(regimes) self.regimes = regimes USER.check_regimes(self.regimes_set, self.n, x.shape[1]) if regime_err_sep == True and robust == 'hac': set_warn( self, "Error by regimes is incompatible with HAC estimation. Hence, error by regimes has been disabled for this model.") regime_err_sep = False self.regime_err_sep = regime_err_sep if regime_err_sep == True and set(cols2regi) == set([True]) and constant_regi == 'many': self.y = y name_x = USER.set_name_x(name_x, x) regi_ids = dict((r, list(np.where(np.array(regimes) == r)[0])) for r in self.regimes_set) self._ols_regimes_multi(x, w, regi_ids, cores, gwk, sig2n_k, robust, nonspat_diag, spat_diag, vm, name_x, moran, white_test) else: name_x = USER.set_name_x(name_x, x, constant=True) x, self.name_x = REGI.Regimes_Frame.__init__(self, x, regimes, constant_regi, cols2regi, name_x) BaseOLS.__init__(self, y=y, x=x, robust=robust, gwk=gwk, sig2n_k=sig2n_k) if regime_err_sep == True and robust == None: y2, x2 = REGI._get_weighted_var( regimes, self.regimes_set, sig2n_k, self.u, y, x) ols2 = BaseOLS(y=y2, x=x2, sig2n_k=sig2n_k) RegressionProps_basic(self, betas=ols2.betas, vm=ols2.vm) self.title = "ORDINARY LEAST SQUARES - REGIMES (Group-wise heteroskedasticity)" nonspat_diag = None set_warn( self, "Residuals treated as homoskedastic for the purpose of diagnostics.") else: self.title = "ORDINARY LEAST SQUARES - REGIMES" self.robust = USER.set_robust(robust) self.chow = REGI.Chow(self) SUMMARY.OLS(reg=self, vm=vm, w=w, nonspat_diag=nonspat_diag, spat_diag=spat_diag, moran=moran, white_test=white_test, regimes=True)
def __init__(self, y, x, regimes, w=None, robust=None, gwk=None, sig2n_k=True, nonspat_diag=True, spat_diag=False, moran=False, white_test=False, vm=False, constant_regi='many', cols2regi='all', regime_err_sep=True, cores=False, name_y=None, name_x=None, name_regimes=None, name_w=None, name_gwk=None, name_ds=None): n = USER.check_arrays(y, x) USER.check_y(y, n) USER.check_weights(w, y) USER.check_robust(robust, gwk) USER.check_spat_diag(spat_diag, w) self.name_x_r = USER.set_name_x(name_x, x) self.constant_regi = constant_regi self.cols2regi = cols2regi self.name_w = USER.set_name_w(name_w, w) self.name_gwk = USER.set_name_w(name_gwk, gwk) self.name_ds = USER.set_name_ds(name_ds) self.name_y = USER.set_name_y(name_y) self.name_regimes = USER.set_name_ds(name_regimes) self.n = n cols2regi = REGI.check_cols2regi( constant_regi, cols2regi, x, add_cons=False) self.regimes_set = REGI._get_regimes_set(regimes) self.regimes = regimes USER.check_regimes(self.regimes_set, self.n, x.shape[1]) if regime_err_sep == True and robust == 'hac': set_warn( self, "Error by regimes is incompatible with HAC estimation. Hence, error by regimes has been disabled for this model.") regime_err_sep = False self.regime_err_sep = regime_err_sep if regime_err_sep == True and set(cols2regi) == set([True]) and constant_regi == 'many': self.y = y name_x = USER.set_name_x(name_x, x) regi_ids = dict( (r, list(np.where(np.array(regimes) == r)[0])) for r in self.regimes_set) self._ols_regimes_multi(x, w, regi_ids, cores, gwk, sig2n_k, robust, nonspat_diag, spat_diag, vm, name_x, moran, white_test) else: name_x = USER.set_name_x(name_x, x, constant=True) x, self.name_x = REGI.Regimes_Frame.__init__(self, x, regimes, constant_regi, cols2regi, name_x) BaseOLS.__init__( self, y=y, x=x, robust=robust, gwk=gwk, sig2n_k=sig2n_k) if regime_err_sep == True and robust == None: y2, x2 = REGI._get_weighted_var( regimes, self.regimes_set, sig2n_k, self.u, y, x) ols2 = BaseOLS(y=y2, x=x2, sig2n_k=sig2n_k) RegressionProps_basic(self, betas=ols2.betas, vm=ols2.vm) self.title = "ORDINARY LEAST SQUARES - REGIMES (Group-wise heteroskedasticity)" nonspat_diag = None set_warn( self, "Residuals treated as homoskedastic for the purpose of diagnostics.") else: self.title = "ORDINARY LEAST SQUARES - REGIMES" self.robust = USER.set_robust(robust) self.chow = REGI.Chow(self) SUMMARY.OLS(reg=self, vm=vm, w=w, nonspat_diag=nonspat_diag, spat_diag=spat_diag, moran=moran, white_test=white_test, regimes=True)
def __init__(self, y, x, yend, q, regimes,\ w=None, robust=None, gwk=None, sig2n_k=True,\ spat_diag=False, vm=False, constant_regi='many',\ cols2regi='all', regime_err_sep=False, name_y=None, name_x=None,\ cores=None, name_yend=None, name_q=None, name_regimes=None,\ name_w=None, name_gwk=None, name_ds=None, summ=True): n = USER.check_arrays(y, x) USER.check_y(y, n) USER.check_weights(w, y) USER.check_robust(robust, gwk) USER.check_spat_diag(spat_diag, w) self.constant_regi = constant_regi self.cols2regi = cols2regi self.name_ds = USER.set_name_ds(name_ds) self.name_regimes = USER.set_name_ds(name_regimes) self.name_w = USER.set_name_w(name_w, w) self.name_gwk = USER.set_name_w(name_gwk, gwk) self.name_y = USER.set_name_y(name_y) name_yend = USER.set_name_yend(name_yend, yend) name_q = USER.set_name_q(name_q, q) self.name_x_r = USER.set_name_x(name_x, x) + name_yend self.n = n if regime_err_sep == True: name_x = USER.set_name_x(name_x, x) self.y = y if cols2regi == 'all': cols2regi = [True] * (x.shape[1]+yend.shape[1]) self.regimes_set = list(set(regimes)) self.regimes_set.sort() if w: w_i,regi_ids,warn = REGI.w_regimes(w, regimes, self.regimes_set, transform=True, get_ids=True, min_n=len(self.cols2regi)+1) set_warn(self,warn) else: regi_ids = dict((r, list(np.where(np.array(regimes) == r)[0])) for r in self.regimes_set) w_i = None if set(cols2regi) == set([True]): self._tsls_regimes_multi(x, yend, q, w_i, regi_ids, cores,\ gwk, sig2n_k, robust, spat_diag, vm, name_x, name_yend, name_q) else: raise Exception, "All coefficients must vary accross regimes if regime_err_sep = True." else: name_x = USER.set_name_x(name_x, x,constant=True) q, self.name_q = REGI.Regimes_Frame.__init__(self, q, \ regimes, constant_regi=None, cols2regi='all', names=name_q) x, self.name_x = REGI.Regimes_Frame.__init__(self, x, \ regimes, constant_regi, cols2regi=cols2regi, names=name_x) yend, self.name_yend = REGI.Regimes_Frame.__init__(self, yend, \ regimes, constant_regi=None, \ cols2regi=cols2regi, yend=True, names=name_yend) BaseTSLS.__init__(self, y=y, x=x, yend=yend, q=q, \ robust=robust, gwk=gwk, sig2n_k=sig2n_k) self.name_z = self.name_x + self.name_yend self.name_h = USER.set_name_h(self.name_x, self.name_q) self.chow = REGI.Chow(self) self.robust = USER.set_robust(robust) if summ: self.title = "TWO STAGE LEAST SQUARES - REGIMES" SUMMARY.TSLS(reg=self, vm=vm, w=w, spat_diag=spat_diag, regimes=True)
def _work( y, x, regi_ids, r, yend, q, w_r, w_lags, lag_q, robust, sig2n_k, name_ds, name_y, name_x, name_yend, name_q, name_w, name_regimes, ): y_r = y[regi_ids[r]] x_r = x[regi_ids[r]] if yend != None: yend_r = yend[regi_ids[r]] else: yend_r = yend if q != None: q_r = q[regi_ids[r]] else: q_r = q yend_r, q_r = set_endog_sparse(y_r, x_r, w_r, yend_r, q_r, w_lags, lag_q) x_constant = USER.check_constant(x_r) if robust == "hac" or robust == "ogmm": robust2 = None else: robust2 = robust model = BaseTSLS(y_r, x_constant, yend_r, q_r, robust=robust2, sig2n_k=sig2n_k) model.title = "SPATIAL TWO STAGE LEAST SQUARES ESTIMATION - REGIME %s" % r if robust == "ogmm": _optimal_weight(model, sig2n_k, warn=False) model.rho = model.betas[-1] model.robust = USER.set_robust(robust) model.name_ds = name_ds model.name_y = "%s_%s" % (str(r), name_y) model.name_x = ["%s_%s" % (str(r), i) for i in name_x] model.name_yend = ["%s_%s" % (str(r), i) for i in name_yend] model.name_z = model.name_x + model.name_yend model.name_q = ["%s_%s" % (str(r), i) for i in name_q] model.name_h = model.name_x + model.name_q model.name_w = name_w model.name_regimes = name_regimes return model
def __init__(self, y, x, regimes,\ w=None, robust=None, gwk=None, sig2n_k=True,\ nonspat_diag=True, spat_diag=False, moran=False,\ vm=False, constant_regi='many', cols2regi='all',\ regime_err_sep=False, cores=None,\ name_y=None, name_x=None, name_regimes=None,\ name_w=None, name_gwk=None, name_ds=None): n = USER.check_arrays(y, x) USER.check_y(y, n) USER.check_weights(w, y) USER.check_robust(robust, gwk) USER.check_spat_diag(spat_diag, w) self.name_x_r = USER.set_name_x(name_x, x) self.constant_regi = constant_regi self.cols2regi = cols2regi self.name_w = USER.set_name_w(name_w, w) self.name_gwk = USER.set_name_w(name_gwk, gwk) self.name_ds = USER.set_name_ds(name_ds) self.name_y = USER.set_name_y(name_y) self.name_regimes = USER.set_name_ds(name_regimes) self.n = n if regime_err_sep == True: name_x = USER.set_name_x(name_x, x) self.y = y if cols2regi == 'all': cols2regi = [True] * (x.shape[1]) self.regimes_set = list(set(regimes)) self.regimes_set.sort() if w: w_i,regi_ids,warn = REGI.w_regimes(w, regimes, self.regimes_set, transform=True, get_ids=True, min_n=len(self.cols2regi)+1) set_warn(self,warn) else: regi_ids = dict((r, list(np.where(np.array(regimes) == r)[0])) for r in self.regimes_set) w_i = None if set(cols2regi) == set([True]): self._ols_regimes_multi(x, w_i, regi_ids, cores,\ gwk, sig2n_k, robust, nonspat_diag, spat_diag, vm, name_x, moran) else: raise Exception, "All coefficients must vary accross regimes if regime_err_sep = True." else: name_x = USER.set_name_x(name_x, x,constant=True) x, self.name_x = REGI.Regimes_Frame.__init__(self, x,\ regimes, constant_regi, cols2regi, name_x) BaseOLS.__init__(self, y=y, x=x, robust=robust, gwk=gwk, \ sig2n_k=sig2n_k) self.title = "ORDINARY LEAST SQUARES - REGIMES" self.robust = USER.set_robust(robust) self.chow = REGI.Chow(self) SUMMARY.OLS(reg=self, vm=vm, w=w, nonspat_diag=nonspat_diag,\ spat_diag=spat_diag, moran=moran, regimes=True)
def _work(y,x,regi_ids,r,robust,sig2n_k,name_ds,name_y,name_x,name_w,name_regimes): y_r = y[regi_ids[r]] x_r = x[regi_ids[r]] x_constant = USER.check_constant(x_r) if robust == 'hac': robust = None model = BaseOLS(y_r, x_constant, robust=robust, sig2n_k=sig2n_k) model.title = "ORDINARY LEAST SQUARES ESTIMATION - REGIME %s" %r model.robust = USER.set_robust(robust) model.name_ds = name_ds model.name_y = '%s_%s'%(str(r), name_y) model.name_x = ['%s_%s'%(str(r), i) for i in name_x] model.name_w = name_w model.name_regimes = name_regimes return model
def __init__(self, y, x, w=None, robust=None, gwk=None, sig2n_k=True, nonspat_diag=True, spat_diag=False, moran=False, white_test=False, vm=False, name_y=None, name_x=None, name_w=None, name_gwk=None, name_ds=None): n = USER.check_arrays(y, x) y = USER.check_y(y, n) USER.check_weights(w, y) USER.check_robust(robust, gwk) USER.check_spat_diag(spat_diag, w) x_constant = USER.check_constant(x) BaseOLS.__init__(self, y=y, x=x_constant, robust=robust, gwk=gwk, sig2n_k=sig2n_k) self.title = "ORDINARY LEAST SQUARES" self.name_ds = USER.set_name_ds(name_ds) self.name_y = USER.set_name_y(name_y) self.name_x = USER.set_name_x(name_x, x) self.robust = USER.set_robust(robust) self.name_w = USER.set_name_w(name_w, w) self.name_gwk = USER.set_name_w(name_gwk, gwk) SUMMARY.OLS(reg=self, vm=vm, w=w, nonspat_diag=nonspat_diag, spat_diag=spat_diag, moran=moran, white_test=white_test)
def __init__(self, y, x,\ w=None,\ robust=None, gwk=None, sig2n_k=True,\ nonspat_diag=True, spat_diag=False, moran=False,\ vm=False, name_y=None, name_x=None,\ name_w=None, name_gwk=None, name_ds=None): n = USER.check_arrays(y, x) USER.check_y(y, n) USER.check_weights(w, y) USER.check_robust(robust, gwk) USER.check_spat_diag(spat_diag, w) x_constant = USER.check_constant(x) BaseOLS.__init__(self, y=y, x=x_constant, robust=robust,\ gwk=gwk, sig2n_k=sig2n_k) self.title = "ORDINARY LEAST SQUARES" self.name_ds = USER.set_name_ds(name_ds) self.name_y = USER.set_name_y(name_y) self.name_x = USER.set_name_x(name_x, x) self.robust = USER.set_robust(robust) self.name_w = USER.set_name_w(name_w, w) self.name_gwk = USER.set_name_w(name_gwk, gwk) SUMMARY.OLS(reg=self, vm=vm, w=w, nonspat_diag=nonspat_diag,\ spat_diag=spat_diag, moran=moran)
def __init__(self, y, x, yend, q, regimes, w=None, robust=None, gwk=None, sig2n_k=True, spat_diag=False, vm=False, constant_regi='many', cols2regi='all', regime_err_sep=True, name_y=None, name_x=None, cores=False, name_yend=None, name_q=None, name_regimes=None, name_w=None, name_gwk=None, name_ds=None, summ=True): n = USER.check_arrays(y, x) USER.check_y(y, n) USER.check_weights(w, y) USER.check_robust(robust, gwk) USER.check_spat_diag(spat_diag, w) self.constant_regi = constant_regi self.cols2regi = cols2regi self.name_ds = USER.set_name_ds(name_ds) self.name_regimes = USER.set_name_ds(name_regimes) self.name_w = USER.set_name_w(name_w, w) self.name_gwk = USER.set_name_w(name_gwk, gwk) self.name_y = USER.set_name_y(name_y) name_yend = USER.set_name_yend(name_yend, yend) name_q = USER.set_name_q(name_q, q) self.name_x_r = USER.set_name_x(name_x, x) + name_yend self.n = n cols2regi = REGI.check_cols2regi(constant_regi, cols2regi, x, yend=yend, add_cons=False) self.regimes_set = REGI._get_regimes_set(regimes) self.regimes = regimes USER.check_regimes(self.regimes_set, self.n, x.shape[1]) if regime_err_sep == True and robust == 'hac': set_warn( self, "Error by regimes is incompatible with HAC estimation for 2SLS models. Hence, the error by regimes has been disabled for this model." ) regime_err_sep = False self.regime_err_sep = regime_err_sep if regime_err_sep == True and set(cols2regi) == set( [True]) and constant_regi == 'many': name_x = USER.set_name_x(name_x, x) self.y = y regi_ids = dict((r, list(np.where(np.array(regimes) == r)[0])) for r in self.regimes_set) self._tsls_regimes_multi(x, yend, q, w, regi_ids, cores, gwk, sig2n_k, robust, spat_diag, vm, name_x, name_yend, name_q) else: name_x = USER.set_name_x(name_x, x, constant=True) q, self.name_q = REGI.Regimes_Frame.__init__(self, q, regimes, constant_regi=None, cols2regi='all', names=name_q) x, self.name_x = REGI.Regimes_Frame.__init__(self, x, regimes, constant_regi, cols2regi=cols2regi, names=name_x) yend, self.name_yend = REGI.Regimes_Frame.__init__( self, yend, regimes, constant_regi=None, cols2regi=cols2regi, yend=True, names=name_yend) if regime_err_sep == True and robust == None: robust = 'white' BaseTSLS.__init__(self, y=y, x=x, yend=yend, q=q, robust=robust, gwk=gwk, sig2n_k=sig2n_k) self.title = "TWO STAGE LEAST SQUARES - REGIMES" if robust == 'ogmm': _optimal_weight(self, sig2n_k) self.name_z = self.name_x + self.name_yend self.name_h = USER.set_name_h(self.name_x, self.name_q) self.chow = REGI.Chow(self) self.robust = USER.set_robust(robust) if summ: SUMMARY.TSLS(reg=self, vm=vm, w=w, spat_diag=spat_diag, regimes=True)
def __init__(self, y, x, yend, q, regimes, w=None, robust=None, gwk=None, sig2n_k=True, spat_diag=False, vm=False, constant_regi='many', cols2regi='all', regime_err_sep=True, name_y=None, name_x=None, cores=None, name_yend=None, name_q=None, name_regimes=None, name_w=None, name_gwk=None, name_ds=None, summ=True): n = USER.check_arrays(y, x) USER.check_y(y, n) USER.check_weights(w, y) USER.check_robust(robust, gwk) USER.check_spat_diag(spat_diag, w) self.constant_regi = constant_regi self.cols2regi = cols2regi self.name_ds = USER.set_name_ds(name_ds) self.name_regimes = USER.set_name_ds(name_regimes) self.name_w = USER.set_name_w(name_w, w) self.name_gwk = USER.set_name_w(name_gwk, gwk) self.name_y = USER.set_name_y(name_y) name_yend = USER.set_name_yend(name_yend, yend) name_q = USER.set_name_q(name_q, q) self.name_x_r = USER.set_name_x(name_x, x) + name_yend self.n = n cols2regi = REGI.check_cols2regi( constant_regi, cols2regi, x, yend=yend, add_cons=False) self.regimes_set = REGI._get_regimes_set(regimes) self.regimes = regimes USER.check_regimes(self.regimes_set, self.n, x.shape[1]) if regime_err_sep == True and robust == 'hac': set_warn( self, "Error by regimes is incompatible with HAC estimation for 2SLS models. Hence, the error by regimes has been disabled for this model.") regime_err_sep = False self.regime_err_sep = regime_err_sep if regime_err_sep == True and set(cols2regi) == set([True]) and constant_regi == 'many': name_x = USER.set_name_x(name_x, x) self.y = y regi_ids = dict((r, list(np.where(np.array(regimes) == r)[0])) for r in self.regimes_set) self._tsls_regimes_multi(x, yend, q, w, regi_ids, cores, gwk, sig2n_k, robust, spat_diag, vm, name_x, name_yend, name_q) else: name_x = USER.set_name_x(name_x, x, constant=True) q, self.name_q = REGI.Regimes_Frame.__init__(self, q, regimes, constant_regi=None, cols2regi='all', names=name_q) x, self.name_x = REGI.Regimes_Frame.__init__(self, x, regimes, constant_regi, cols2regi=cols2regi, names=name_x) yend, self.name_yend = REGI.Regimes_Frame.__init__(self, yend, regimes, constant_regi=None, cols2regi=cols2regi, yend=True, names=name_yend) if regime_err_sep == True and robust == None: robust = 'white' BaseTSLS.__init__(self, y=y, x=x, yend=yend, q=q, robust=robust, gwk=gwk, sig2n_k=sig2n_k) self.title = "TWO STAGE LEAST SQUARES - REGIMES" if robust == 'ogmm': _optimal_weight(self, sig2n_k) self.name_z = self.name_x + self.name_yend self.name_h = USER.set_name_h(self.name_x, self.name_q) self.chow = REGI.Chow(self) self.robust = USER.set_robust(robust) if summ: SUMMARY.TSLS(reg=self, vm=vm, w=w, spat_diag=spat_diag, regimes=True)
def __init__(self, y, x, yend, q, regimes,\ w=None, robust=None, gwk=None, sig2n_k=True,\ spat_diag=False, vm=False, constant_regi='many',\ cols2regi='all', regime_err_sep=True, name_y=None, name_x=None,\ cores=None, name_yend=None, name_q=None, name_regimes=None,\ name_w=None, name_gwk=None, name_ds=None, summ=True): n = USER.check_arrays(y, x) USER.check_y(y, n) USER.check_weights(w, y) USER.check_robust(robust, gwk) USER.check_spat_diag(spat_diag, w) self.constant_regi = constant_regi self.cols2regi = cols2regi self.name_ds = USER.set_name_ds(name_ds) self.name_regimes = USER.set_name_ds(name_regimes) self.name_w = USER.set_name_w(name_w, w) self.name_gwk = USER.set_name_w(name_gwk, gwk) self.name_y = USER.set_name_y(name_y) name_yend = USER.set_name_yend(name_yend, yend) name_q = USER.set_name_q(name_q, q) self.name_x_r = USER.set_name_x(name_x, x) + name_yend self.n = n cols2regi = REGI.check_cols2regi(constant_regi, cols2regi, x, yend=yend, add_cons=False) self.regimes_set = REGI._get_regimes_set(regimes) self.regimes = regimes USER.check_regimes(self.regimes_set) self.regime_err_sep = regime_err_sep if regime_err_sep == True and set(cols2regi) == set([True]) and constant_regi == 'many': name_x = USER.set_name_x(name_x, x) self.y = y if w: w_i,regi_ids,warn = REGI.w_regimes(w, regimes, self.regimes_set, transform=True, get_ids=True, min_n=len(self.cols2regi)+1) set_warn(self,warn) else: regi_ids = dict((r, list(np.where(np.array(regimes) == r)[0])) for r in self.regimes_set) w_i = None self._tsls_regimes_multi(x, yend, q, w_i, regi_ids, cores,\ gwk, sig2n_k, robust, spat_diag, vm, name_x, name_yend, name_q) else: name_x = USER.set_name_x(name_x, x,constant=True) q, self.name_q = REGI.Regimes_Frame.__init__(self, q, \ regimes, constant_regi=None, cols2regi='all', names=name_q) x, self.name_x = REGI.Regimes_Frame.__init__(self, x, \ regimes, constant_regi, cols2regi=cols2regi, names=name_x) yend, self.name_yend = REGI.Regimes_Frame.__init__(self, yend, \ regimes, constant_regi=None, \ cols2regi=cols2regi, yend=True, names=name_yend) BaseTSLS.__init__(self, y=y, x=x, yend=yend, q=q, \ robust=robust, gwk=gwk, sig2n_k=sig2n_k) if regime_err_sep == True and robust == None: """ # Weighted x, y, yend and q approach: y2,x2,yend2,q2 = REGI._get_weighted_var(regimes,self.regimes_set,sig2n_k,self.u,y,x,yend,q) tsls2 = BaseTSLS(y=y2, x=x2, yend=yend2, q=q2, sig2n_k=sig2n_k) # Updating S_hat to S_tilde approach: betas2, predy2, resid2, vm2 = self._optimal_weight(sig2n_k) RegressionProps_basic(self,betas=betas2,predy=predy2,u=resid2,vm=vm2,sig2=False) """ betas2, vm2 = self._optimal_weight(sig2n_k) RegressionProps_basic(self,betas=betas2,vm=vm2,sig2=False) self.title = "TWO STAGE LEAST SQUARES - REGIMES (Optimal-Weighted GMM)" robust = None set_warn(self,"Residuals treated as homoskedastic for the purpose of diagnostics.") else: self.title = "TWO STAGE LEAST SQUARES - REGIMES" self.name_z = self.name_x + self.name_yend self.name_h = USER.set_name_h(self.name_x, self.name_q) self.chow = REGI.Chow(self) self.robust = USER.set_robust(robust) if summ: SUMMARY.TSLS(reg=self, vm=vm, w=w, spat_diag=spat_diag, regimes=True)