Solves the empirical Bayes normal means (EBNM) problem using the family of
unimodal distributions with support constrained to be greater than the
mode. Identical to function ebnm
with argument
prior_family = "unimodal_nonnegative"
. For details about the model,
see ebnm
.
ebnm_unimodal_nonnegative(
x,
s = 1,
mode = 0,
scale = "estimate",
g_init = NULL,
fix_g = FALSE,
output = ebnm_output_default(),
control = NULL,
...
)
An ebnm
object. Depending on the argument to output
, the
object is a list containing elements:
data
A data frame containing the observations x
and standard errors s
.
posterior
A data frame of summary results (posterior means, standard deviations, second moments, and local false sign rates).
fitted_g
The fitted prior \(\hat{g}\).
log_likelihood
The optimal log likelihood attained, \(L(\hat{g})\).
posterior_sampler
A function that can be used to
produce samples from the posterior. The sampler takes a single
parameter nsamp
, the number of posterior samples to return per
observation.
S3 methods coef
, confint
, fitted
, logLik
,
nobs
, plot
, predict
, print
, quantile
,
residuals
, simulate
, summary
, and vcov
have been implemented for ebnm
objects. For details, see the
respective help pages, linked below under See Also.
A vector of observations. Missing observations (NA
s) are
not allowed.
A vector of standard errors (or a scalar if all are equal). Standard errors may not be exactly zero, and missing standard errors are not allowed.
A scalar specifying the mode of the prior \(g\) or
"estimate"
if the mode is to be estimated from the data.
The nonparametric family of nonnegative unimodal distributions is
approximated via a finite mixture of uniform distributions
$$\pi_1 \mathrm{Unif}(\mu, \mu + a_1)
+ \ldots + \pi_K \mathrm{Unif}(\mu, \mu + a_K),$$
where parameters \(\pi_k\) are estimated and the grid
of lengths \((a_1, \ldots, a_K)\) is fixed in advance. By
making the grid sufficiently dense, one can obtain an arbitrarily good
approximation. The grid can be specified by the user via parameter
scale
, in which case the argument should be the vector of
lengths \((a_1, \ldots, a_K)\); alternatively, if
scale = "estimate"
, then ebnm
sets the grid via function
ebnm_scale_unimix
.
Note that ebnm
sets the grid differently from
function ash
. To use the ash
grid, set
scale = "estimate"
and pass in gridmult
as an additional
parameter. See ash
for defaults and details.
The prior distribution \(g\). Usually this is left
unspecified (NULL
) and estimated from the data. However, it can be
used in conjuction with fix_g = TRUE
to fix the prior (useful, for
example, to do computations with the "true" \(g\) in simulations). If
g_init
is specified but fix_g = FALSE
, g_init
specifies the initial value of \(g\) used during optimization. This has
the side effect of fixing the mode
and scale
parameters. When
supplied, g_init
should be an object of class
unimix
or an ebnm
object in which the fitted
prior is an object of class unimix
.
If TRUE
, fix the prior \(g\) at g_init
instead
of estimating it.
A character vector indicating which values are to be returned.
Function ebnm_output_default()
provides the default return values, while
ebnm_output_all()
lists all possible return values. See Value
below.
A list of control parameters to be passed to optimization
function mixsqp
.
Additional parameters to be passed to function
ash
in package ashr
.
See ebnm
for examples of usage and model details.
Available S3 methods include coef.ebnm
,
confint.ebnm
,
fitted.ebnm
, logLik.ebnm
,
nobs.ebnm
, plot.ebnm
,
predict.ebnm
, print.ebnm
,
print.summary.ebnm
, quantile.ebnm
,
residuals.ebnm
, simulate.ebnm
,
summary.ebnm
, and vcov.ebnm
.