Bandwidth estimators for densities, used in the bandwidth
argument
to density functions (e.g. density_bounded()
, density_unbounded()
).
Supports automatic partial function application with waived arguments.
Usage
bandwidth_nrd0(x, ...)
bandwidth_nrd(x, ...)
bandwidth_ucv(x, ...)
bandwidth_bcv(x, ...)
bandwidth_SJ(x, ...)
bandwidth_dpi(x, ...)
Arguments
- x
<numeric> Vector containing a sample.
- ...
Arguments passed on to
stats::bw.SJ
nb
number of bins to use.
lower,upper
range over which to minimize. The default is almost always satisfactory.
hmax
is calculated internally from a normal reference bandwidth.method
either
"ste"
("solve-the-equation") or"dpi"
("direct plug-in"). Can be abbreviated.tol
for method
"ste"
, the convergence tolerance foruniroot
. The default leads to bandwidth estimates with only slightly more than one digit accuracy, which is sufficient for practical density estimation, but possibly not for theoretical simulation studies.
Details
These are loose wrappers around the corresponding bw.
-prefixed functions
in stats. See, for example, bw.SJ()
.
bandwidth_dpi()
, which is the default bandwidth estimator in ggdist,
is the Sheather-Jones direct plug-in estimator, i.e. bw.SJ(..., method = "dpi")
.
With the exception of bandwidth_nrd0()
, these estimators may fail in some
cases, often when a sample contains many duplicates. If they do they will
automatically fall back to bandwidth_nrd0()
with a warning. However, these
failures are typically symptomatic of situations where you should not want to
use a kernel density estimator in the first place (e.g. data with duplicates
and/or discrete data). In these cases consider using a dotplot (geom_dots()
)
or histogram (density_histogram()
) instead.