def __init__(self, y, x, yend, q=None, h=None, robust=None, gwk=None, sig2n_k=False): if issubclass(type(q), np.ndarray) and issubclass(type(h), np.ndarray): raise Exception, "Please do not provide 'q' and 'h' together" if q == None and h == None: raise Exception, "Please provide either 'q' or 'h'" self.y = y self.n = y.shape[0] self.x = x self.kstar = yend.shape[1] # including exogenous and endogenous variables z = sphstack(self.x, yend) if type(h).__name__ not in ['ndarray', 'csr_matrix']: # including exogenous variables and instrument h = sphstack(self.x, q) self.z = z self.h = h self.q = q self.yend = yend # k = number of exogenous variables and endogenous variables self.k = z.shape[1] hth = spdot(h.T, h) hthi = la.inv(hth) zth = spdot(z.T, h) hty = spdot(h.T, y) factor_1 = np.dot(zth, hthi) factor_2 = np.dot(factor_1, zth.T) # this one needs to be in cache to be used in AK varb = la.inv(factor_2) factor_3 = np.dot(varb, factor_1) betas = np.dot(factor_3, hty) self.betas = betas self.varb = varb self.zthhthi = factor_1 # predicted values self.predy = spdot(z, betas) # residuals u = y - self.predy self.u = u # attributes used in property self.hth = hth # Required for condition index self.hthi = hthi # Used in error models self.htz = zth.T if robust: self.vm = ROBUST.robust_vm(reg=self, gwk=gwk, sig2n_k=sig2n_k) self._cache = {} if sig2n_k: self.sig2 = self.sig2n_k else: self.sig2 = self.sig2n
def __init__(self, y, x, yend, q=None, h=None, robust=None, gwk=None, sig2n_k=False): if issubclass(type(q), np.ndarray) and issubclass(type(h), np.ndarray): raise Exception, "Please do not provide 'q' and 'h' together" if q is None and h is None: raise Exception, "Please provide either 'q' or 'h'" self.y = y self.n = y.shape[0] self.x = x self.kstar = yend.shape[1] # including exogenous and endogenous variables z = sphstack(self.x, yend) if type(h).__name__ not in ['ndarray', 'csr_matrix']: # including exogenous variables and instrument h = sphstack(self.x, q) self.z = z self.h = h self.q = q self.yend = yend # k = number of exogenous variables and endogenous variables self.k = z.shape[1] hth = spdot(h.T, h) hthi = la.inv(hth) zth = spdot(z.T, h) hty = spdot(h.T, y) factor_1 = np.dot(zth, hthi) factor_2 = np.dot(factor_1, zth.T) # this one needs to be in cache to be used in AK varb = la.inv(factor_2) factor_3 = np.dot(varb, factor_1) betas = np.dot(factor_3, hty) self.betas = betas self.varb = varb self.zthhthi = factor_1 # predicted values self.predy = spdot(z, betas) # residuals u = y - self.predy self.u = u # attributes used in property self.hth = hth # Required for condition index self.hthi = hthi # Used in error models self.htz = zth.T if robust: self.vm = ROBUST.robust_vm(reg=self, gwk=gwk, sig2n_k=sig2n_k) self._cache = {} if sig2n_k: self.sig2 = self.sig2n_k else: self.sig2 = self.sig2n
def __init__(self, y, x, robust=None, gwk=None, sig2n_k=True): self.x = x self.xtx = spdot(self.x.T, self.x) xty = spdot(self.x.T, y) self.xtxi = la.inv(self.xtx) self.betas = np.dot(self.xtxi, xty) predy = spdot(self.x, self.betas) u = y - predy self.u = u self.predy = predy self.y = y self.n, self.k = self.x.shape if sig2n_k: self.sig2 = self.sig2n_k else: self.sig2 = self.sig2n if robust is not None: self.vm = ROBUST.robust_vm(reg=self, gwk=gwk, sig2n_k=sig2n_k)