README.md

October 8, 2019 · View on GitHub

CRAN_Status_Badge Build Status AppVeyor Build Status Coverage Status Coverage Status

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

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 β=(β1,,βJ)\beta=(\beta_1,\dots,\beta_J), given only estimates of those quantities (β^=(β^1,,β^J)\hat\beta=(\hat\beta_1,\dots, \hat\beta_J)) and their corresponding estimated standard errors (s=(s1,,sJ)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 β^j\hat\beta_j will depend on the standard error sjs_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 ss 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,,Jj=1,\dots,J.

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

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