|
statcpp
C++17 Header-Only Statistics Library
|
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>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. | |
Model selection functions.
Provides model selection and evaluation metrics including AIC, BIC, cross-validation, and regularized regression.
Definition in file model_selection.hpp.