
---
title: Sparse regression with paired covariates
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{vignette}
  %\VignetteEncoding{UTF-8}
  %\VignetteEngine{knitr::rmarkdown}
editor_options: 
  chunk_output_type: console
---

```{r,include=FALSE}
knitr::opts_chunk$set(echo=TRUE,eval=FALSE)
```


The R package `palasso` implements the paired lasso.

## Installation

Installing the current release from [CRAN](https://CRAN.R-project.org/package=palasso):

```{r,eval=FALSE}
install.packages("palasso")
```

Installing the latest development version from [GitHub](https://github.com/rauschenberger/palasso):

```{r,eval=FALSE}
#install.packages("devtools")
library(devtools)
install_github("rauschenberger/palasso")
```

## Initialisation

We use [glmnet](https://CRAN.R-project.org/package=glmnet) for the *standard lasso*, and [palasso](https://CRAN.R-project.org/package=palasso) for the *paired lasso*.

Loading and attaching the packages:

```{r, message=FALSE}
library(glmnet)
library(palasso)
```

Attaching some data to reproduce the examples:

```{r, eval=FALSE}
attach(toydata)
```

```{r, echo=FALSE}
names <- names(toydata)
for(i in 1:length(names)){
    assign(names[i],toydata[[i]])
}
rm(names)
```

Data are available for $n=30$ samples and $p=50$ covariate pairs. The object `y` contains the response (numeric vector of length $n$). The object `X` contains the covariates (list of two numeric matrices, both with $n$ rows and $p$ columns).

## Standard lasso

The standard lasso is a good choice for exploiting either the first or the second covariate group:

```{r}
object <- glmnet(y=y,x=X[[1]])
object <- glmnet(y=y,x=X[[2]])
```

## Paired lasso

But the paired lasso might be a better choice for exploiting both covariates groups at once:

```{r}
object <- palasso(y=y,X=X)
```

In contrast to the standard lasso, the paired lasso accounts for the structure between the covariate groups.

Given a limited number of non-zero coefficients, we expect the paired lasso to outperform the standard lasso: 

```{r,results='hide'}
object <- palasso(y=y,X=X,max=10)
```

## Methods

Standard methods are available for the paired lasso:

```{r,results='hide'}
weights(object)
```

```{r,results='hide'}
fitted(object)
```

```{r,results='hide'}
residuals(object)
```

```{r,results='hide'}
predict(object,newdata=X)
```

## Reference

A Rauschenberger, I Ciocanea-Teodorescu, RX Menezes, MA Jonker, and MA van de Wiel (2020). "Sparse classification with paired covariates". *Advances in Data Analysis and Classification.* 14:571-588. [doi: 10.1007/s11634-019-00375-6](https://doi.org/10.1007/s11634-019-00375-6)
