Learn R Programming

mpath (version 0.4-2.26)

irglmreg: Fit a robust penalized generalized linear models

Description

Fit a robust penalized GLM where the loss function is a composite function cfunodfun + penalty. This is the wrapper function of irglmreg_fit

Usage

# S3 method for formula
irglmreg(formula, data, weights, offset=NULL, contrasts=NULL, ...)
# S3 method for matrix
irglmreg(x, y, weights, offset=NULL, ...)
# S3 method for default
irglmreg(x,  ...)

Value

An object with S3 class "irglmreg" for the various types of models.

call

the call that produced this object

b0

Intercept sequence of length length(lambda)

beta

A nvars x length(lambda) matrix of coefficients.

lambda

The actual sequence of lambda values used

nobs

number of observations

risk

if type.path="nonactive", a matrix with number of rows iter and number of columns nlambda, loss values along the regularization path. If type.path="fast", a vector of length nlambda, loss values along the regularization path

pll

if type.path="nonactive", a matrix with number of rows iter and number of columns nlambda, penalized loss values along the regularization path. If type.path="fast", a vector of length nlambda, penalized loss values along the regularization path

fitted.values

predicted values depending on standardize, internal use only

Arguments

formula

symbolic description of the model, see details.

data

argument controlling formula processing via model.frame.

weights

optional numeric vector of weights. If standardize=TRUE, weights are renormalized to weights/sum(weights). If standardize=FALSE, weights are kept as original input

x

input matrix, of dimension nobs x nvars; each row is an observation vector

y

response variable. Quantitative for rfamily="clossR" and -1/1 for classification.

offset

Not implemented yet

contrasts

the contrasts corresponding to levels from the respective models

...

Other arguments passing to irglmreg_fit

Author

Zhu Wang <zwang145@uthsc.edu>

Details

The computing is done by the iteratively reweighted penalized GLM, an application of the iteratively reweighted convex optimization (IRCO). Here convex is the loss function induced by dfun, not the penalty function. The output weights_update is a useful diagnostic to the outlier status of the observations. The regularization path is computed for the lasso (or elastic net penalty), scad (or snet) and mcp (or mnet penalty), at a grid of values for the regularization parameter lambda. The sequence of robust models implied by lambda is fit by the IRCO along with coordinate descent. Note that the objective function is $$weights*loss + \lambda*penalty,$$ if standardize=FALSE and $$ \frac{weights}{\sum(weights)}*loss + \lambda*penalty,$$ if standardize=TRUE.

References

Zhu Wang (2024) Unified Robust Estimation, Australian & New Zealand Journal of Statistics. 66(1):77-102.

See Also

print, predict, coef and plot methods, and the cv.irglmreg function.

Examples

Run this code
#binomial
x=matrix(rnorm(100*20),100,20)
g2=sample(c(-1,1),100,replace=TRUE)
fit1=irglmreg(x,g2,s=1,cfun="ccave",dfun="gaussian",type.path="active",
              decreasing=TRUE,type.init="bst")
#fit1$risk
if (FALSE) {
### different solution paths via a combination of type.path, decreasing and type.init
fit1=irglmreg(x,g2,s=1,cfun="ccave",dfun="gaussian",type.path="active",
           decreasing=TRUE,type.init="bst")
fit2=irglmreg(x,g2,s=1,cfun="ccave",dfun="gaussian",type.path="active",
           decreasing=FALSE,type.init="bst")
fit3=irglmreg(x,g2,s=1,cfun="ccave",dfun="gaussian",type.path="nonactive",
           decreasing=TRUE,type.init="bst")
fit4=irglmreg(x,g2,s=1,cfun="ccave",dfun="gaussian",type.path="nonactive",
           decreasing=FALSE,type.init="bst")
fit5=irglmreg(x,g2,s=1,cfun="ccave",dfun="gaussian",type.path="active",
           decreasing=TRUE,type.init="co")
fit6=irglmreg(x,g2,s=1,cfun="ccave",dfun="gaussian",type.path="active",
           decreasing=FALSE,type.init="co")
fit7=irglmreg(x,g2,s=1,cfun="ccave",dfun="gaussian",type.path="nonactive",
           decreasing=TRUE,type.init="co")
fit8=irglmreg(x,g2,s=1,cfun="ccave",dfun="gaussian",type.path="nonactive",
           decreasing=FALSE,type.init="co")
}

Run the code above in your browser using DataLab