Implements the maximum likelihood algorithm for Total-Pb/U isochron regression of Ludwig (1998) and extends the underlying methodology to accommodate U-Th-Pb data and initial U-series disequilibrium.
ludwig(
x,
model = 1,
anchor = 0,
exterr = FALSE,
type = "joint",
plot = FALSE,
...
)ludwig(
x,
model = 1,
anchor = 0,
exterr = FALSE,
type = "joint",
plot = FALSE,
...
)
a vector with the lower concordia intercept, the common
Pb ratios, the dispersion parameter (if model=3
), and the
initial \({}^{234}\)U/\({}^{238}\)U and
\({}^{230}\)Th/\({}^{238}\)U activity ratio (in the presence of
initial disequilibrium).
the covariance matrix of par
the degrees of freedom of the model fit (\(n-2\) if
x$format<4
or \(2n-3\) if x$format>3
, where \(n\)
is the number of aliquots).
the mean square of weighted deviates (a.k.a. reduced Chi-square statistic) for the fit.
p-value of a Chi-square test for the linear fit
an object of class UPb
one of three regression models:
1
: fit a discordia_line through the data using the maximum
likelihood algorithm of Ludwig (1998), which assumes that the
scatter of the data is solely due to the analytical
uncertainties. In this case, IsoplotR
will either calculate
an upper and lower intercept age (for Wetherill concordia), or a
lower intercept age and common
(\(^{207}\)Pb/\(^{206}\)Pb)\(_\circ\)-ratio intercept (for
Tera-Wasserburg). If the p-value for the chi-square test is less
than alpha()
, then the analytical uncertainties are augmented
by a factor \(\sqrt{MSWD}\).
2
: fit a discordia_line ignoring the analytical uncertainties
3
: fit a discordia_line using a modified maximum likelihood
algorithm that includes accounts for any overdispersion by adding a
geological (co)variance term.
control parameters to fix the intercept age or common Pb composition of the isochron fit. This can be a scalar or a vector.
If anchor[1]=0
: do not anchor the isochron.
If anchor[1]=1
: fix the common Pb composition at the values
stored in settings('iratio',...)
.
If anchor[1]=2
: force the isochron line to intersect the
concordia line at an age equal to anchor[2]
.
If anchor[1]=3
: anchor the isochron line to the
Stacey-Kramers mantle evolution model.
propagate external sources of uncertainty (i.e. decay constants)?
only relevant if x$format>3
. Can take on the following
values:
'joint'
or 0
: 3-dimensional isochron regression.
1
: 2-dimensional regression of
\({}^{204}\)Pb/\({}^{206}\)Pb vs.
\({}^{238}\)U/\({}^{206}\)Pb (for U-Pb formats 4, 5 and 6), or
of \({}^{208}\)Pb/\({}^{206}\)Pb vs.
\({}^{238}\)U/\({}^{206}\)Pb (for U-Pb formats 7 and 8).
2
: 2-dimensional regression of
\({}^{204}\)Pb/\({}^{207}\)Pb vs.
\({}^{235}\)U/\({}^{207}\)Pb (for U-Pb formats 4, 5 and 6), or
of \({}^{208}\)Pb/\({}^{207}\)Pb vs.
\({}^{235}\)U/\({}^{207}\)Pb (for U-Pb formats 7 and 8).
3
: 2-dimensional regression of
\({}^{206}\)Pb/\({}^{208}\)Pb vs.
\({}^{232}\)Th/\({}^{208}\)Pb (only for U-Pb formats 7 and 8).
4
: 2-dimensional regression of
\({}^{207}\)Pb/\({}^{208}\)Pb vs.
\({}^{232}\)Th/\({}^{208}\)Pb (only for U-Pb formats 7 and 8).
logical. Only relevant for datasets with measured
disequilibrium. If TRUE
, plots the posterior
distribution of the age and initial activity ratios.
optional arguments
The 3-dimensional regression algorithm of Ludwig and Titterington
(1994) was modified by Ludwig (1998) to fit so-called `Total Pb-U
isochrons'. These are constrained to a radiogenic endmember
composition that falls on the concordia
line. In its
most sophisticated form, this algorithm does not only allow for
correlated errors between variables, but also between
aliquots. IsoplotR
currently uses this algorithm to
propagate decay constant uncertainties in the total Pb-U isochron
ages.
Ludwig, K.R., 1998. On the treatment of concordant uranium-lead ages. Geochimica et Cosmochimica Acta, 62(4), pp.665-676.
Ludwig, K.R. and Titterington, D.M., 1994. Calculation of \(^{230}\)Th/U isochrons, ages, and errors. Geochimica et Cosmochimica Acta, 58(22), pp.5031-5042.
concordia
, titterington
,
isochron
f <- system.file("UPb4.csv",package="IsoplotR")
d <- read.data(f,method="U-Pb",format=4)
fit <- ludwig(d)
Run the code above in your browser using DataLab