library(hdrm)

# Ridge and lasso penalties
Fig2.1()

# A little demonstration of non-uniqueness
library(rgl)
a <- b <- seq(-1, 2, len=99)
f <- function(a, b, lam) {
  1/4*((1-a-b)^2+(-1+a+b)^2) + lam*abs(a) + lam*abs(b)
}
persp3d(a, b, outer(a, b, f, lam=2), col='slateblue', zlim = c(0.25, 5))
close3d()
persp3d(a, b, outer(a, b, f, lam=0.5), col='slateblue', zlim = c(0.25, 1))

# Soft and hard thresholding operators
par(mar=c(4, 5, 3, 0.5))
Fig2.2()

# Lasso sampling distribution
Fig2.3()

