Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----echo = TRUE, eval = FALSE------------------------------------------------
# install.packages("sparsegl")
## ----echo = TRUE, eval = FALSE------------------------------------------------
# # install.packages("remotes")
# remotes::install_github("dajmcdon/sparsegl")
## ----eval = FALSE-------------------------------------------------------------
# remotes::install_github(
# "dajmcdon/sparsegl",
# build_vignettes = TRUE,
# dependencies = TRUE
# )
## -----------------------------------------------------------------------------
library(sparsegl)
set.seed(1010)
n <- 100
p <- 200
X <- matrix(data = rnorm(n * p, mean = 0, sd = 1), nrow = n, ncol = p)
beta_star <- c(
rep(5, 5), c(5, -5, 2, 0, 0), rep(-5, 5),
c(2, -3, 8, 0, 0), rep(0, (p - 20))
)
groups <- rep(1:(p / 5), each = 5)
# Linear regression model
eps <- rnorm(n, mean = 0, sd = 1)
y <- X %*% beta_star + eps
# Logistic regression model
pr <- 1 / (1 + exp(-X %*% beta_star))
y_binary <- rbinom(n, 1, pr)
## -----------------------------------------------------------------------------
fit1 <- sparsegl(X, y, group = groups)
## ----message = FALSE, warning = FALSE, fig.width = 8, fig.height = 4----------
plot(fit1, y_axis = "group", x_axis = "lambda")
plot(fit1, y_axis = "coef", x_axis = "penalty", add_legend = FALSE)
## ----fig.width = 8, fig.height = 4--------------------------------------------
fit_l1 <- cv.sparsegl(X, y, group = groups, pred.loss = "mae")
plot(fit_l1)
## -----------------------------------------------------------------------------
coef <- coef(fit1, s = c(0.02, 0.03))
predict(fit1, newx = X[100, ], s = fit1$lambda[2:3])
predict(fit_l1, newx = X[100, ], s = "lambda.1se")
print(fit1)
## -----------------------------------------------------------------------------
risk <- estimate_risk(fit1, X, approx_df = FALSE)
## ----echo = FALSE, message=FALSE, warning=FALSE, fig.align='center', fig.width = 8, fig.height = 4----
library(dplyr)
library(tidyr)
library(ggplot2)
er <- risk %>%
dplyr::select(-df) %>%
pivot_longer(-lambda, values_to = "risk")
err <- er %>%
group_by(name) %>%
summarise(lambda = lambda[which.min(risk)])
ggplot(er, aes(lambda, risk, color = name)) +
geom_line() +
scale_color_brewer(palette = "Dark2") +
geom_vline(
data = err, aes(xintercept = lambda, color = name),
linetype = "dashed", show.legend = FALSE
) +
theme_bw() +
ylab("Estimated risk") +
xlab("Lambda") +
scale_x_log10() +
scale_y_log10() +
theme(legend.title = element_blank())
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.