lassoglm — Fit lasso or elastic-net regularized generalized linear models.

lassoglm(X,Y,distr) fits a regularized generalized linear model for predictor matrix X, response Y, and distribution distr. Columns of B correspond to ascending Lambda values, and [B,FitInfo] = lassoglm(...) returns MATLAB-compatible fit metadata.

Syntax

B = lassoglm(X, Y, distr)
B = lassoglm(X, Y, distr, Name, Value)
[B, FitInfo] = lassoglm(X, Y, distr)
[B, FitInfo] = lassoglm(X, Y, distr, Name, Value)

Inputs

NameTypeRequiredDefaultDescription
XNumericArrayYesPredictor matrix with observations in rows and predictors in columns.
YNumericArrayYesResponse vector, or two-column binomial successes/trials matrix.
distrStringScalarYesDistribution name: normal, binomial, or poisson.
optionsAnyVariadicName-value options such as Lambda, Alpha, Standardize, Intercept, Weights, Offset, CV, NumLambda, LambdaRatio, MaxIter, RelTol, and Options.

Returns

NameTypeDescription
BNumericArrayCoefficient matrix with one column per Lambda value.
FitInfoAnyFit information structure containing Lambda, Intercept, Deviance, DF, and diagnostics.

Returned values from lassoglm depend on how many outputs the caller requests.

Errors

IdentifierWhenMessage
RunMat:lassoglm:InvalidArgumentInputs, distribution name, dimensions, option names, or option values are malformed.lassoglm: invalid argument
RunMat:lassoglm:ConvergenceThe regularized GLM solver cannot make numerical progress.lassoglm: convergence failure
RunMat:lassoglm:InternalRunMat cannot construct lassoglm outputs.lassoglm: internal error

How lassoglm works

  • X must be a finite real numeric matrix with observations in rows and predictors in columns.
  • distr supports "normal"/"gaussian", "binomial", and "poisson". Normal and poisson responses are numeric vectors. Binomial responses may be a probability/logical vector or an N-by-2 successes/trials count matrix.
  • Lambda accepts a nonnegative scalar or vector. RunMat sorts Lambda values in ascending order for output, matching MATLAB's FitInfo.Lambda convention.
  • When Lambda is omitted, RunMat computes a geometric regularization path using NumLambda and LambdaRatio from an all-zero coefficient model.
  • Alpha supports lasso and elastic-net fits for values in (0,1]. Alpha=1 is lasso; smaller positive values mix in the ridge penalty.
  • Standardize and Intercept follow MATLAB's model form. Weights accepts a nonnegative observation-weight vector with positive total weight, and Offset accepts one finite offset per observation.
  • RelTol, MaxIter, and statset-style Options control solver convergence. Options.MaxIter, Options.TolX, and Options.TolFun are honored; enabled parallel options are rejected because RunMat's solver is CPU-local.
  • CV supports "resubstitution" and positive integer K-fold cross-validation. K-fold fits add SE, LambdaMinDeviance, Lambda1SE, IndexMinDeviance, and Index1SE fields to FitInfo.
  • BinomialSize supports scalar or per-observation trial counts for binomial probability responses. Link is accepted only for canonical supported links (identity, logit, or log according to distribution), EstDisp currently accepts "off", and unsupported values are rejected instead of silently changing the model.

Examples

Fit a binomial logistic model

X = [0; 1; 2; 3; 4; 5];
y = [0; 0; 0; 1; 1; 1];
[B,FitInfo] = lassoglm(X, y, "binomial", "Lambda", [0 0.1])

Expected output:

B has one row and two columns. FitInfo contains Intercept, Lambda, Deviance, DF, and Iterations.

Fit a poisson model with statset options

opts = statset("lassoglm", "MaxIter", 400);
[B,FitInfo] = lassoglm(X, counts, "poisson", "Options", opts)

Expected output:

The solver uses the supplied maximum iteration count and canonical log link.

Use K-fold cross-validation

[B,FitInfo] = lassoglm(X, y, "normal", "CV", 5);
coef = B(:,FitInfo.IndexMinDeviance)

Expected output:

FitInfo includes cross-validation deviance, SE, and Lambda selection fields.

Use grouped binomial counts

Y = [8 10; 3 10; 1 8];
B = lassoglm(X, Y, "binomial", "Weights", [1; 2; 1])

Expected output:

The first column is successes and the second column is trials.

Using lassoglm with coding agents

Open a RunMat example with live inputs, then ask the agent to explain how lassoglm changes the result.

Run a small lassoglm example, explain the result, then change one input and compare the output.

FAQ

Where is the intercept stored?

The coefficient matrix B contains only predictor coefficients. Intercepts are returned in FitInfo.Intercept, one value per Lambda.

Which links are implemented?

RunMat uses canonical links for supported distributions: identity for normal, logit for binomial, and log for poisson. Other Link values are rejected because returning a canonical-link fit for a noncanonical request would be misleading.

How are Lambda values ordered?

RunMat returns Lambda values in ascending order in FitInfo.Lambda, and the columns of B use the same order.

Does cross-validation match MATLAB's random partitions exactly?

No. RunMat currently uses deterministic round-robin K-fold partitions. The returned fields and selection semantics are MATLAB-compatible, but fold assignment is deterministic.

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how lassoglm is executed, line by line, in Rust.

About RunMat

RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.

  • RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
  • Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.

Getting started · Benchmarks · Pricing

Download RunMat

Download RunMat for full performance, or use RunMat in your browser for zero setup.