statcpp
C++17 Header-Only Statistics Library
Loading...
Searching...
No Matches
Classes | Namespaces | Functions
model_selection.hpp File Reference

Model selection functions. More...

#include "statcpp/basic_statistics.hpp"
#include "statcpp/dispersion_spread.hpp"
#include "statcpp/linear_regression.hpp"
#include "statcpp/random_engine.hpp"
#include <algorithm>
#include <cmath>
#include <cstddef>
#include <iterator>
#include <limits>
#include <numeric>
#include <stdexcept>
#include <utility>
#include <vector>
Include dependency graph for model_selection.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  statcpp::cv_result
 Structure to store cross-validation results. More...
 
struct  statcpp::regularized_regression_result
 Structure to store regularized regression results. More...
 

Namespaces

namespace  statcpp
 
namespace  statcpp::detail
 Internal helper functions.
 

Functions

double statcpp::aic (double log_likelihood, std::size_t k)
 Calculate AIC (Akaike Information Criterion)
 
double statcpp::aic_linear (const simple_regression_result &model, std::size_t n)
 Calculate AIC from simple regression model.
 
double statcpp::aic_linear (const multiple_regression_result &model, std::size_t n)
 Calculate AIC from multiple regression model.
 
double statcpp::aicc (double log_likelihood, std::size_t n, std::size_t k)
 Calculate AICc (corrected AIC)
 
double statcpp::bic (double log_likelihood, std::size_t n, std::size_t k)
 Calculate BIC (Bayesian Information Criterion)
 
double statcpp::bic_linear (const simple_regression_result &model, std::size_t n)
 Calculate BIC from simple regression model.
 
double statcpp::bic_linear (const multiple_regression_result &model, std::size_t n)
 Calculate BIC from multiple regression model.
 
template<typename IteratorX , typename IteratorY >
double statcpp::press_statistic (IteratorX x_first, IteratorX x_last, IteratorY y_first, IteratorY y_last, const simple_regression_result &model)
 Calculate PRESS statistic.
 
std::vector< std::vector< std::size_t > > statcpp::create_cv_folds (std::size_t n, std::size_t k, bool shuffle=true)
 Generate indices for k-fold cross-validation.
 
cv_result statcpp::cross_validate_linear (const std::vector< std::vector< double > > &X, const std::vector< double > &y, std::size_t k=5)
 Perform k-fold cross-validation for multiple regression model.
 
cv_result statcpp::loocv_linear (const std::vector< std::vector< double > > &X, const std::vector< double > &y)
 Perform leave-one-out cross-validation.
 
void statcpp::detail::standardize_features (const std::vector< std::vector< double > > &X, std::vector< std::vector< double > > &X_scaled, std::vector< double > &X_mean, std::vector< double > &X_std, std::size_t n, std::size_t p)
 特徴量の標準化 (平均0, 標準偏差1)
 
std::vector< double > statcpp::detail::rescale_coefficients (const std::vector< double > &beta, const std::vector< double > &X_mean, const std::vector< double > &X_std, double y_mean, std::size_t p, bool standardize)
 標準化済み係数を元のスケールに逆変換する
 
regularized_regression_result statcpp::ridge_regression (const std::vector< std::vector< double > > &X, const std::vector< double > &y, double lambda, bool standardize=true, std::size_t max_iter=1000, double tol=1e-6)
 Perform Ridge regression (L2 regularization)
 
regularized_regression_result statcpp::lasso_regression (const std::vector< std::vector< double > > &X, const std::vector< double > &y, double lambda, bool standardize=true, std::size_t max_iter=1000, double tol=1e-6)
 Perform Lasso regression (L1 regularization)
 
regularized_regression_result statcpp::elastic_net_regression (const std::vector< std::vector< double > > &X, const std::vector< double > &y, double lambda, double alpha=0.5, bool standardize=true, std::size_t max_iter=1000, double tol=1e-6)
 Perform Elastic Net regression (L1 + L2 regularization)
 
std::pair< double, std::vector< double > > statcpp::cv_ridge (const std::vector< std::vector< double > > &X, const std::vector< double > &y, const std::vector< double > &lambda_grid, std::size_t k=5)
 Select optimal lambda for Ridge regression using cross-validation.
 
std::pair< double, std::vector< double > > statcpp::cv_lasso (const std::vector< std::vector< double > > &X, const std::vector< double > &y, const std::vector< double > &lambda_grid, std::size_t k=5)
 Select optimal lambda for Lasso regression using cross-validation.
 
std::vector< double > statcpp::generate_lambda_grid (const std::vector< std::vector< double > > &X, const std::vector< double > &y, std::size_t n_lambda=100, double lambda_min_ratio=0.0001)
 Automatically generate lambda grid for regularized regression.
 

Detailed Description

Model selection functions.

Provides model selection and evaluation metrics including AIC, BIC, cross-validation, and regularized regression.

Definition in file model_selection.hpp.