def _mean_regress(self, r, x, y, ox, oy, index, fit, fod, apply_filter): if r is None or not isinstance(r, MeanRegressor): r = MeanRegressor() r.trait_set(xs=x, ys=y, fit=fit) if apply_filter: r = self._apply_outlier_filter(r, ox, oy, index, fod) return r
def regressor(self): fit = self.fit if fit is None: fit = 'linear' self.fit = fit lfit = fit.lower() is_mean = 'average' in lfit is_expo = lfit == 'exponential' is_poly = not (is_mean or is_expo) reg = self._regressor if reg is None: if is_mean: reg = MeanRegressor() elif is_expo: reg = ExponentialRegressor() else: reg = PolynomialRegressor() elif is_poly and not isinstance(reg, PolynomialRegressor): reg = PolynomialRegressor() elif is_mean and not isinstance(reg, MeanRegressor): reg = MeanRegressor() elif is_expo and not isinstance(reg, ExponentialRegressor): reg = ExponentialRegressor() if is_poly: reg.set_degree(fit_to_degree(fit), refresh=False) reg.trait_set(xs=self.offset_xs, ys=self.ys, error_calc_type=self.error_type or 'SEM', filter_outliers_dict=self.filter_outliers_dict, tag=self.name) if self.truncate: reg.set_truncate(self.truncate) reg.calculate() self._regressor = reg return reg
class TruncateRegressionTest(TestCase): def setUp(self): self.reg = MeanRegressor() def test_pre_truncate(self): xs, ys, sol = pre_truncated_data() self.reg.trait_set(xs=xs, ys=ys) self.solution = sol self.reg.trait_set(xs=xs, ys=ys) self.reg.set_truncate('x<5') self.assertEqual(self.reg.mean, self.solution['pre_mean']) def test_post_truncate(self): xs, ys, sol = pre_truncated_data() self.reg.trait_set(xs=xs, ys=ys) self.solution = sol self.reg.trait_set(xs=xs, ys=ys) self.reg.set_truncate('x>=5') self.assertEqual(self.reg.mean, self.solution['post_mean'])