kde {IsoplotR} | R Documentation |
Create (a) kernel density estimate(s)
Description
Creates one or more kernel density estimates using a combination of the Botev (2010) bandwidth selector and the Abramson (1982) adaptive kernel bandwidth modifier.
Usage
kde(x, ...)
## Default S3 method:
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'other'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'UPb'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
type = 4,
cutoff.76 = 1100,
cutoff.disc = discfilter(),
common.Pb = 0,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'detritals'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = FALSE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
ncol = NA,
samebandwidth = TRUE,
normalise = TRUE,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'PbPb'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
common.Pb = 2,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'ArAr'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
i2i = FALSE,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'KCa'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
i2i = FALSE,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'ThPb'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
i2i = FALSE,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'ThU'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [ka]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
Th0i = 0,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'ReOs'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
i2i = TRUE,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'SmNd'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
i2i = TRUE,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'RbSr'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
i2i = TRUE,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'LuHf'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
i2i = TRUE,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'UThHe'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
## S3 method for class 'fissiontracks'
kde(
x,
from = NA,
to = NA,
bw = NA,
adaptive = TRUE,
log = FALSE,
n = 512,
plot = TRUE,
rug = TRUE,
xlab = "age [Ma]",
ylab = "",
kde.col = rgb(1, 0, 1, 0.6),
hist.col = rgb(0, 1, 0, 0.2),
show.hist = TRUE,
bty = "n",
binwidth = NA,
hide = NULL,
nmodes = 0,
sigdig = 2,
...
)
Arguments
x |
a vector of numbers OR an object of class |
... |
optional arguments to be passed on to |
from |
minimum age of the time axis. If |
to |
maximum age of the time axis. If |
bw |
the bandwidth of the KDE. If |
adaptive |
logical flag controlling if the adaptive KDE modifier of Abramson (1982) is used |
log |
transform the ages to a log scale if |
n |
horizontal resolution (i.e., the number of segments) of the density estimate. |
plot |
show the KDE as a plot |
rug |
add a rug plot? |
xlab |
the x-axis label |
ylab |
the y-axis label |
kde.col |
the fill colour of the KDE specified as a four
element vector of |
hist.col |
the fill colour of the histogram specified as a
four element vector of |
show.hist |
logical flag indicating whether a histogram should be added to the KDE |
bty |
change to |
binwidth |
scalar width of the histogram bins, in Myr if
|
hide |
vector with indices of aliquots that should be removed from the plot. |
nmodes |
label the |
sigdig |
the number of significant digits to which the modes
should be labelled. Only used if |
type |
scalar indicating whether to plot the
|
cutoff.76 |
the age (in Ma) below which the
|
cutoff.disc |
discordance cutoff filter. This is an object of
class |
common.Pb |
common lead correction:
|
ncol |
scalar value indicating the number of columns over which the KDEs should be divided. |
samebandwidth |
logical flag indicating whether the same
bandwidth should be used for all samples. If
|
normalise |
logical flag indicating whether or not the KDEs should all integrate to the same value. |
i2i |
‘isochron to intercept’: calculates the initial (aka
‘inherited’, ‘excess’, or ‘common’)
|
Th0i |
initial
|
Details
Given a set of n
age estimates \{t_1, t_2, ..., t_n\}
,
histograms and KDEs are probability density estimators that display
age distributions by smoothing. Histograms do this by grouping the
data into a number of regularly spaced bins. Alternatively, kernel
density estimates (KDEs; Vermeesch, 2012) smooth data by applying a
(Gaussian) kernel:
KDE(t) = \sum_{i=1}^{n}N(t|\mu=t_i,\sigma=h[t])/n
where N(t|\mu,\sigma)
is the probability of observing a value
t
under a Normal distribution with mean \mu
and
standard deviation \sigma
. h[t]
is the smoothing
parameter or ‘bandwidth’ of the kernel density estimate, which may
or may not depend on the age t
. If h[t]
depends on
t
, then KDE(t)
is known as an ‘adaptive’ KDE. The
default bandwidth used by IsoplotR
is calculated using the
algorithm of Botev et al. (2010) and modulated by the adaptive
smoothing approach of Abramson (1982). The rationale behind
adaptive kernel density estimation is to use a narrower bandwidth
near the peaks of the sampling distribution (where the ordered
dates are closely spaced in time), and a wider bandwidth in the
distribution's sparsely sampled troughs. Thus, the resolution of
the density estimate is optimised according to data availability.
Value
If x
has class UPb
, PbPb
, ArAr
,
KCa
, ReOs
, SmNd
, RbSr
,
UThHe
, fissiontracks
or ThU
, returns an
object of class KDE
, i.e. a list containing the
following items:
- x
horizontal plot coordinates
- y
vertical plot coordinates
- bw
the base bandwidth of the density estimate
- ages
the data values from the input to the
kde
function- log
copied from the input
- modes
a two-column matrix with the
x
andy
values of thenmodes
most prominent modes. Only returned ifnmodes
is a positive integer or'all'
.
or, if x
has class =detritals
, an object of class
KDEs
, i.e. a list containing the following items:
- kdes
a named list with objects of class
KDE
- from
the beginning of the common time scale
- to
the end of the common time scale
- themax
the maximum probability density of all the KDEs
- xlabel
the x-axis label to be used by
plot.KDEs(...)
References
Abramson, I.S., 1982. On bandwidth variation in kernel estimates-a square root law. The annals of Statistics, pp.1217-1223.
Botev, Z. I., J. F. Grotowski, and D. P. Kroese. "Kernel density estimation via diffusion." The Annals of Statistics 38.5 (2010): 2916-2957.
Vermeesch, P., 2012. On the visualisation of detrital age distributions. Chemical Geology, 312, pp.190-194.
See Also
Examples
kde(examples$UPb)
dev.new()
kde(examples$FT1,log=TRUE)
dev.new()
kde(examples$DZ,from=1,to=3000,kernel="epanechnikov")