Creates one or more kernel density estimates using a combination of the Botev (2010) bandwidth selector and the Abramson (1982) adaptive kernel bandwidth modifier.
kde(x, ...)# S3 method for default
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 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 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 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 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 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 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 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 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 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 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 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 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 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 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,
...
)
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:
horizontal plot coordinates
vertical plot coordinates
the base bandwidth of the density estimate
the data values from the input to
the kde
function
copied from the input
a two-column matrix with the x
and y
values of the nmodes
most prominent modes. Only returned
if nmodes
is a positive integer or 'all'
.
an object of class histogram
.
Only returned if show.hist
is TRUE
or, if x
has class =detritals
, an object of class
KDEs
, i.e. a list containing the following items:
a named list with objects of class KDE
the beginning of the common time scale
the end of the common time scale
the maximum probability density of all the KDEs
the x-axis label to be used by plot.KDEs(...)
a vector of numbers OR an object of class UPb
,
PbPb
, ThPb
, ArAr
, KCa
, ReOs
,
SmNd
, RbSr
, UThHe
, fissiontracks
,
ThU
or detrital
optional arguments to be passed on to R
's
density
function.
minimum age of the time axis. If NULL
, this is
set automatically
maximum age of the time axis. If NULL
, this is set
automatically
the bandwidth of the KDE. If NULL
, bw
will
be calculated automatically using the algorithm by Botev et
al. (2010).
logical flag controlling if the adaptive KDE modifier of Abramson (1982) is used
transform the ages to a log scale if TRUE
horizontal resolution (i.e., the number of segments) of the density estimate.
show the KDE as a plot
add a rug plot?
the x-axis label
the y-axis label
the fill colour of the KDE specified as a four
element vector of r, g, b, alpha
values
the fill colour of the histogram specified as a
four element vector of r, g, b, alpha
values
logical flag indicating whether a histogram should be added to the KDE
change to "o"
, "l"
, "7"
,
"c"
, "u"
, or "]"
if you want to draw a box
around the plot
scalar width of the histogram bins, in Myr if
log = FALSE
, or as a fractional value if log =
TRUE
. Sturges' Rule (\(\log_2[n]+1\), where \(n\) is the
number of data points) is used if binwidth = NA
vector with indices of aliquots that should be removed from the plot.
label the nmodes
most prominent modes of the
distribution. Change to 'all'
to label all the modes.
the number of significant digits to which the modes
should be labelled. Only used if nmodes
is a positive
integer or 'all'
.
scalar indicating whether to plot the
\(^{207}\)Pb/\(^{235}\)U age (type
=1), the
\(^{206}\)Pb/\(^{238}\)U age (type
=2), the
\(^{207}\)Pb/\(^{206}\)Pb age (type
=3), the
\(^{207}\)Pb/\(^{206}\)Pb-\(^{206}\)Pb/\(^{238}\)U age
(type
=4), the concordia_age (type
=5), or the
\(^{208}\)Pb/\(^{232}\)Th age (type
=6).
the age (in Ma) below which the
\(^{206}\)Pb/\(^{238}\)U and above which the
\(^{207}\)Pb/\(^{206}\)Pb age is used. This parameter is
only used if type=4
.
discordance cutoff filter. This is an object of
class discfilter
.
common lead correction:
0
: none
1
: use the Pb-composition stored in
settings('iratio','Pb207Pb206')
(if x
has class
UPb
and x$format<4
);
settings('iratio','Pb206Pb204')
and
settings('iratio','Pb207Pb204')
(if x
has class
PbPb
or x
has class UPb
and
3<x$format<7
); or
settings('iratio','Pb206Pb208')
and
settings('iratio','Pb207Pb208')
(if x
has class
UPb
and x$format=7,8
).
2
: use the isochron intercept as the initial Pb-composition
3
: use the Stacey-Kramers two-stage model to infer the
initial Pb-composition (only valid if x
has class
UPb
).
scalar value indicating the number of columns over which the KDEs should be divided.
logical flag indicating whether the same
bandwidth should be used for all samples. If
samebandwidth = TRUE
and bw = NULL
, then the
function will use the median bandwidth of all the samples.
logical flag indicating whether or not the KDEs should all integrate to the same value.
`isochron to intercept': calculates the initial (aka
`inherited', `excess', or `common')
\(^{40}\)Ar/\(^{36}\)Ar, \(^{40}\)Ca/\(^{44}\)Ca,
\(^{207}\)Pb/\(^{204}\)Pb, \(^{87}\)Sr/\(^{86}\)Sr,
\(^{143}\)Nd/\(^{144}\)Nd, \(^{187}\)Os/\(^{188}\)Os,
\(^{230}\)Th/\(^{232}\)Th, \(^{176}\)Hf/\(^{177}\)Hf or
\(^{204}\)Pb/\(^{208}\)Pb ratio from an isochron
fit. Setting i2i
to FALSE
uses the default values
stored in settings('iratio',...)
.
initial \(^{230}\)Th correction.
0
: no correction
1
: project the data along an isochron fit
2
: if x$format
is 1
or 2
, correct the
data using the measured present day \(^{230}\)Th/\(^{238}\)U,
\(^{232}\)Th/\(^{238}\)U and \(^{234}\)U/\(^{238}\)U
activity ratios in the detritus. If x$format
is 3
or
4
, correct the data using the measured
\(^{238}\)U/\(^{232}\)Th activity ratio of the whole rock, as
stored in x
by the read.data()
function.
3
: correct the data using an assumed initial
\(^{230}\)Th/\(^{232}\)Th-ratio for the detritus (only relevant
if x$format
is 1
or 2
).
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.
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.
radialplot
, cad
kde(examples$UPb)
dev.new()
kde(examples$FT1,log=TRUE)
dev.new()
kde(examples$DZ,from=1,to=3000,kernel="epanechnikov")
Run the code above in your browser using DataLab