# stephens999/ashr

An R package for adaptive shrinkage
R C++ Rebol
Switch branches/tags
Nothing to show
Latest commit 75f9dcc Jul 9, 2018
 Failed to load latest commit information. R Jul 9, 2018 inst Nov 15, 2017 man Jul 9, 2018 src Jan 10, 2018 tests Dec 20, 2017 vignettes Jan 19, 2017 .Rbuildignore Sep 15, 2017 .gitignore Jan 19, 2017 .travis.yml Jun 21, 2017 DESCRIPTION Jul 9, 2018 NAMESPACE Jul 9, 2018 NEWS.md Dec 7, 2016 README.md Oct 18, 2017 appveyor.yml Jun 21, 2017 ashr.Rproj Nov 20, 2015 codecov.yml Oct 4, 2016

### README.md

This repository contains an R package for performing "Adaptive Shrinkage."

To install the ashr package first you need to install devtools:

install.packages("devtools")
library(devtools)
install_github("stephens999/ashr")

To use the interior-point solver (optmethod = "mixIP"), you need to install MOSEK and the Rmosek package. We have provided some Mac-specific and Linux-specific instructions for installing MOSEK.

## Running Adaptive Shrinkage

The main function in the ashr package is ash. To get minimal help:

library(ashr)
?ash

## More background

The ashr ("Adaptive SHrinkage") package aims to provide simple, generic, and flexible methods to derive "shrinkage-based" estimates and credible intervals for unknown quantities $\beta=(\beta_1,\dots,\beta_J)$, given only estimates of those quantities ($\hat\beta=(\hat\beta_1,\dots, \hat\beta_J)$) and their corresponding estimated standard errors ($s=(s_1,\dots,s_J)$).

The "adaptive" nature of the shrinkage is two-fold. First, the appropriate amount of shrinkage is determined from the data, rather than being pre-specified. Second, the amount of shrinkage undergone by each $\hat\beta_j$ will depend on the standard error $s_j$: measurements with high standard error will undergo more shrinkage than measurements with low standard error.

### Methods Outline

The methods are based on treating the vectors $\hat\beta$ and $s$ as "observed data", and then performing inference for $\beta$ from these observed data, using a standard hierarchical modelling framework to combine information across $j=1,\dots,J$.

Specifically, we assume that the true $\beta_j$ values are independent and identically distributed from some unimodal distribution $g$. By default we assume $g$ is unimodal about zero and symmetric. You can specify or estimate a different mode using the mode parameter. You can allow for asymmetric $g$ by specifying mixcompdist="halfuniform".

Then, we assume that the observations $\hat\beta_j \sim N(\beta_j,s_j)$, or alternatively the normal assumption can be replaced by a $t$ distribution by specifying df, the number of degrees of freedom used to estimate $s_j$. Actually this is important: do be sure to specify df if you can.