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

Generalized Linear Models (GLM) More...

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

Go to the source code of this file.

Classes

struct  statcpp::glm_result
 GLM result structure. More...
 
struct  statcpp::glm_residuals
 GLM residuals structure. More...
 

Namespaces

namespace  statcpp
 
namespace  statcpp::detail
 Internal helper functions.
 

Enumerations

enum class  statcpp::link_function {
  statcpp::identity , statcpp::logit , statcpp::probit , statcpp::log ,
  statcpp::inverse , statcpp::cloglog
}
 Link function types. More...
 
enum class  statcpp::distribution_family { statcpp::gaussian , statcpp::binomial , statcpp::poisson , statcpp::gamma_family }
 Distribution family. More...
 

Functions

double statcpp::detail::link_transform (double mu, link_function link)
 Link function g(mu) -> eta.
 
double statcpp::detail::inverse_link (double eta, link_function link)
 Inverse link function g^{-1}(eta) -> mu.
 
double statcpp::detail::link_derivative (double mu, link_function link)
 Derivative of link function d(eta)/d(mu) = g'(mu)
 
double statcpp::detail::variance_function (double mu, distribution_family family)
 Variance function V(mu)
 
double statcpp::detail::deviance_residual (double y, double mu, distribution_family family)
 Calculate deviance (for a single observation)
 
std::vector< double > statcpp::detail::solve_weighted_least_squares (const std::vector< std::vector< double > > &X, const std::vector< double > &z, const std::vector< double > &w, std::vector< std::vector< double > > &XtWX_inv)
 Solve weighted least squares.
 
glm_result statcpp::glm_fit (const std::vector< std::vector< double > > &X, const std::vector< double > &y, distribution_family family=distribution_family::gaussian, link_function link=link_function::identity, std::size_t max_iter=100, double tol=1e-8)
 Fit a generalized linear model.
 
glm_result statcpp::logistic_regression (const std::vector< std::vector< double > > &X, const std::vector< double > &y, std::size_t max_iter=100, double tol=1e-8)
 Logistic regression.
 
double statcpp::predict_probability (const glm_result &model, const std::vector< double > &x)
 Probability prediction with logistic regression.
 
std::vector< double > statcpp::odds_ratios (const glm_result &model)
 Calculate odds ratios.
 
std::vector< std::pair< double, double > > statcpp::odds_ratios_ci (const glm_result &model, double confidence=0.95)
 Confidence intervals for odds ratios.
 
glm_result statcpp::poisson_regression (const std::vector< std::vector< double > > &X, const std::vector< double > &y, std::size_t max_iter=100, double tol=1e-8)
 Poisson regression.
 
double statcpp::predict_count (const glm_result &model, const std::vector< double > &x)
 Expected count prediction with Poisson regression.
 
std::vector< double > statcpp::incidence_rate_ratios (const glm_result &model)
 Calculate Incidence Rate Ratios.
 
glm_residuals statcpp::compute_glm_residuals (const glm_result &model, const std::vector< std::vector< double > > &X, const std::vector< double > &y)
 Calculate GLM residuals.
 
double statcpp::overdispersion_test (const glm_result &model, const std::vector< std::vector< double > > &X, const std::vector< double > &y)
 Overdispersion test (for Poisson regression)
 
double statcpp::pseudo_r_squared_mcfadden (const glm_result &model)
 McFadden's pseudo R-squared.
 
double statcpp::pseudo_r_squared_nagelkerke (const glm_result &model, const std::vector< double > &y, std::size_t n)
 Nagelkerke's pseudo R-squared.
 

Detailed Description

Generalized Linear Models (GLM)

Provides generalized linear models including logistic regression and Poisson regression. Uses the IRLS (Iteratively Reweighted Least Squares) algorithm for parameter estimation.

Definition in file glm.hpp.