predict.glmnet
make predictions from a "glmnet" object.
Similar to other predict methods, this functions predicts fitted values, logits,
coefficients and more from a fitted "glmnet"
object.
- Keywords
- models, regression
Usage
# S3 method for glmnet
predict(object, newx, s = NULL,
type=c("link","response","coefficients","nonzero","class"), exact = FALSE, offset, ...)
# S3 method for glmnet
coef(object,s=NULL, exact=FALSE, ...)
Arguments
- object
Fitted
"glmnet"
model object.- newx
Matrix of new values for
x
at which predictions are to be made. Must be a matrix; can be sparse as inMatrix
package. This argument is not used fortype=c("coefficients","nonzero")
- s
Value(s) of the penalty parameter
lambda
at which predictions are required. Default is the entire sequence used to create the model.- type
Type of prediction required. Type
"link"
gives the linear predictors for"binomial"
,"multinomial"
,"poisson"
or"cox"
models; for"gaussian"
models it gives the fitted values. Type"response"
gives the fitted probabilities for"binomial"
or"multinomial"
, fitted mean for"poisson"
and the fitted relative-risk for"cox"
; for"gaussian"
type"response"
is equivalent to type"link"
. Type"coefficients"
computes the coefficients at the requested values fors
. Note that for"binomial"
models, results are returned only for the class corresponding to the second level of the factor response. Type"class"
applies only to"binomial"
or"multinomial"
models, and produces the class label corresponding to the maximum probability. Type"nonzero"
returns a list of the indices of the nonzero coefficients for each value ofs
.- exact
This argument is relevant only when predictions are made at values of
s
(lambda) different from those used in the fitting of the original model. Ifexact=FALSE
(default), then the predict function uses linear interpolation to make predictions for values ofs
(lambda) that do not coincide with those used in the fitting algorithm. While this is often a good approximation, it can sometimes be a bit coarse. Withexact=TRUE
, these different values ofs
are merged (and sorted) withobject$lambda
, and the model is refit before predictions are made. In this case, it is strongly advisable to supply the original datax=
andy=
as additional named arguments topredict()
orcoef()
. The workhorsepredict.glmnet()
needs toupdate
the model, and expects the data used to create it to be around. Although it will often work fine without supplying these additional arguments, it will likely break when used inside a nested sequence of function calls. If additional arguments such asweights
andoffset
were used, these should be included by name as well.- offset
If an offset is used in the fit, then one must be supplied for making predictions (except for
type="coefficients"
ortype="nonzero"
)- …
This is the mechanism for passing arguments like
x=
whenexact=TRUE
; seeexact
argument.
Details
The shape of the objects returned are different for
"multinomial"
objects. This function actually calls
NextMethod()
,
and the appropriate predict method is invoked for each of the three
model types. coef(...)
is equivalent to predict(type="coefficients",...)
Value
The object returned depends on type.
References
Friedman, J., Hastie, T. and Tibshirani, R. (2008) Regularization Paths for Generalized Linear Models via Coordinate Descent, http://www.stanford.edu/~hastie/Papers/glmnet.pdf Journal of Statistical Software, Vol. 33(1), 1-22 Feb 2010 http://www.jstatsoft.org/v33/i01/ Simon, N., Friedman, J., Hastie, T., Tibshirani, R. (2011) Regularization Paths for Cox's Proportional Hazards Model via Coordinate Descent, Journal of Statistical Software, Vol. 39(5) 1-13 http://www.jstatsoft.org/v39/i05/
See Also
glmnet
, and print
, and coef
methods, and cv.glmnet
.
Examples
# NOT RUN {
x=matrix(rnorm(100*20),100,20)
y=rnorm(100)
g2=sample(1:2,100,replace=TRUE)
g4=sample(1:4,100,replace=TRUE)
fit1=glmnet(x,y)
predict(fit1,newx=x[1:5,],s=c(0.01,0.005))
predict(fit1,type="coef")
fit2=glmnet(x,g2,family="binomial")
predict(fit2,type="response",newx=x[2:5,])
predict(fit2,type="nonzero")
fit3=glmnet(x,g4,family="multinomial")
predict(fit3,newx=x[1:3,],type="response",s=0.01)
# }