Regularized Linear Models

Algorithms optimize penalized models. Currently the models include penalized Poisson, negative binomial, zero-inflated Poisson, zero-inflated negative binomial regression models and robust models. The penalties include least absolute shrinkage and selection operator (LASSO), smoothly clipped absolute deviation (SCAD), minimax concave penalty (MCP), and each possibly combining with L_2 penalty. See Wang et al. (2014) , Wang et al. (2015) , Wang et al. (2016) , Wang (2019) .


            CHANGES in `gzippath' VERSION 0.1_7   (2012-8-20)

o change glmcd on how the response variable y is scaled for family other than gaussian

o 8-25-2012 modification on gzipath_0.1-9.tar.gz b0 should be the average of response variable y for non-standardized case, in an agreement with the so determined lambda max for which beta = 0. This is correct in R function lmnet, see zipath_0.1-2_08_10_2012.tar.gz

            CHANGES in `gzipath' VERSION 0.1_13   (2013-11-24)

o for weighted penalized regression glmreg_fit, with standardize=TRUE, the weights are normalized to n*weights/sum(weights). Now added standardize=FALSE and the weights are not normalized. o zipath function was modified to incorporate glmreg_fit for weighted penalized Poisson and Negative Binomial regression. The tuning parameters were changed based on modified glmreg_fit.

            CHANGES in `gzipath' VERSION 0.1_14   (2014-5-8)

o for rescale=TRUE and penalty="mnet" or "snet" in zipath, data driven lambda.zero1 is too small, now changed to 0.5*sqrt([1]). This may be modified if the maximum value of lambda in glmreg was changed in the similar situations.

            CHANGES in `gzipath' VERSION 0.1_14   (2014-6-9)

o change package name to `mpath'

            CHANGES in `mpath' VERSION 0.1_15   (2014-9-23)

o apply patch from Martyn Plummer [email protected] to replace isna and lgamma in src Fortran file to avoid failure on some platforms

            CHANGES in `mpath' VERSION 0.1_16   (2014-10-25)

o change src/midloop.f, now saturated model only applies to logistic regression o add penalty.factor.count and in zipath function to allow different penalties for each of the variables. o add vignette to illustrate analysis of German health care demand

            CHANGES in `mpath' VERSION 0.1_17   (2014-11-10)

o fix a bug in function estfunReg, which is supposed to work only for one penalty parameter o fix a bug in src/lmnetGaus.f, computing meanx

            CHANGES in `mpath' VERSION 0.1_18   (2015-2-26)

o vignette file was updated to be consistent with the corresponding paper Wang et al (2015) o fix bugs in cv.glmreg.Rd, cv.glmregNB.Rd and cv.zipath.Rd o in findlam function, verify 0 < alpha <= 1 o fix a bug with intercept estimate for family="gaussian" o remove the threshold value mu=1000 for family=4 in midloop.f, lines 167 and 207 o change function name predict.zeroinfl1 to predictzeroinfl1

            CHANGES in `mpath' VERSION 0.1_19   (2015-7-23)

o editorial changes to files in man directory

            CHANGES in `mpath' VERSION 0.1_20   (2015-7-23)

o rebuild static_german.pdf, updating a reference o fix a bug in loss function for family="gaussian"

            CHANGES in `mpath' VERSION 0.1_21   (2015-11-23)

o minor changes to print lambda 4 digits

           CHANGES in `mpath' VERSION 0.2-1 (12-09-2015)

o add parallel computing for cross-validation in cross-validation function o remove vuong test, based on Wilson (2015), The misuse of the Vuong test for non-nested models to test for zero-inflation, Economics Letters, 127: 51:53

           CHANGES in `mpath' VERSION 0.2-3 (08-10-2016)

o change the format of b0 and beta in glmreg function when standardize=FALSE, to be consistent with standardize=TRUE o for findlam function in glmreg.R, change if(standardize) weights <- weights/sum(weights)


if(family=="gaussian" || standardize)     
    weights <- weights/sum(weights)

This corrects an error in glmreg with family="gaussian" and standardize=FALSE

o In src/lmnetGLM.f, remove lmnetGLM subroutine, which was not used anymore o fix subroutines in lmnetGLM.f, lmnetGaussian.f, midloop.f and outloop.f regarding gfortran warning messages with an email request from cran.R-project on August 28, 2016

           CHANGES in `mpath' VERSION 0.2-4 (08-30-2016)

o after a change of penGLM subroutine in midloop.f (removing unused argument n), glmreg.R and zipath.R were changed when invoking penGLM.

           CHANGES in `mpath' VERSION 0.3-1 (09-16-2016)

o add ncl and nclreg, and relevant files for nonconvex-based models o fix a bug computing penval in glmreg, add penalty.factor when calling penGLM in glmreg and zipath. These bugs don't affect the previous analysis results

           CHANGES in `mpath' VERSION 0.3-2 (07-14-2017)

o To register native routines and to disable symbol search. $cd mpath $R > tools::package_native_routine_registration_skeleton(".") copy and paste the full output in a packagename_init.c (i.e., mpath_init.c) file to be put in src/ o change convergence criteria in nclreg.R d1 <- sum((fk_old - fk)^2) #d1 <- sum((fk_old - fk)^2)/sum(fk_old^2) ### this can cause a problem if fk_old is zero o another change of convergence criteria in nclreg.R: comment out the following lines #if(k > 1){ # if(los[k] > los[k-1]){ #k <- iter #} #} o fix a bug in nclreg.R: lambda.min.ratio was not used in computing lambda with glmreg_fit o in nclreg.R, computing solution path stops if the numbers in exponential function become too big (infinite) if(any(is.nan(h))){ # exit loop stopit <- TRUE break } o add type.init and relevant arguments in nclreg_fit function to have three types of initial parameters and lambda values o replace fraction with lambda in cv.glmreg.R, cv.nclreg.R, cv.zipath.R and cv.glmregNB.R. This only affects the values of x-axis in plots, but not cross-validation results o add type.path to have two different updating methods when computing solution paths

           CHANGES in `mpath' VERSION 0.3-3 (08-17-2017)

o cycle through active set

           CHANGES in `mpath' VERSION 0.3-4 (08-22-2017)

o add type="active" in R/nclreg_fit function o fix a bug with cv.zipath when o add stopImplicitCluster() after registerDoParallel

           CHANGES in `mpath' VERSION 0.3-5 (10-17-2017)

o add vignette to illustrate classification of cancer patients with penalized robust nonconvex loss functions o change zipath function to cycle through warm start. The results can be different from the previous versions. o fix bugs with zipath when trace=TRUE and the zero component is an intercept-only model

           CHANGES in `mpath' VERSION 0.3-6 (10-04-2018)

o fix bugs when all elements of penalty.factor=0 in glmreg_fit or glmregNB. In this case, we set lambda=0 for each variable, and all penalty.factor=1. o fix bugs when all elements of penalty.factor.count=0 or in zipath. In this case, we set corresponding lambda = 0. o fix bugs when activeset=NULL in nclreg function

           CHANGES in `mpath' VERSION 0.3-7 (01-26-2019)

o changes were made to make offset in glmreg work. This includes changes in outloop.f, midloop.f, midloopGLM.f, lmnetGLM. o Changes were made in midloopGLM.f so that iterations run and check for convergency for b0 as well as beta
o Changes were made in zipath to make offset work o offset is now working in glmregNB, zipath, cv.glmreg, cv.glmregNB and cv.zipath

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.3-26 by Zhu Wang, 5 months ago

Report a bug at

Browse source code at

Authors: Zhu Wang , with contributions from Achim Zeileis , Simon Jackman , Brian Ripley , Trevor Hastie , Rob Tibshirani , Balasubramanian Narasimhan , Gil Chu and Patrick Breheny

Documentation:   PDF Manual  

GPL-2 license

Imports MASS, pscl, numDeriv, foreach, doParallel, bst

Depends on methods

Suggests zic, R.rsp, knitr, gdata

Imported by bujar.

See at CRAN