## ----include=FALSE------------------------------------------------------------

rm(list=ls())
gc()

hook_output <- knitr::knit_hooks$get("output")

knitr::knit_hooks$set(output = function(x, options) {
  if (!is.null(n <- options$out.lines)) {
    x <- xfun::split_lines(x)
    if (length(x) > n) {
      x <- c(head(x, n), "....\n")
    }
    x <- paste(x, collapse = "\n")
  }
  hook_output(x, options)
})


## ----startup, eval=FALSE, error=FALSE, warning=FALSE, message=FALSE-----------
# 
# library(devtools)
# devtools::install_github("MCKnaus/plasso")
# 
# install.packages("plasso")
# 

## ----load---------------------------------------------------------------------

library(plasso)


## ----data---------------------------------------------------------------------

data(toeplitz)

y = as.matrix(toeplitz[,1])
X = toeplitz[,-1]


## ----fitplasso, out.lines=10--------------------------------------------------

p = plasso::plasso(X,y)


## ----plotplasso, error=FALSE, warning=FALSE, message=FALSE--------------------

plot(p, lasso=FALSE, xvar="lambda")

plot(p, lasso=TRUE, xvar="lambda")


## ----coefplasso, error=FALSE, warning=FALSE, message=FALSE--------------------

coef_p = coef(p, s=0.01)

as.vector(coef_p$plasso)
as.vector(coef_p$lasso)


## ----fitcvplasso--------------------------------------------------------------

p.cv = plasso::cv.plasso(X,y,kf=5)
summary(p.cv, default=FALSE)


## ----plotcvplasso, fig.width=7, fig.height=3----------------------------------

plot(p.cv, legend_pos="left", legend_size=0.5)


## ----index_min_plasso---------------------------------------------------------

p.cv$lambda_min_pl


## ----coef_min_plasso, out.lines=10--------------------------------------------

coef_pcv = coef(p.cv, S="optimal")
as.vector(coef_pcv$plasso)


