nk 1.0.0
C++ Numerical Computing Runtime
Loading...
Searching...
No Matches
regress.hpp
Go to the documentation of this file.
1
3// toolboxes/stats/include/nk/stats/regress/regress.hpp
4//
5// Linear regression — function form.
6
7#pragma once
8
9#include <limits>
10#include <memory_resource>
11#include <nk/value/value.hpp>
12#include <nk/value/fn_handle.hpp>
13
14#include <tuple>
15
16
17namespace nk::stats {
18
21
22
41std::tuple<Value, Value, Value, Value>
42regress(const Value &y, const Value &X, double alpha,
43 std::pmr::memory_resource *mr = nullptr);
44
61Value ridge(const Value &y, const Value &X, const Value &k, bool scaled,
62 std::pmr::memory_resource *mr = nullptr);
63
80std::tuple<Value, Value, Value, Value>
81lscov(const Value &A, const Value &b, const Value &w,
82 std::pmr::memory_resource *mr = nullptr);
83
93
115NlinfitResult nlinfit(const Value &X, const Value &y,
116 FnHandle model, const Value &beta0,
117 std::pmr::memory_resource *mr = nullptr);
118
131Value nlparci(const Value &beta, const Value &R, const Value &J,
132 double alpha = 0.05,
133 std::pmr::memory_resource *mr = nullptr);
134
151std::tuple<Value, Value>
152nlpredci(FnHandle model, const Value &X, const Value &beta,
153 const Value &R, const Value &J,
154 double alpha,
155 std::pmr::memory_resource *mr = nullptr);
156
158enum class RobustWeight {
159 Andrews, Bisquare, Cauchy, Fair, Huber,
160 Logistic, Ols, Talwar, Welsch
161};
162
189
199 RobustWeight weight = RobustWeight::Bisquare,
200 double tune = std::numeric_limits<double>::quiet_NaN(),
201 std::pmr::memory_resource *mr = nullptr);
202
208
215 std::pmr::memory_resource *mr = nullptr);
216
218enum class GlmDistribution {
219 Normal,
220 Binomial,
221 Poisson,
222 Gamma,
223 InverseGaussian,
224};
225
234
240
272GlmfitResult glmfit(const Value &X, const Value &y,
273 GlmDistribution distr,
275 std::pmr::memory_resource *mr = nullptr);
276
288Value glmval(const Value &b, const Value &X, GlmLink link,
289 std::pmr::memory_resource *mr = nullptr);
290
297
326LassoResult lasso(const Value &X, const Value &y, const Value &lambdas,
327 double alpha = 1.0,
328 std::pmr::memory_resource *mr = nullptr);
329
348LassoResult lassoglm(const Value &X, const Value &y,
349 GlmDistribution distr,
350 const Value &lambdas, double alpha = 1.0,
351 std::pmr::memory_resource *mr = nullptr);
352
353
355} // namespace nk::stats
Core MATLAB-compatible multidimensional array and scalar value type.
Definition value.hpp:61
Value glmval(const Value &b, const Value &X, GlmLink link, std::pmr::memory_resource *mr=nullptr)
Evaluate a fitted GLM (yhat = glmval(b, X, link)).
LassoResult lasso(const Value &X, const Value &y, const Value &lambdas, double alpha=1.0, std::pmr::memory_resource *mr=nullptr)
LASSO / elastic-net linear regression ([B, FitInfo] = lasso(X, y, lambdas, alpha)).
RobustcovResult robustcov(const Value &X, std::pmr::memory_resource *mr=nullptr)
Robust multivariate covariance estimate via trimmed-MCD ([sigma, mu] = robustcov(X)).
NlinfitResult nlinfit(const Value &X, const Value &y, FnHandle model, const Value &beta0, std::pmr::memory_resource *mr=nullptr)
Nonlinear least-squares fit via Levenberg-Marquardt.
LassoResult lassoglm(const Value &X, const Value &y, GlmDistribution distr, const Value &lambdas, double alpha=1.0, std::pmr::memory_resource *mr=nullptr)
Lasso-regularised GLM ([B, FitInfo] = lassoglm(X, y, distr, lambdas, alpha)).
GlmfitResult glmfit(const Value &X, const Value &y, GlmDistribution distr, GlmLink link=GlmLink::Identity, std::pmr::memory_resource *mr=nullptr)
Fit a generalised linear model ([b, dev] = glmfit(X, y, distr [, link])).
GlmLink
GLM link function.
Definition regress.hpp:227
std::tuple< Value, Value, Value, Value > regress(const Value &y, const Value &X, double alpha, std::pmr::memory_resource *mr=nullptr)
Ordinary least-squares regression ([b, bint, r, stats] = regress(y, X, alpha)).
GlmDistribution
GLM family of error distributions.
Definition regress.hpp:218
std::tuple< Value, Value, Value, Value > lscov(const Value &A, const Value &b, const Value &w, std::pmr::memory_resource *mr=nullptr)
Weighted least squares ([x, stdx, mse, S] = lscov(A, b, w)).
RobustfitResult robustfit(const Value &X, const Value &y, RobustWeight weight=RobustWeight::Bisquare, double tune=std::numeric_limits< double >::quiet_NaN(), std::pmr::memory_resource *mr=nullptr)
Robust linear regression via Iteratively Reweighted Least Squares (IRLS) (robustfit(X,...
Value ridge(const Value &y, const Value &X, const Value &k, bool scaled, std::pmr::memory_resource *mr=nullptr)
Ridge regression (B = ridge(y, X, k, scaled)).
Value nlparci(const Value &beta, const Value &R, const Value &J, double alpha=0.05, std::pmr::memory_resource *mr=nullptr)
Parameter confidence intervals from an nlinfit fit (ci = nlparci(beta, R, J [, alpha])).
std::tuple< Value, Value > nlpredci(FnHandle model, const Value &X, const Value &beta, const Value &R, const Value &J, double alpha, std::pmr::memory_resource *mr=nullptr)
Prediction confidence intervals from an nlinfit fit ([ypred, delta] = nlpredci(fun,...
RobustWeight
Robust regression weight functions (MATLAB robustfit set).
Definition regress.hpp:158
@ Reciprocal
g(μ) = 1 / μ
Definition regress.hpp:231
@ Probit
g(μ) = Φ^-1(μ)
Definition regress.hpp:232
@ Identity
g(μ) = μ
Definition regress.hpp:228
@ Log
g(μ) = log(μ)
Definition regress.hpp:230
@ Logit
g(μ) = log(μ / (1 - μ))
Definition regress.hpp:229
GLM fit result.
Definition regress.hpp:236
Value dev
Deviance (scalar).
Definition regress.hpp:238
Value b
Coefficients (p + 1) × 1 — intercept first.
Definition regress.hpp:237
Value Intercept
1 × nLambda intercept per λ.
Definition regress.hpp:294
Value B
p × nLambda coefficient paths.
Definition regress.hpp:293
Value Lambda
1 × nLambda λ values actually used.
Definition regress.hpp:295
Nonlinear least-squares fit result ([beta, R, J, CovB, MSE] = nlinfit(X, y, fun, beta0)).
Definition regress.hpp:86
Value J
Jacobian at beta (n × p).
Definition regress.hpp:89
Value MSE
Mean squared error (scalar).
Definition regress.hpp:91
Value R
Residuals (n × 1).
Definition regress.hpp:88
Value beta
Parameter estimates (p × 1).
Definition regress.hpp:87
Value CovB
Parameter covariance (p × p).
Definition regress.hpp:90
Result of robust covariance estimation ([sigma, mu] = robustcov(X)).
Definition regress.hpp:204
Value mu
Robust mean location vector (1 × d).
Definition regress.hpp:206
Value sigma
Robust covariance matrix (d × d).
Definition regress.hpp:205
Robust linear regression via iteratively-reweighted least squares ([b, stats] = robustfit(X,...
Definition regress.hpp:185
Value b
Robust regression coefficient vector.
Definition regress.hpp:186
Value s
Robust scale estimate.
Definition regress.hpp:187