Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----dont-eval, eval=FALSE----------------------------------------------------
# islasso(formula, family = gaussian, lambda, alpha = 1, data, weights, subset,
# offset, unpenalized, contrasts = NULL, control = is.control())
## ----dont-eval-1, eval=FALSE--------------------------------------------------
# islasso.path(formula, family = gaussian, lambda = NULL, nlambda = 100,
# lambda.min.ratio = ifelse(nobs < nvars, 1E-3, 1E-05), alpha = 1,
# data, weights, subset, offset, unpenalized, contrasts = NULL, control = is.control())
## ----dont-eval1, eval=FALSE---------------------------------------------------
# islasso.fit(X, y, family = gaussian(), lambda, alpha = 1, intercept = FALSE,
# weights = NULL, offset = NULL, unpenalized = NULL, control = is.control())
## ----dont-eval1-1, eval=FALSE-------------------------------------------------
# islasso.path.fit(X, y, family = gaussian(), lambda, nlambda, lambda.min.ratio,
# alpha = 1, intercept = FALSE, weights = NULL, offset = NULL,
# unpenalized = NULL, control = is.control())
## -----------------------------------------------------------------------------
library(islasso)
data("Prostate", package = "islasso")
x <- model.matrix(lpsa ~ ., data = Prostate)[, -1]
y <- Prostate$lpsa
a1 <- cv.glmnet(x, y, family = "gaussian")
n <- nrow(Prostate)
a1$lambda.min * n
b <- drop(coef(a1, "lambda.min", exact = TRUE))
length(b[b != 0])
## ----fold.source = TRUE-------------------------------------------------------
names(b[b != 0])
## -----------------------------------------------------------------------------
tail(b[b != 0], n = 3)
## -----------------------------------------------------------------------------
out <- islasso.path(lpsa ~ ., data = Prostate, nlambda = 50L, family = gaussian())
out
## -----------------------------------------------------------------------------
lmb.best <- GoF.islasso.path(out)
lmb.best$lambda.min
## ----plot1, fig.cap="Regularization path for coefficients, standard errors and gradients."----
p1 <- plot(out, yvar = "coefficients")
p2 <- plot(out, yvar = "se")
p3 <- plot(out, yvar = "gradient")
gridExtra::grid.arrange(p1, p2, p3, ncol = 1L)
## -----------------------------------------------------------------------------
lambda.aic <- lmb.best$lambda.min["AIC"]
out2 <- islasso(lpsa ~ ., data = Prostate, lambda = lambda.aic, family = gaussian())
out2
## -----------------------------------------------------------------------------
summary(out2, pval = 0.10)
## -----------------------------------------------------------------------------
sum(out2$internal$hi)
## -----------------------------------------------------------------------------
lambda.aic2 <- aic.islasso(out2, method = "AIC", interval = c(.1, 50))
out3 <- update(out2, lambda = lambda.aic2)
summary(out3, pval = .10)
## -----------------------------------------------------------------------------
# update the islasso path to fit an elastic-net model
out4 <- update(out, alpha = .5)
out4
# some diagnostic plot
p4 <- plot(out4, yvar = "coefficients")
p5 <- plot(out4, yvar = "se")
gridExtra::grid.arrange(p4, p5, ncol = 1L)
# select the best tuning parameter
lmb.best2 <- GoF.islasso.path(out4)
lmb.best2$lambda.min
# fit a new islasso model with elastic-net penalty
lambda.aic3 <- lmb.best2$lambda.min["AIC"]
out5 <- update(out2, alpha = .5, lambda = lambda.aic3)
summary(out5, pval = .10)
# or select the best tuning parameter using AIC with an islasso object
lambda.aic4 <- aic.islasso(out5, method = "AIC", interval = c(.1, 100))
out6 <- update(out5, lambda = lambda.aic4)
summary(out6, pval = .10)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.