--- title: "Evaluation of sparse version of SuSiE" author: "Kaiqian Zhang" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{SuSiE with sparse matrix operations} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} knitr::opts_chunk$set(collapse = TRUE,comment = "#",fig.width = 4.5, fig.height = 3,fig.align = "center", fig.cap = " ",dpi = 120) ``` ## Set up environment ```{r, warning=FALSE} library(Matrix) library(susieR) set.seed(1) ``` ## Overview In this vignette, we provide line profiles for revised version SuSiE, which allows for a sparse matrix structure. We compare speed performance when the form of the matrix `X` is dense and sparse. In this minimal example, we observe that given a large sparse matrix, if it is in the dense form, the speed is around `40%` slower than that in a sparse form. ## Simulate data We randomly simulate a `n=1000` by `p=1000` dense matrix and a sparse matrix at sparsity $99\%$, i.e. $99\%$ entries are zeros. ```{r} create_sparsity_mat = function(sparsity, n, p) { nonzero <- round(n*p*(1-sparsity)) nonzero.idx <- sample(n*p, nonzero) mat <- numeric(n*p) mat[nonzero.idx] <- 1 mat <- matrix(mat, nrow=n, ncol=p) return(mat) } ``` ```{r} n <- 1000 p <- 1000 beta <- rep(0,p) beta[c(1,300,400,1000)] <- 10 X.dense <- create_sparsity_mat(0.99,n,p) X.sparse <- as(X.dense,"CsparseMatrix") y <- c(X.dense %*% beta + rnorm(n)) ``` ## `X` in a dense form ```{r} susie.dense <- susie(X.dense,y) ``` ## `X` in a sparse form ```{r} susie.sparse <- susie(X.sparse,y) ``` ## Further step We encourage people who are insterested in improving SuSiE can get insights from those line profiles provided.