Compute response predictions, extract coefficients, or identify nonzero predictors from a fitted bridge object.
Arguments
- object
Fitted object returned by
bridge, withppredictors in its training design.- newx
Numeric matrix with one row per new observation and the same
pcolumns, in the same order, as the training design. A numeric vector of lengthprepresents one observation. Values are supplied on the original predictor scale. Required only fortype = "response".- s
Numeric fitted penalty value(s). Values must match
object$lambdaexactly; no interpolation is used. Omitting this argument returns all fitted penalties.The character selector
lambda.minrequests the smallest fitted penalty. Use a CV object for the selectorlambda.1se.- type
Output to return:
"response"for fitted response values,"coefficients"for intercept and slopes, or"nonzero"for predictor indices over the entire fitted path.- ...
Additional arguments accepted for compatibility.
Value
For type = "response", a numeric vector for one
selected penalty or a matrix with one row per new observation and one
column per selected penalty. For type = "coefficients", a numeric
matrix with p + 1 rows, including the intercept, even for one penalty.
For type = "nonzero", a pathwise collection of 1-based predictor
indices excluding the intercept. Its historical container can simplify
depending on the support pattern and number of predictors.
Details
Prediction uses the fitted intercept and original-scale slopes.
Columns of newx are matched by position, not reordered by their names.
For type = "nonzero", all fitted penalties are inspected and
s does not restrict the returned indices.
Author
Bahadir Yuzbasi
Maintainer: Bahadir Yuzbasi b.yzb@hotmail.com
Examples
# Reproducible synthetic demonstration: 100 observations, eight predictors.
set.seed(2019)
beta <- c(3, 1.5, 0, 0, 2, 0, 0, 0)
p <- length(beta)
beta <- matrix(beta, nrow = p, ncol = 1)
n <- 100
X <- matrix(rnorm(n * p), nrow = n, ncol = p)
y <- as.numeric(X %*% beta + rnorm(n))
# Five penalties keep this help example fast; the default is 100.
model1 <- bridge(X, y, q = 1, nlambda = 5)
# Predict five observations at one explicitly selected penalty.
predict(model1, newx = X[1:5, , drop = FALSE], s = model1$lambda[2])
#> [1] -1.5002196 0.2180873 -1.5417858 2.4731030 -9.8607011
# Extract coefficients using the complete type name.
predict(model1, s = model1$lambda[2], type = "coefficients")
#> 26.8035044402758
#> (Intercept) -3.121540e-02
#> V1 2.848999e+00
#> V2 1.433841e+00
#> V3 1.282147e-04
#> V4 -1.150407e-05
#> V5 1.879705e+00
#> V6 -1.064341e-04
#> V7 8.497907e-08
#> V8 -1.609602e-05
# Predictor indices for every fitted penalty; the intercept is excluded.
predict(model1, type = "nonzero")
#> $`802.149726533951`
#> [1] 1 5
#>
#> $`26.8035044402758`
#> [1] 1 2 3 4 5 6 7 8
#>
#> $`0.895628118436414`
#> [1] 1 2 3 4 5 6 7 8
#>
#> $`0.0299270466039737`
#> [1] 1 2 3 4 5 6 7 8
#>
#> $`0.001`
#> [1] 1 2 3 4 5 6 7 8
#>