Evaluation of sparse version of SuSiE

knitr::opts_chunk$set(collapse = TRUE,comment = "#",fig.width = 4.5,
                      fig.height = 3,fig.align = "center",
                      fig.cap = " ",dpi = 120)

Set up environment

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.

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)
}
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

susie.dense <- susie(X.dense,y)

X in a sparse form

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.



Try the susieR package in your browser

Any scripts or data that you put into this service are public.

susieR documentation built on March 7, 2023, 6:11 p.m.