def setup_class(cls): # simulate data np.random.seed(987865) nobs, k_vars = 500, 10 k_nonzero = 4 x = ((np.random.rand(nobs, k_vars) + 0.5* (np.random.rand(nobs, 1) - 0.5)) * 2 - 1) x *= 1.2 x[:, 0] = 1 beta = np.zeros(k_vars) beta[:k_nonzero] = 1. / np.arange(1, k_nonzero + 1) linpred = x.dot(beta) y = cls._generate_endog(linpred) cls.k_nonzero = k_nonzero cls.x = x cls.y = y # defaults to be overwritten by subclasses cls.rtol = 1e-4 cls.atol = 1e-6 cls.exog_index = slice(None, None, None) cls.k_params = k_vars cls.skip_hessian = False # can be overwritten in _initialize cls.penalty = smpen.SCADSmoothed(0.1, c0=0.0001) # default for tests cls._initialize()
def __init__(self, *args, **kwds): super(PenalizedMixin, self).__init__(*args, **kwds) penal = kwds.pop('penal', None) # I keep the following instead of adding default in pop for future changes if penal is None: # TODO: switch to unpenalized by default self.penal = smpen.SCADSmoothed(0.1, c0=0.0001) else: self.penal = penal # TODO: define pen_weight as average pen_weight? i.e. per observation # I would have prefered len(self.endog) * kwds.get('pen_weight', 1) # or use pen_weight_factor in signature self.pen_weight = kwds.get('pen_weight', len(self.endog)) self._init_keys.extend(['penal', 'pen_weight'])
def setup_class(cls): x0 = np.linspace(-0.2, 0.2, 11) cls.params = np.column_stack((x0, x0)) cls.pen = smpen.SCADSmoothed(tau=0.05, c0=0.05)