def _build_res(self, res: OptimizeResult):
     res.log_likelihood = -res.fun
     res.predictive_power = (self.predict_permuted(res.x) *
                             self.is_chosen).sum() / len(self.df)
     res.aic = res.log_likelihood - self._n_free_params()
     res.bic = res.log_likelihood - self._n_free_params() * np.log(
         len(self.df)) / 2
     res.π_L = self.π_L
     res.β = self.β
     res.b = self.b
 def load_model(self, Model: Type[models.Model],
                res: OptimizeResult) -> models.Model:
     if len(res.b) > 1:
         res.b = np.array([res.b[-1] - res.b[-2]])
     return super().load_model(Model, res)