4#include <Math/Factory.h>
5#include <Math/Minimizer.h>
52 std::unique_ptr<ROOT::Math::Minimizer> minimizer = std::unique_ptr<ROOT::Math::Minimizer>{
53 ROOT::Math::Factory::CreateMinimizer(
"Minuit2") });
55 auto train_from_data(
const std::vector<double>& x_vals,
const std::vector<double>& y_vals) -> bool;
56 auto calculate_p_value(
const std::vector<double>& y_errs,
double scale = 1.) -> double;
61 [[nodiscard]]
auto check_outlier(
double x_val,
double y_val)
const -> std::pair<bool, double>;
62 [[nodiscard]]
auto check_outlier(
double x_val,
double y_val,
const std::pair<double, double>& weight_bias)
const
63 -> std::pair<bool, double>;
84class fmt::formatter<
R3B::HuberRegressor::Result>
87 static constexpr auto parse(format_parse_context& ctx) {
return ctx.end(); }
88 template <
typename FmtContent>
91 return fmt::format_to(ctn.out(),
92 "{{iteration: {}, weight: {}, bias: {}, is_success: {}}}",
HuberRegressor(Config config=Config{}, std::unique_ptr< ROOT::Math::Minimizer > minimizer=std::unique_ptr< ROOT::Math::Minimizer >{ ROOT::Math::Factory::CreateMinimizer("Minuit2") })
std::unique_ptr< ROOT::Math::Minimizer > minimizer_
auto get_result() const -> const Result &
auto train_from_data(const std::vector< double > &x_vals, const std::vector< double > &y_vals) -> bool
std::span< const double > x_vals_
static constexpr auto n_pars
std::span< const double > y_vals_
void set_par_errors(const double *raw_error_ptr)
auto check_outlier(double x_val, double y_val) const -> std::pair< bool, double >
auto calculate_p_value(const std::vector< double > &y_errs, double scale=1.) -> double
void set_par_values(const double *raw_pars_ptr)
auto calculate_loss(const double *raw_pars) -> double
HuberRegressorConfig Config
static constexpr auto DEFAULT_SIGMA
auto get_config_ref() -> Config &
ValueError< double > ValueErrorD
static constexpr auto DEFAULT_EPSILON
static constexpr auto DEFAULT_REG_RATE
static constexpr auto DEFAULT_TOLERANCE
double regularization_rate
HuberRegressorConfig()=default