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
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
X | NumericArray | Yes | — | Predictor matrix with observations in rows and predictors in columns. |
Y | NumericArray | Yes | — | Response vector, or two-column binomial successes/trials matrix. |
distr | StringScalar | Yes | — | Distribution name: normal, binomial, or poisson. |
options | Any | Variadic | — | Name-value options such as Lambda, Alpha, Standardize, Intercept, Weights, Offset, CV, NumLambda, LambdaRatio, MaxIter, RelTol, and Options. |
Returns
| Name | Type | Description |
|---|---|---|
B | NumericArray | Coefficient matrix with one column per Lambda value. |
FitInfo | Any | Fit information structure containing Lambda, Intercept, Deviance, DF, and diagnostics. |
Returned values from lassoglm depend on how many outputs the caller requests.
Errors
| Identifier | When | Message |
|---|---|---|
RunMat:lassoglm:InvalidArgument | Inputs, distribution name, dimensions, option names, or option values are malformed. | lassoglm: invalid argument |
RunMat:lassoglm:Convergence | The regularized GLM solver cannot make numerical progress. | lassoglm: convergence failure |
RunMat:lassoglm:Internal | RunMat cannot construct lassoglm outputs. | lassoglm: internal error |
How lassoglm works
Xmust be a finite real numeric matrix with observations in rows and predictors in columns.distrsupports"normal"/"gaussian","binomial", and"poisson". Normal and poisson responses are numeric vectors. Binomial responses may be a probability/logical vector or anN-by-2 successes/trials count matrix.Lambdaaccepts a nonnegative scalar or vector. RunMat sorts Lambda values in ascending order for output, matching MATLAB'sFitInfo.Lambdaconvention.- When
Lambdais omitted, RunMat computes a geometric regularization path usingNumLambdaandLambdaRatiofrom an all-zero coefficient model. Alphasupports lasso and elastic-net fits for values in(0,1].Alpha=1is lasso; smaller positive values mix in the ridge penalty.StandardizeandInterceptfollow MATLAB's model form.Weightsaccepts a nonnegative observation-weight vector with positive total weight, andOffsetaccepts one finite offset per observation.RelTol,MaxIter, and statset-styleOptionscontrol solver convergence.Options.MaxIter,Options.TolX, andOptions.TolFunare honored; enabled parallel options are rejected because RunMat's solver is CPU-local.CVsupports"resubstitution"and positive integer K-fold cross-validation. K-fold fits addSE,LambdaMinDeviance,Lambda1SE,IndexMinDeviance, andIndex1SEfields toFitInfo.BinomialSizesupports scalar or per-observation trial counts for binomial probability responses.Linkis accepted only for canonical supported links (identity,logit, orlogaccording to distribution),EstDispcurrently accepts"off", and unsupported values are rejected instead of silently changing the model.- Typed-integer X, Y, numeric parameters, direct controls, and honored nested
Optionsfields are independently classified RunMat-only extensions. Integer values remain exact until a checked double solver boundary; values not exactly representable as double reject rather than round.
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.
Related Stats functions
Ml
bayesopt · classify · confusionmat · crossvalind · cvpartition · fitclinear · fitctree · fitlm · kmeans · knnsearch · lasso · linkage · lscov · mnrfit · optimizableVariable · pdist · pdist2 · perfcurve · predict · regress · ridge · squareform · test · training · tsne
Summary
binocdf · boxplot · cdf · cdfplot · chi2cdf · corr · corrcoef · corrcov · cov · cov2corr · dummyvar · ecdf · filloutliers · fitdist · geomean · grpstats · harmmean · icdf · isoutlier · kstest · kurtosis · lsline · mad · mode · nanmax · normalize · normcdf · norminv · normpdf · onehotdecode · onehotencode · pdf · prctile · quantile · refline · rmse · skewness · tabulate · tcdf · tiedrank · tinv · tpdf · ttest2 · wblinv
Random
binornd · bootstrp · datasample · dividerand · exprnd · gamrnd · lhsdesign · mvnrnd · normrnd · random · randsample · rng · trnd · unidrnd · unifrnd · wblrnd
Hist
Open-source implementation
Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how lassoglm is executed, line by line, in Rust.
- View the source for lassoglm in Rust on GitHub
- Learn how the RunMat runtime works
- Found a bug? Open an issue with a minimal reproduction.
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.