Title: | Numeric Routines for Optically Stimulated Luminescence Dating |
---|---|
Description: | Optimizing regular numeric problems in optically stimulated luminescence dating, such as: equivalent dose calculation, dose rate determination, growth curve fitting, decay curve decomposition, statistical age model optimization, and statistical plot visualization. |
Authors: | Jun Peng [aut, cre], Bo Li [aut], Chunxin Wang [aut], Jorge More [ctb], Burton Garbow [ctb], Kenneth Hillstrom [ctb], John Burkardt [ctb], Paul Gilbert [ctb], Ravi Varadhan [ctb] |
Maintainer: | Jun Peng <[email protected]> |
License: | GPL-3 |
Version: | 2.8 |
Built: | 2024-11-08 06:35:31 UTC |
Source: | CRAN |
Package for routine numeric optimization and data visualization in optically stimulated luminescence dating.
Package: | numOSL |
Type: | Package |
Version: | 2.8 |
Date: | 2023-12-06 |
License: | GPL-3 |
Jun Peng | Hunan University of Science and Technology (HNUST), Xiangtan, China |
Bo Li | University of Wollongong (UOW), Wollongong, Australia |
Chunxin Wang | University of Science and Technology of China, Hefei, China |
Package maintainer
Jun Peng
[email protected]
Related package projects
R program KMS
https://github.com/pengjunUCAS/KMS
R package tgcd
https://CRAN.R-project.org/package=tgcd
Peng J, Dong ZB, Han FQ, Long H, Liu XJ, 2013. R package numOSL: numeric routines for optically stimulated luminescence dating. Ancient TL, 31(2): 41-48.
Peng J, Li Bo, 2017. Single-aliquot Regenerative-Dose (SAR) and Standardised Growth Curve (SGC) Equivalent Dose Determination in a Batch Model Using the R Package 'numOSL'. Ancient TL, 35(2): 32-53.
Analysing signal data records extracted from a BIN file.
analyseBINdata(obj_pickBIN, nfchn, nlchn, bg = "late", me = 2.0, distp = "p", kph = NULL, kdc = NULL, dcr = NULL, FR.fchn = NULL, FR.mchn = NULL, FR.lchn = NULL, signal.type = "LxTx", outfile = NULL) analyseBINdata0(obj_pickBIN, fchn, lchn, bg="late", me=2.0, distp="p", kph=NULL, kdc=NULL, dcr=NULL, FR.fchn=NULL, FR.mchn=NULL, FR.lchn=NULL, signal.type="LxTx", outfile=NULL)
analyseBINdata(obj_pickBIN, nfchn, nlchn, bg = "late", me = 2.0, distp = "p", kph = NULL, kdc = NULL, dcr = NULL, FR.fchn = NULL, FR.mchn = NULL, FR.lchn = NULL, signal.type = "LxTx", outfile = NULL) analyseBINdata0(obj_pickBIN, fchn, lchn, bg="late", me=2.0, distp="p", kph=NULL, kdc=NULL, dcr=NULL, FR.fchn=NULL, FR.mchn=NULL, FR.lchn=NULL, signal.type="LxTx", outfile=NULL)
obj_pickBIN |
list(required): an object of S3 class |
nfchn |
integer(required): number of the first few channels from the initial |
nlchn |
integer(required): number of the last few channels from the latter part |
fchn |
integer(required): channels used for calculating the fast-component signals |
lchn |
integer(required): channels used for calculating the background counts |
bg |
character(with default): background subtraction method, i.e., |
me |
numeric(with default): measurement error of Lx (or Tx) in percent |
distp |
character(with default): distribution of photon counts, |
kph |
numeric(optional): correction factor for photon counts |
kdc |
numeric(optional): correction factor for dark counts |
dcr |
numeric(optional): dark count rate |
FR.fchn |
vector(optional): fast-component signal channels, note that those channels are extracted
internally from the "ON" channels, |
FR.mchn |
vector(optional): medium-component signal channels, note that those channels are extracted
internally from the "ON" channels, |
FR.lchn |
vector(optional): background signal channels, note that those channels are extracted
internally from the "ON" channels, |
signal.type |
character(with default): type of signal, |
outfile |
character(optional): if specified, analysis results (i.e., |
Function analyseBINdata is used for signal (i.e., Lx, Tx, and Lx/Tx) calculation.
It provides two protocols for background subtraction (i.e., the early and late background subtraction methods).
Standard error of signals are assessed using two methods: if photon counts are assummed to follow Poisson distributions,
Eqn.(3) of Galbraith (2002) will be applied; if photon counts are over-dispersed, Eqn.(10) of Bluszcz et al. (2015) will be applied.
If arguments FR.fchn
, FR.mchn
, and FR.lchn
are provided, fast ratio will be calculated according to Madsen et al. (2009).
Return an invisible list of S3 class object "analyseBIN" containing the following elements:
SARdata |
a data.frame containing calculated SAR data sets |
criteria |
values used as rejection criteria (0-1 values indicating if Tn is more than 3 sigma above BG or not,
ratio of initial Tn signal to BG and associated standard error, relative standard error of Tn in percent, fast ratio of Tn and associated standard error),
|
Tn |
values of Tn and associated standard errors |
LnTn.curve |
decay curves for Ln and Tn for different aliquots (grains) |
TxTn |
ratios of Tx to Tn for various SAR cycles |
agID |
aliquot or grain ID (i.e., |
SARdata
is a data.frame containing the following elements if signal.type="LxTx"
:
Element | Description |
NO |
aliquot (grain) number |
SAR.Cycle |
SAR cycle (N, R1, R2, R3, ...) |
Dose |
regenerative dose |
LxTx |
sensitivity-corrected regenerative-dose signal |
seLxTx |
standard error of LxTx |
SARdata
contains the following elements if signal.type="Lx"
:
Element | Description |
NO |
aliquot (grain) number |
SAR.Cycle |
SAR cycle (N, R1, R2, R3, ...) |
Dose |
regenerative dose |
Lx |
regenerative-dose signal |
seLx |
standard error of Lx |
SARdata
contains the following elements if signal.type="Tx"
:
Element | Description |
NO |
aliquot (grain) number |
SAR.Cycle |
SAR cycle (N, R1, R2, R3, ...) |
Dose |
regenerative dose |
Tx |
test-dose signal |
seTx |
standard error of Tx |
Though function analyseBINdata is originally designed to analyze CW-OSL data sets, IRSL data sets obtained from the SAR protocol can also be analyzed.
Ballarini M, Wallinga J, Wintle AG, Bos AJJ, 2007. A modified SAR protocol for optical dating of individual grains from young quartz samples. Radiation Measurements, 42(3): 360-369.
Bluszcz A, Adamiec G, Heer AJ, 2015. Estimation of equivalent dose and its uncertainty in the OSL SAR protocol when count numbers do not follow a Poisson distribution. Radiation Measurements, 81: 46-54.
Cunningham AC, Wallinga J, 2010. Selection of integration time intervals for quartz OSL decay curves. Quaternary Geochronology, 5(6): 657-666
Duller GAT, 2016. Analyst (v4.31.9), User Mannual.
Durcan JA, Duller GAT, 2011. The fast ratio: A rapid measure for testing the dominance of the fast component in the initial OSL signal from quartz. Radiation Measurements, 46(10): 1065-1072.
Galbraith R, 2002. A note on the variance of a backround-corrected OSL count. Ancient TL, 20(2): 49-51.
Madsen AT, Duller GAT, Donnelly JP, Roberts HM, Wintle AG, 2009. A chronology of hurricane landfalls at Little Sippewissett Marsh, Massachusetts, USA, using optical dating. Geomorphology, 109(1-2): 36-45.
loadBINdata; pickBINdata; pickSARdata; calED;
calSARED; calSGCED; fitGrowth; lsNORM; BIN
### Example 1 (not run): # obj_loadBIN <- loadBINdata("foo.bin", view=TRUE) # obj_pickBIN <- pickBINdata(obj_loadBIN, Position=2, LType="OSL") # analyseBINdata(obj_pickBIN, nfchn=3, nlchn=20) ### Example 2: data(BIN) obj_pickBIN <- pickBINdata(BIN, Position=c(2,4,6,8,10), LType="OSL", view=FALSE) obj_analyseBIN <- analyseBINdata(obj_pickBIN, nfchn=4, nlchn=20) #obj_analyseBIN <- analyseBINdata0(obj_pickBIN, fchn=1:4, nlchn=231:250) obj_analyseBIN$SARdata
### Example 1 (not run): # obj_loadBIN <- loadBINdata("foo.bin", view=TRUE) # obj_pickBIN <- pickBINdata(obj_loadBIN, Position=2, LType="OSL") # analyseBINdata(obj_pickBIN, nfchn=3, nlchn=20) ### Example 2: data(BIN) obj_pickBIN <- pickBINdata(BIN, Position=c(2,4,6,8,10), LType="OSL", view=FALSE) obj_analyseBIN <- analyseBINdata(obj_pickBIN, nfchn=4, nlchn=20) #obj_analyseBIN <- analyseBINdata0(obj_pickBIN, fchn=1:4, nlchn=231:250) obj_analyseBIN$SARdata
Transfom SAR data sets into S3 class object "analyseBIN".
as_analyseBIN(SARdata)
as_analyseBIN(SARdata)
SARdata |
matrix(required): SAR data set, it should contain five columns |
Return an invisible list of S3 class object "analyseBIN" containing the following elements:
SARdata |
a data.frame containing SAR data sets |
criteria |
values used as rejection criteria, here it is set equal to |
Tn |
values of Tn and associated standard errors, here it is set equal to |
LnTn.curve |
decay curves of Ln and Tn for different aliquots (grains), here it is set equal to |
TxTn |
ratios of Tx to Tn for various SAR cycles, here it is set equal to |
agID |
aliquot or grain ID (i.e., |
SARdata
is a data.frame containing the following elements:
Element | Description |
NO |
aliquot (grain) number |
SAR.Cycle |
SAR cycle (N, R1, R2, R3, ...) |
Dose |
regenerative dose |
Signal |
OSL signal |
Signal.Err |
standard error of OSL signal |
Function as_analyseBIN transforms SAR data sets (see SARdata) into S3 class object "analyseBIN".
The returned elements such as criteria
, Tn
, LnTn.curve
, and TxTn
are set equal to NULL
.
analyseBINdata; SARdata; calSARED; pickSARdata
### Example 1: data(SARdata) obj_analyseBIN <- as_analyseBIN(SARdata[1:8,,drop=FALSE]) res_calSARED <- calSARED(obj_analyseBIN) res_calSARED$sarED ### Example 2 (not run): # obj_analyseBIN <- as_analyseBIN(SARdata) # res_calSARED <- calSARED(obj_analyseBIN, rcy1.range=c(1,1), outpdf="SARED") ### Example 3 (not run): # obj_analyseBIN <- as_analyseBIN(SARdata) # res_pickSARdata <- pickSARdata(obj_analyseBIN, fom.up=6, outpdf="SARdata") # res_pickSARdata$SARdata
### Example 1: data(SARdata) obj_analyseBIN <- as_analyseBIN(SARdata[1:8,,drop=FALSE]) res_calSARED <- calSARED(obj_analyseBIN) res_calSARED$sarED ### Example 2 (not run): # obj_analyseBIN <- as_analyseBIN(SARdata) # res_calSARED <- calSARED(obj_analyseBIN, rcy1.range=c(1,1), outpdf="SARED") ### Example 3 (not run): # obj_analyseBIN <- as_analyseBIN(SARdata) # res_pickSARdata <- pickSARdata(obj_analyseBIN, fom.up=6, outpdf="SARdata") # res_pickSARdata$SARdata
BIN data for aeolian sample GL2-1 from the south margin of the Tengger Desert (Peng et al., 2013).
data(BIN)
data(BIN)
A S3 class object "loadBIN" produced by function loadBINdata that contains the following two elements:
a list consists of loaded data records for each aliquot (grain)
a data.frame used for summarizing loaded data records
Peng J, Han FQ, 2013. Selections of fast-component OSL signal using sediments from the south edge of Tengger Desert. Acta Geoscientica Sinica, 34(6): 757-762.
loadBINdata; pickBINdata; analyseBINdata
# Not run. # data(BIN) # class(BIN)
# Not run. # data(BIN) # class(BIN)
Calculating the total dose rate and burial age and assessing associated standard errors using a Monte Carlo method.
calDA(dose, minGrainSize, maxGrainSize, Ucontent, Thcontent, Kcontent, Rbcontent, Wct, depth, longitude, latitude, altitude, alphaValue = 0, inKcontent = 0, inRbcontent = 0, calRbfromK = FALSE, bulkDensity = 2.5, cfType = "Liritzis2013", rdcf = 0, rba = 0, ShallowGamma = TRUE, nsim = 5000, reject = TRUE, plot = TRUE, sampleName = "") calDAbatch(inputfile = "inputDRtable", cfType = "Liritzis2013", rdcf = 0, rba = 0, calRbfromK = FALSE, ShallowGamma = TRUE, nsim = 5000, reject = TRUE, outfile = paste(inputfile,"_Results",sep=""), outpdf = paste(inputfile,"_Results",sep=""), digits = 4)
calDA(dose, minGrainSize, maxGrainSize, Ucontent, Thcontent, Kcontent, Rbcontent, Wct, depth, longitude, latitude, altitude, alphaValue = 0, inKcontent = 0, inRbcontent = 0, calRbfromK = FALSE, bulkDensity = 2.5, cfType = "Liritzis2013", rdcf = 0, rba = 0, ShallowGamma = TRUE, nsim = 5000, reject = TRUE, plot = TRUE, sampleName = "") calDAbatch(inputfile = "inputDRtable", cfType = "Liritzis2013", rdcf = 0, rba = 0, calRbfromK = FALSE, ShallowGamma = TRUE, nsim = 5000, reject = TRUE, outfile = paste(inputfile,"_Results",sep=""), outpdf = paste(inputfile,"_Results",sep=""), digits = 4)
dose |
vector(required): a two-element vector containing the equivalent dose and associated measurement error (unit, Gy) |
minGrainSize |
numeric(required): lower limit on grain size (unit, um) |
maxGrainSize |
numeric(required): upper limit on grain size (unit, um) |
Ucontent |
vector(required): a two-element vector containing the uranium content and its measurement error (unit, ppm) |
Thcontent |
vector(required): a two-element vector containing the thorium content and its measurement error (unit, ppm) |
Kcontent |
vector(required): a two-element vector containing the potassium content and its measurement error (unit, percent) |
Rbcontent |
numeric(required): the rubidium content (unit, ppm). The measurement error is optional |
Wct |
vector(required): a two-element vector containing the water content and its measurement error (unit, percent) |
depth |
numeric(required): sampling depth (unit, m). The associated error is optional |
longitude |
numeric(required): longitude of the sampling site (unit, decimal degree). The associated error is optional |
latitude |
numeric(required): latitude of the sampling site (unit, decimal degree). The associated error is optional |
altitude |
numeric(required): altitude of the sampling site (unit, m above sea level). The associated error is optional |
alphaValue |
numeric(with default): average alpha efficiency. The associated error is optional, for example, |
inKcontent |
numeric(with default): internal potassium content (unit, percent). The associated error is optional, for example, |
inRbcontent |
numeric(with default): internal rubidium content (unit, ppm). The associated error is optional, for example, |
calRbfromK |
logical(with default): whether calculate the rubidium and internal rubidium contents using the provided potassium and internal potassium contents respectively.
If |
bulkDensity |
numeric(with default): average density of bulk sample (unit, g/cm^3). |
cfType |
character(with default): type of the conversion factor, one from |
rdcf |
numeric(with default): constant relative standard error (RSD) for dose-rate conversion factors (unit, percent). If |
rba |
numeric(with default): constant RSD for alpha and beta dose absorption fractions (unit, percent). If |
ShallowGamma |
logical(with default): consider the scaling of gamma dose rate for samples collected at shallow burial depths or not |
nsim |
integer(with default): number of Monte Carlo simulations |
reject |
logical(with default): whether randomly generated negative values of variables (including equivalent dose, uranium, thorium, potassium, and water contents, alpha efficiency, and bulk-sample density, etc) and meaningless values (longitude beyonds |
plot |
logical(with default): draw a plot showing the simulated distributions of dose rates and ages or not |
sampleName |
character(with default): name of the sample |
inputfile |
character(with default): name of the input file containing measured dataset of individual samples used for dose rate and age calculations |
outfile |
character(with default): name of the files containing the results of calculated dose rates and ages for a number of samples. The files will be written using CSV/HTML format and saved to the current work directory |
outpdf |
character(with default): name of a PDF file showing the distributions of dose rates and ages simulated using a Monte Carlo method for a number of samples. The file will be saved to the current work directory |
digits |
integer(with default): the number of decimal places or significant digits to be used for values of the output CSV/HTML files |
Function calDA is used for calculating the annual dose rate and burial age using the concentrations of radioactive nuclides (uranium, thorium, potassium) obtained from Neutron Activation Analysis (NAA) or inductively coupled plasma mass spectrometry (ICP-MS), grain size, water content, average sample density, geographical parameters (depth, longitude, latitude, altitude), and the equivalent dose. The elemental concentrations of uranium, thorium, and potassium are converted into alpha, bata, and gamma dose rates according to dose-rate conversion factors (Adamiec and Aitken, 1998; Guerin et al., 2011; Liritzis et al., 2013). Alpha and beta dose absorded fractions are determined using published data (Mejdahl, 1979; Brennan et al., 1991). The contribution of the internal beta dose rate can be assessed if the internal potassium content is provided. The gamma dose rate for samples collected at shallow depths are corrected using the scaling factors of Aitken (1985). The cosmic ray dose rate is estimated as a function of depth, altitude and geomagnetic latitude (Prescott and Hutton, 1994) and the contribution to cosmic dose rate from a soft component is considered at shallow depths (Barbouti and Rastin, 1983).
The hydrofluoric acid-etched quartz and K-feldspar samples have an alpha efficiency of zero, while the reported alpha values of un-etched coarse-grained quartz and K-feldspar are (Olley et al., 1998) and
(Balescu and Lamothe, 1994), respectively. Three reported alpha values for fine-grained quartz are
(Rees-Jones, 1995),
(Rees-Jones and Tite, 1997), and
(Lai et al., 2008). Two reported alpha values for fine-grained polymineral are
(Rees-Jones, 1995) and
(Kreutzer et al., 2014). Huntley and Hancock (2001) assumed an internal rubidium content of
ppm. Three reported internal potassium contents are
(Huntley and Baril, 1997),
(Zhao and Li, 2005), and
(Smedley et al., 2012).
The standard error of the age and dose rate is estimated by a "parametric bootstrap" method (Peng et al., 2016). Constant relative standard errors for dose-rate conversion factors, alpha and beta dose absorption factors can be assummed during the simulation. Arguments such as dose
, Ucontent
, Thcontent
, Kcontent
, Wct
should be two-element vectors representing paired values of , where
and
denote the measured value and associated standard error, respectively. Arguments such as
depth
, longitude
, latitude
, altitude
, alphaValue
, Rbcontent
, inKcontent
, inRbcontent
, and bulkDensity
, can be either a scalar or a two-element vector. This means that uncertainties from these quantities can be either ignored or taken into account during the simulation.
Function calDAbatch is a wrapper of the function calDA and is used to calculate the dose rates and burial ages for a number of samples in a batch mode. The function requires as input a CSV file containing dose-rate datasets of different samples that are saved row by row. A template of the input CSV file with the name "myDRdata"
can be generated using the command calDAbatch("myDRdata")
(see examples).
Function calDA returns a matrix that contains calculated alpha, beta, gamma, cosmic, and total dose rate and age and associated standard errors, lower and upper bounds of 95 percent confidence intervals for the sample under considered.
Function calDAbatch returns an invisible list that contains calculated dose-rate results for each of the provided samples.
Orignal R code written by Jun Peng, improved version of code written by Chunxin Wang
Adamiec G, Aitken M, 1998. Dose-rate conversion factors: update. Ancient TL, 16(2): 37-49.
Aitken MJ, 1985. Thermoluminescence Dating. Academic Press, London.
Balescu S, Lamothe M, 1994. Comparison of TL and IRSL age estimates of feldspar coarse grains from waterlain sediments. Quaternary Science Reviews, 13: 437-444.
Barbouti AI, Rastin BC, 1983. A study of the absolute intensity of muons at sea level and under various thicknesses of absorber. Journal of Physics G Nuclear Physics, 9: 1577e1595.
Brennan BJ, Lyons RG, Phillips SW, 1991. Attenuation of alpha particle track dose for spherical grains. International Journal of Radiation Application and Instrumentation. Part D. Nuclear Tracks and Radiation Measurements, 18: 249-253.
Guerin G, Mercier N, Adamiec G, 2011. Dose-rate conversion factors: update. Ancient TL, 29: 5-8.
Huntley DJ, Baril M, 1997. The K content of the K-feldspars being measured in optical dating or in thermoluminescence dating. Ancient TL, 15: 11-13.
Huntley DJ, Hancock R, 2001. The Rb contents of the K-feldspar grains being measured in optical dating. Ancient TL, 19: 43-46.
Kreutzer S, Schmidt C, DeWitt R, Fuchs M, 2014. The a-value of polymineral fine grain samples measured with the post-IR IRSL protocol. Radiation Measurements, 69: 18-29.
Lai ZP, Zoller L, Fuchs M, Bruckner H, 2008. Alpha efficiency determination for OSL of quartz extracted from Chinese loess. Radiation Measurements, 43: 767-770.
Liritzis I, Stamoulis K, Papachristodoulou C, Ioannides K, 2013. A re-evaluation of radiation dose-rate conversion factors. Mediterranean Archaeology and Archaeometry, 13: 1-15.
Mejdahl V, 1979. Thermoluminescence dating: beta-dose attenuation in quartz grains. Archaeometry, 21: 61-72.
Olley J, Caitcheon G, Murray A, 1998. The distribution of apparent dose as determined by Optically Stimulated Luminescence in small aliquots of fluvial quartzImplications for dating young sediments. Quaternary Science Reviews, 17: 1033-1040.
Prescott, JR, Hutton JT, 1994. Cosmic ray contributions to dose rates for Luminescence and Esr dating: large depths and long-term time variations. Radiation Measurements, 23(2-3): 497-500.
Peng J, Dong ZB, Zhang ZC, 2016. Determining the error of dose rate estimates on luminescence dating using Monte Carlo approach. Nuclear Techniques, 38(7): 070201. (In Chinese).
Rees-Jones J, 1995. Optical dating of young sediments using fine-grained quartz. Ancient TL, 13: 9-14.
Rees-Jones J, Tite MS, 1997. Optical dating results for British archaeological sediments. Archaeometry, 39: 177-187.
Smedley RK, Duller GAT, Pearce NJG, Roberts HM, 2012. Determining the K-content of single-grains of feldspar for luminescence dating. Radiation Measurements, 47: 790-796.
Zhao H, Li SH, 2005. Internal dose rate to K-feldspar grains from radioactive elements other than potassium. Radiation Measurements, 40: 84-93.
Further reading
Durcan JA, King GE, Duller GAT, 2015. DRAC: Dose Rate and Age Calculator for trapped charge dating. Quaternary Geochronology, 28: 54-61.
Grun R, 2009. The "AGE" program for the calculation of luminescence age estimates. Ancient TL, 27: 45-46.
calDA(dose=c(25.04,0.68), minGrainSize=90, maxGrainSize=180, Ucontent=c(2.86,0.19), Thcontent=c(8.63,0.34), Kcontent=c(2.00,0.11), Rbcontent=0, Wct=c(0.05,0.05), depth=c(1.1,0.05), longitude=c(103.16,0.1), latitude=c(37.64,0.1), altitude=c(1170,58.5), bulkDensity=c(2.5,0.1), rdcf=0.03, rba=0.03) # Not run. # Generate a template of input CSV file "myDRdata" using the following command. # calDAbatch(inputfile="myDRdata") # Put your dose rate dataset into the above generated template file "myDRdata.csv", then run # the following command to calculate dose rates and ages for your samples in a batch mode. # d <- calDAbatch(inputfile="myDRdata", nsim=3000) # idx <- sapply(d, is.matrix) # h <- t(sapply(d[idx],function(x) c(t(x[6:7,1:2])))) # colnames(h) <- c("DR","Se.DR","Age","Se.Age") # print(h)
calDA(dose=c(25.04,0.68), minGrainSize=90, maxGrainSize=180, Ucontent=c(2.86,0.19), Thcontent=c(8.63,0.34), Kcontent=c(2.00,0.11), Rbcontent=0, Wct=c(0.05,0.05), depth=c(1.1,0.05), longitude=c(103.16,0.1), latitude=c(37.64,0.1), altitude=c(1170,58.5), bulkDensity=c(2.5,0.1), rdcf=0.03, rba=0.03) # Not run. # Generate a template of input CSV file "myDRdata" using the following command. # calDAbatch(inputfile="myDRdata") # Put your dose rate dataset into the above generated template file "myDRdata.csv", then run # the following command to calculate dose rates and ages for your samples in a batch mode. # d <- calDAbatch(inputfile="myDRdata", nsim=3000) # idx <- sapply(d, is.matrix) # h <- t(sapply(d[idx],function(x) c(t(x[6:7,1:2])))) # colnames(h) <- c("DR","Se.DR","Age","Se.Age") # print(h)
Calculating an equivalent dose and assessing its standard error.
calED(Curvedata, Ltx, model = "gok", origin = FALSE, errMethod = "sp", nsim = 500, weight = TRUE, trial = FALSE, plot = TRUE, nofit.rgd = NULL, agID = NULL, Tn = NULL, Tn3BG = NULL, TnBG.ratio = NULL, rseTn = NULL, FR = NULL, LnTn.curve = NULL, TxTn = NULL)
calED(Curvedata, Ltx, model = "gok", origin = FALSE, errMethod = "sp", nsim = 500, weight = TRUE, trial = FALSE, plot = TRUE, nofit.rgd = NULL, agID = NULL, Tn = NULL, Tn3BG = NULL, TnBG.ratio = NULL, rseTn = NULL, FR = NULL, LnTn.curve = NULL, TxTn = NULL)
Curvedata |
matrix(required): a three-column matrix (i.e., regenerative doses, |
Ltx |
vector(required): a two-element vector consists of sensitivity-corrected |
model |
character(with default): model used for growth curve fitting, see fitGrowth for available models |
origin |
logical(with default): logical value indicating if the growth curve should be forced to pass the origin |
errMethod |
character(with default): method used for equivalent dose error assessment. |
nsim |
integer(with default): desired number of randomly simulated equivalent dose obtained by Monte Carlo simulation |
weight |
logical(with default): logical value indicating if the growth curve should be fitted using a weighted procedure, see function fitGrowth for details |
trial |
logical(with default): logical value indicating if the growth curve should be fitted using other models if the given model fails, see function fitGrowth for details |
plot |
logical(with default): logical value indicating if the results should be plotted |
nofit.rgd |
integer(optional): regenerative doses that will not be used during the fitting.
For example, if |
agID |
vector(optional): a three-elemenet vector indicating aliquot (grain) ID, i.e., |
Tn |
vector(optional): a two-element vector containing value and |
Tn3BG |
numeric(optional): 0-1 value indicating if Tn is more than 3 sigma above BG, |
TnBG.ratio |
vector(optional): a two-element vector containing value and |
rseTn |
numeric(optional): relative standard error of Tn in percent |
FR |
vector(optional): a two-element vector containing value and |
LnTn.curve |
list(optional): decay curve data for Ln and Tn, it should contain four elements, |
TxTn |
vector(optional): ratios of Tx to Tn for various SAR cycles |
Function calED is used for calculating an equivalent dose and assessing its standard error.
The standard errors of an equivalent dose can be assessd using the Simple Transformation or Monte Carlo method (Duller, 2007).
Interpolation is performed using a combination of golden section search and successive parabolic interpolation (R function optimize in package stats) (freely available Fortran 77 source code at https://www.netlib.org/fmm/fmin.f). See function fitGrowth for more details on growth curve fitting.
Return an invisible list that contains the following elements:
message |
return 0 if calculation succeeds, 1 if growth curve fitting fails, 2 if natural-dose signal saturates, 3 if equivalent dose calculation fails, 4 if equivalent dose error assessment fails |
fitIDX |
Indices of dose points used in growth curve fitting |
LMpars |
optimized parameters for the growth curve |
value |
minimized objective for the growth curve |
avg.error |
average fit error for the growth curve |
RCS |
reduced chi-square value for the growth curve |
FOM |
figure of merit value for the growth curve in percent |
calED.method |
method used for equivalent dose calculation, i.e., |
mcED |
randomly simulated equivalent doses |
ED |
calculated equivalent dose and its standard error |
ConfInt |
68 percent and 95 percent confidence intervals for the equivalent dose |
RecyclingRatio1 |
the first recycling ratio and its standard error |
RecyclingRatio2 |
the second recycling ratio and its standard error |
RecyclingRatio3 |
the third recycling ratio and its standard error |
Recuperation1 |
the first recuperation (i.e., ratio of the sensitivity-corrected zero-dose signal to natural-dose signal) and its standard error in percent |
Recuperation2 |
the second recuperation (i.e., ratio of the sensitivity-corrected zero-dose signal to maximum regenerative-dose signal) and its standard error in percent |
Arguments agID
, Tn
, Tn3BG
, TnBG.ratio
, rseTn
, FR
, LnTn.curve
,
and TxTn
have nothing to do with equivalent dose calculation. They are used only for plotting purpose.
Argument Tn3BG
indicates if Tn (after background subtraction) is more than 3 sigma above BG, while argument TnBG.ratio
denotes the ratio of Tn (no background subtraction) to BG.
Function calED will return message=3
(i.e.,"Failed in equivalent dose calculation"
) if the equivalent dose to be calculated below -50 (<Gy>|<s>).
68 percent (one sigma) and 95 percent (two sigma) confidence intervals of equivalent doses will be determined respectively using normal approximation and Monte Carlo simulation,
for errMethod="sp"
and errMethod="mc"
.
Function sgcED
in previous versions was bundled to function calSGCED.
Duller GAT, 2007. Assessing the error on equivalent dose estimates derived from single aliquot regenerative dose measurements. Ancient TL, 25(1): 15-24.
Duller GAT, 2016. Analyst (v4.31.9), User Mannual.
Galbraith RF, Roberts RG, 2012. Statistical aspects of equivalent dose and error calculation and display in OSL dating: an overview and some recommendations. Quaternary Geochronology, 11: 1-27.
analyseBINdata; fitGrowth; calRcyRcp; calSARED; fastED; calSGCED
### Example 1: Curvedata <- cbind(c(0, 18, 36, 54, 72, 0, 18), c(0.026, 1.55, 2.39, 3.46, 4.13, 0.023, 1.61), c(0.005, 0.11, 0.27, 0.22, 0.20, 0.008, 0.24)) Ltx <- c(3.1,0.31) calED(Curvedata, Ltx, model="exp", origin=FALSE) ### Example 2 (not run): # data(BIN) # obj_pickBIN <- pickBINdata(BIN, Position=48, # LType="OSL", view=FALSE) # obj_analyseBIN <- analyseBINdata(obj_pickBIN, nfchn=3, nlchn=20) # Curvedata <- obj_analyseBIN$SARdata[-1,3:5] # Ltx <- as.numeric(obj_analyseBIN$SARdata[1,4:5]) # calED(Curvedata, Ltx, model="gok", origin=FALSE)
### Example 1: Curvedata <- cbind(c(0, 18, 36, 54, 72, 0, 18), c(0.026, 1.55, 2.39, 3.46, 4.13, 0.023, 1.61), c(0.005, 0.11, 0.27, 0.22, 0.20, 0.008, 0.24)) Ltx <- c(3.1,0.31) calED(Curvedata, Ltx, model="exp", origin=FALSE) ### Example 2 (not run): # data(BIN) # obj_pickBIN <- pickBINdata(BIN, Position=48, # LType="OSL", view=FALSE) # obj_analyseBIN <- analyseBINdata(obj_pickBIN, nfchn=3, nlchn=20) # Curvedata <- obj_analyseBIN$SARdata[-1,3:5] # Ltx <- as.numeric(obj_analyseBIN$SARdata[1,4:5]) # calED(Curvedata, Ltx, model="gok", origin=FALSE)
Calculating recycling ratio, recuperation, and associated standard errors.
calRcyRcp(Curvedata, Ltx)
calRcyRcp(Curvedata, Ltx)
Curvedata |
matrix(required): a three-column matrix (i.e., regenerative doses, |
Ltx |
vector(required): a two-element vector consists of sensitivity-corrected |
Return a list that contains the following elements:
RecyclingRatio1 |
the first recycling ratio and its standard error |
RecyclingRatio2 |
the second recycling ratio and its standard error |
RecyclingRatio3 |
the third recycling ratio and its standard error |
Recuperation1 |
the first recuperation (i.e., ratio of the sensitivity-corrected zero-dose signal to natural-dose signal) and its standard error in percent |
Recuperation2 |
the second recuperation (i.e., ratio of the sensitivity-corrected zero-dose signal to maximum regenerative-dose signal) and its standard error in percent |
If the sensitivity-corrected signals for the frist, second, and third repeated regenerative doses are R1, R2, and R3, respectively,
then RecyclingRatio1=R2/R1
, RecyclingRatio2=R3/R1
, and RecyclingRatio3=R3/R2
.
Wintle AG, Murray AS, 2006. A review of quartz optically stimulated luminescence characteristics and their relevance in single-aliquot regeneration dating protocols. Radiation Measurements, 41(4): 369-391.
calED; fastED; calSARED; pickSARdata
Calculating and selecting a series of equivalent doses in a batch mode according to the single aliquot regenerative-dose (SAR) method (Murray and Wintle, 2000).
calSARED(obj_analyseBIN, model = "gok", origin = FALSE, errMethod = "sp", nsim = 500, weight = TRUE, trial = TRUE, nofit.rgd = NULL, Tn.above.3BG = TRUE, TnBG.ratio.low = NULL, rseTn.up = NULL, FR.low = NULL, rcy1.range = NULL, rcy2.range = NULL, rcy3.range = NULL, rcp1.up = NULL, rcp2.up = NULL, fom.up = NULL, rcs.up = NULL, calED.method = NULL, rseED.up = NULL, use.se = TRUE, outpdf = NULL, outfile = NULL)
calSARED(obj_analyseBIN, model = "gok", origin = FALSE, errMethod = "sp", nsim = 500, weight = TRUE, trial = TRUE, nofit.rgd = NULL, Tn.above.3BG = TRUE, TnBG.ratio.low = NULL, rseTn.up = NULL, FR.low = NULL, rcy1.range = NULL, rcy2.range = NULL, rcy3.range = NULL, rcp1.up = NULL, rcp2.up = NULL, fom.up = NULL, rcs.up = NULL, calED.method = NULL, rseED.up = NULL, use.se = TRUE, outpdf = NULL, outfile = NULL)
obj_analyseBIN |
list(required): an object of S3 class "analyseBIN" produced by |
model |
character(with default): model used for growth curve fitting, see fitGrowth for available models |
origin |
logical(with default): logical value indicating if the growth curve should be forced to pass the origin |
errMethod |
character(with default): method used for equivalent dose error assessment. See function calED for details |
nsim |
integer(with default): desired number of randomly simulated equivalent dose obtained by Monte Carlo simulation |
weight |
logical(with default): logical value indicating if the growth curve should be fitted using a weighted procedure, see function fitGrowth for details |
trial |
logical(with default): logical value indicating if the growth curve should be fitted using other models if the given model fails, see function fitGrowth for details |
nofit.rgd |
integer(optional): regenerative doses that will not be used during the fitting.
For example, if |
Tn.above.3BG |
logical(with default): logical value indicating if aliquot (grain) with Tn below 3 sigma BG should be rejected |
TnBG.ratio.low |
numeric(optional): lower limit on ratio of initial Tn signal to BG |
rseTn.up |
numeric(optional): upper limit on relative standard error of Tn in percent |
FR.low |
numeric(optional): lower limit on fast ratio of Tn |
rcy1.range |
vector(optional): a two-element vector indicating the lower and upper limits on recycling ratio 1,
Example: |
rcy2.range |
vector(optional): a two-element vector indicating the lower and upper limits on recycling ratio 2 |
rcy3.range |
vector(optional): a two-element vector indicating the lower and upper limits on recycling ratio 3 |
rcp1.up |
numeric(optional): upper limit on recuperation 1 (i.e., ratio of the |
rcp2.up |
numeric(optional): upper limit on recuperation 2 (i.e., ratio of the |
fom.up |
numeric(optional): upper limit on figure of merit (FOM) values of growth curves in percent |
rcs.up |
numeric(optional): upper limit on reduced chi-square (RCS) values of growth curves |
calED.method |
character(optional): method used for equivalent dose calculation, i.e., |
rseED.up |
numeric(optional): upper limit on the relative standard error of equivalent dose in percent |
use.se |
logical(with default): logical value indicating if standard errors of values should be used during application of rejection criteria |
outpdf |
character(optional): if specified, results of SAR equivalent dose calculation will be written to a PDF file named |
outfile |
character(optional): if specified, SAR equivalent doses related quantities will be written
to a CSV file named |
Return an invisible list that contains the following elements:
LMpars |
a list containing optimized parameters of growth curves of calculated (selected) SAR equivalent doses |
Tn |
values and standard errors of Tn of calculated (selected) SAR equivalent doses |
Ltx |
sensitivity-corrected natural-dose signals and associated standard errors used for SAR equivalent dose calculation |
sarED |
calculated (selected) SAR equivalent doses and associated standard errors |
ConfInt |
68 percent (one sigma) and 95 percent (two sigma) confidence intervals of SAR equivalent doses |
agID |
aliquot (grain) ID of calculated (selected) SAR equivalent doses |
summary.info |
a summary of the SAR equivalent dose calculation |
Rejection criteria used to select reliable SAR equivalent dose estimates can be catergorized into three groups:
(1) signal-related criteria, such as Tn.above.3BG
, TnBG.ratio.low
, rseTn.up
, and FR.low
;
(2) growth-curve-related criteria, such as rcy1.range
, rcy2.range
, rcy3.range
, rcp1.up
,rcp2.up
, fom.up
, and rcs.up
;
(3) equivalent-dose-related criteria, such as calED.method
and rseED.up
.
Duller GAT, 2016. Analyst (v4.31.9), User Mannual.
Murray AS, Wintle AG, 2000. Luminescence dating of quartz using improved single-aliquot regenerative-dose protocol. Radiation Measurements, 32(1): 57-73.
Wintle AG, Murray AS, 2006. A review of quartz optically stimulated luminescence characteristics and their relevance in single-aliquot regeneration dating protocols. Radiation Measurements, 41(4): 369-391.
analyseBINdata; fitGrowth; calED; calSGCED; pickSARdata
data(BIN) obj_pickBIN <- pickBINdata(BIN, Position=c(2,4,6,8,10), Grain=0, LType="OSL", view=FALSE) obj_analyseBIN <- analyseBINdata(obj_pickBIN, nfchn=3, nlchn=20) res_SARED <- calSARED(obj_analyseBIN, model="exp", origin=FALSE) # plot(res_SARED$Tn[,1], res_SARED$sarED[,1], xlab="Tn", ylab="ED (<Gy>|<s>)")
data(BIN) obj_pickBIN <- pickBINdata(BIN, Position=c(2,4,6,8,10), Grain=0, LType="OSL", view=FALSE) obj_analyseBIN <- analyseBINdata(obj_pickBIN, nfchn=3, nlchn=20) res_SARED <- calSARED(obj_analyseBIN, model="exp", origin=FALSE) # plot(res_SARED$Tn[,1], res_SARED$sarED[,1], xlab="Tn", ylab="ED (<Gy>|<s>)")
Calculating and selecting equivalent doses in a batch model according to the "standardised growth curve" (SGC) method suggested by Roberts and Duller (2004) or the "global standardised growth curve" (gSGC) method suggested by Li et al. (2015, 2016).
calSGCED(obj_analyseBIN, SGCpars, model, origin, avgDev, method = "SGC", SAR.Cycle = "N", errMethod = "sp", Tn.above.3BG = TRUE, TnBG.ratio.low = NULL, rseTn.up = NULL, FR.low = NULL, rseED.up = NULL, use.se = TRUE, outpdf = NULL, outfile = NULL)
calSGCED(obj_analyseBIN, SGCpars, model, origin, avgDev, method = "SGC", SAR.Cycle = "N", errMethod = "sp", Tn.above.3BG = TRUE, TnBG.ratio.low = NULL, rseTn.up = NULL, FR.low = NULL, rseED.up = NULL, use.se = TRUE, outpdf = NULL, outfile = NULL)
obj_analyseBIN |
list(required): an object of S3 class "analyseBIN" produced by |
SGCpars |
vector(required): optimized parameters of the SGC obtained using function lsNORM (or fitGrowth) |
model |
character(required): fitting model used for obtaining |
origin |
logical(required): logical value indicating if established SGC passes the origin |
avgDev |
numeric(required): average deviation (i.e., average fit error) of the SGC obtained using function fitGrowth or lsNORM. This quantity stands for the uncertainty of established SGC when assessing the equivalent dose error using the simple transformaion method |
method |
character(with default): method used for equivalent dose calculation, i.e., |
SAR.Cycle |
character(with default): SAR cycles used for SGC equivalent dose calculation. |
errMethod |
character(with default): method used for equivalent dose error assessment |
Tn.above.3BG |
logical(with default): logical value indicating if aliquot (grain) with Tn below 3 sigma BG should be rejected |
TnBG.ratio.low |
numeric(optional): lower limit on ratio of initial Tn signal to BG |
rseTn.up |
numeric(optional): upper limit on relative standard error of Tn in percent |
FR.low |
numeric(optional): lower limit on fast ratio of Tn |
rseED.up |
numeric(optional): upper limit on the relative standard error of equivalent dose in percent |
use.se |
logical(with default): logical value indicating if standard errors of values should be used during application of rejection criteria |
outpdf |
character(optional): if specified, results of SGC equivalent dose calculation will be written to a PDF file named |
outfile |
character(optional): if specified, SGC equivalent doses related quantities will be written to a CSV file named |
Return an invisible list that contains the following elements:
scale.Ltx |
scaled standardised natural-dose signals and associated standard errors used for SGC equivalent dose calculation. Note that standardised natural-dose signals will remain un-scaled if |
sgcED |
calculated SGC equivalent doses |
ConfInt |
68 percent (one sigma) and 95 percent (two sigma) confidence intervals of SGC equivalent doses |
agID |
aliquot (grain) ID of calculated (selected) SGC equivalent doses |
summary.info |
a summary of the SGC equivalent dose calculation |
Li B, Roberts RG, Jacobs Z, Li SH, 2015. Potential of establishing a "global standardised growth curve" (gSGC) for optical dating of quartz from sediments. Quaternary Geochronology, 27: 94-104.
Li B, Jacobs Z, Roberts RG, 2016. Investigation of the applicability of standardised growth curves for OSL dating of quartz from Haua Fteah cave, Libya. Quaternary Geochronology, 35: 1-15.
Roberts HM, Duller GAT, 2004. Standardised growth curves for optical dating of sediment using multiple-grain aliquots. Radiation Measurements, 38(2): 241-252.
fitGrowth; lsNORM; SARdata; scaleSGCN; calED; calSARED
data(SARdata) ### (1) gSGC ED calculation: ### gSGCpars were obtained using function "lsNORM". gSGCpars <- c(137.440874251, 0.007997863, 2.462035263, -0.321536177) avg.error2 <- 0.1111623 res <- calSGCED(as_analyseBIN(SARdata), gSGCpars, method="gSGC", model="gok", origin=FALSE, avgDev=avg.error2, SAR.Cycle=c("N","R3")) print(res$sgcED) ### (2) SGC ED calculation (not run): ### SGCpars were obtained using function "fitGrowth". # SGCpars <- c(183.474322547, 0.007038048, 4.254287622, -0.337734151) # avg.error <- 0.3156259 # calSGCED(as_analyseBIN(SARdata), SGCpars, method="SGC", model="gok", # origin=FALSE, avgDev=avg.error, SAR.Cycle="N", outpdf="SGCED") ### (3) gSGC ED calculation and signal-related ### rejection criteria application (not run): # data(BIN) # res_pickBIN <-pickBINdata(BIN, LType="OSL") # res_analyseBIN <- analyseBINdata(res_pickBIN, nfchn=4, nlchn=30) # res_lsNORM <- lsNORM(res_analyseBIN$SARdata, model="gok", origin=FALSE) # calSGCED(res_analyseBIN, SGCpars=res_lsNORM$LMpars2[,1], # model="gok", origin=FALSE, avgDev=res_lsNORM$avg.error2, # method="gSGC", SAR.Cycle=c("N","R3"), Tn.above.3BG=TRUE, # TnBG.ratio.low=4, rseTn.up=10, outpdf="foo", outfile="foo")
data(SARdata) ### (1) gSGC ED calculation: ### gSGCpars were obtained using function "lsNORM". gSGCpars <- c(137.440874251, 0.007997863, 2.462035263, -0.321536177) avg.error2 <- 0.1111623 res <- calSGCED(as_analyseBIN(SARdata), gSGCpars, method="gSGC", model="gok", origin=FALSE, avgDev=avg.error2, SAR.Cycle=c("N","R3")) print(res$sgcED) ### (2) SGC ED calculation (not run): ### SGCpars were obtained using function "fitGrowth". # SGCpars <- c(183.474322547, 0.007038048, 4.254287622, -0.337734151) # avg.error <- 0.3156259 # calSGCED(as_analyseBIN(SARdata), SGCpars, method="SGC", model="gok", # origin=FALSE, avgDev=avg.error, SAR.Cycle="N", outpdf="SGCED") ### (3) gSGC ED calculation and signal-related ### rejection criteria application (not run): # data(BIN) # res_pickBIN <-pickBINdata(BIN, LType="OSL") # res_analyseBIN <- analyseBINdata(res_pickBIN, nfchn=4, nlchn=30) # res_lsNORM <- lsNORM(res_analyseBIN$SARdata, model="gok", origin=FALSE) # calSGCED(res_analyseBIN, SGCpars=res_lsNORM$LMpars2[,1], # model="gok", origin=FALSE, avgDev=res_lsNORM$avg.error2, # method="gSGC", SAR.Cycle=c("N","R3"), Tn.above.3BG=TRUE, # TnBG.ratio.low=4, rseTn.up=10, outpdf="foo", outfile="foo")
Calculating statistical parameters (skewness, kurtosis, quantiles) for a number of equivalent dose values.
dbED(EDdata, plot = TRUE, typ = "pdf", from = NULL, to = NULL, step = NULL, nbin = 15, pcolor = "purple", psize = 1.5, outfile = NULL)
dbED(EDdata, plot = TRUE, typ = "pdf", from = NULL, to = NULL, step = NULL, nbin = 15, pcolor = "purple", psize = 1.5, outfile = NULL)
EDdata |
matrix(required): a two-column matrix (i.e., equivalent dose values and |
plot |
logical(with default): draw a plot or not |
typ |
character(with default): type of plot, |
from |
numeric(optional): desired lower limit on x-axis |
to |
numeric(optional): desired upper limit on x-axis |
step |
numeric(optional): a step-size used for constructing the probability density plot (if |
nbin |
integer(with default): desired number of intervals for the histogram (if |
pcolor |
character(with default): color of data points, input colors() to see available colors |
psize |
numeric(with default): size of data points |
outfile |
character(optional): if specified, calculated probability densities (if |
Return a list that contains the following elements:
weight.ED |
weigthed mean of equivalent dose values and associated standard error |
skewness |
weighted skewness of equivalent dose values and associated standard error |
kurtosis |
kurtosis of equivalent dose values and associated standard error |
quantile.ED |
quantiles of equivalent dose values |
Galbraith RF, 2010. On plotting OSL equivalent doses. Ancient TL, 28(1): 1-10.
Galbraith RF, Roberts RG, 2012. Statistical aspects of equivalent dose and error calculation and display in OSL dating: an overview and some recommendations. Quaternary Geochronology, 11: 1-27.
psRadialPlot; RadialPlotter; EDdata
data(EDdata) dbED(EDdata$gl11,typ="pdf")
data(EDdata) dbED(EDdata$gl11,typ="pdf")
Decomposing a CW-OSL or LM-OSL decay curve to a given number of first-order exponential components using a combination of differential evolution and Levenberg-Marquardt algorithm suggested by Bluszcz and Adamiec (2006).
decomp(Sigdata, delay.off = c(0,0), ncomp = 2, constant = TRUE, typ = "cw", control.args = list(), weight = FALSE, plot = TRUE, log = "x", lwd = 2, curve.no = NULL, SAR.Cycle = NULL, irr.dose = NULL, outfile = NULL, transf = TRUE)
decomp(Sigdata, delay.off = c(0,0), ncomp = 2, constant = TRUE, typ = "cw", control.args = list(), weight = FALSE, plot = TRUE, log = "x", lwd = 2, curve.no = NULL, SAR.Cycle = NULL, irr.dose = NULL, outfile = NULL, transf = TRUE)
Sigdata |
matrix(required): a two-column matrix (i.e., stimulation time and photon count values) |
delay.off |
vector(with default): a two-elment vector indicating the "Delay" and "Off" |
ncomp |
integer(with default): number of decomposed components |
constant |
logical(with default): logical value indicating if a constant component should be subtracted from the decay curve |
typ |
character(with default): type of a decay curve (i.e., |
control.args |
list(with default): arguments used in the differential evolution algorithm, see details |
weight |
logical(with default): logical value indicating if the fit should be performed using a weighted procedure |
plot |
logical(with default): logical value indicating if the results should be plotted |
log |
character(with default): a character string which contains "x" if the x axis is to be logarithmic, "y" if the y axis is to be logarithmic and "xy" or "yx" if both axes are to be logarithmic |
lwd |
numeric(with default): width of curves (lines) |
curve.no |
numeric(optional): decay curve number |
SAR.Cycle |
numeric(optional): SAR cycle of the decay curve, Example: |
irr.dose |
numeric(optional): irradiation dose of the decay curve |
outfile |
character(optional): if specified, decomposed signal values will be written to a CSV file named |
transf |
logical(with default): do not use (for backward compatibility purpose) |
Function decomp decomposes an OSL decay curve to a specified number of components using a combination of differential evolution and Levenberg-Marquardt algorithm. Both CW-OSL and LM-OSL decay curves can be decomposed.
For a CW-OSL decay curve, the fitting model (Bluszcz and Adamiec, 2006) is:I(t)=a1*b1*exp(-b1*t)+...+ak*bk*exp(-bk*t)
,
where k=1, 2, ..., 7
, I(t)
is the luminescence intensity as a function of time, a
is the number of trapped electrons, and b
is the detrapping rate. The constant component is c
if constant=TRUE
.
For a LM-OSL decay curve, the fitting model (Bulur, 2000) is:I(t)=a1*b1*(t/P)*exp[-b1*t^2/(2*P)]+...+ak*bk*(t/P)*exp[-bk*t^2/(2*P)]
,
where k=1, 2, ..., 7
, and I(t)
is the luminescence intensity as a function of time, P
is the total stimulation time, a
is the number of trapped electrons, and b
is the detrapping rate. The constant component is c*(t/P)
if constant=TRUE
.
Parameters are initialized using a differential evolution method suggested by Bluszcz and Adamiec (2006), then the Levenberg-Marquardt algorithm (minpack: Fortran 90 version by John Burkardt, freely available at https://people.sc.fsu.edu/~jburkardt/f_src/minpack/minpack.html) will be performed to optimize the parameters. If weight=TRUE
, the photon counts will be assumed to follow a Possion distribution with a standard error equal to the square root of the number of photon counts, and the decay curve will be fitted using a weighted procedure. Setting weight=TRUE
gives more weight to photon counts from slower decaying components.
Arguments in control.args
that control the differential evolution algorithm include:
(1) factor: the number of population members, np=factor*ncomp
, default factor=20
;
(2) f: a weighting factor that lies between 0
and 1.2
, default f=0.5
;
(3) cr: a crossover constant that lies between 0
and 1
, default cr=0.99
;
(4) maxiter: maximum number of iterations, default maxiter=500
;
(5) tol: tolerance for stopping the iteration, the procedure will be terminated if
all relative standard deviations of parameters are smaller than tol
, defalut tol=0.1
.
Return an invisible list containing the following elements:
message |
return 0 if fit succeeds, else 1 |
comp.sig |
a matrix containing time, signal, and fitted signal values for each component |
LMpars |
optimized parameters for the decay curve |
constant |
estimated constant component, it returns |
value |
minimized objective for the decay curve |
FOM |
figure of merit value for the decay curve in percent |
Arguments curve.no
, SAR.Cycle
, and irr.dose
have nothing to do with decay curve fitting. They are used only for plotting purpose.
The model to be optimized should not be underdetermined. This means that the number of data points should exceed (or at least be equal to) the number of parameters. For a given model, this routine will return an error if any standard errors of parameters cannot be estimated by numerical difference-approximation. Function decompc
in previous versions was bundled to function decomp.
We would like to thank Professor Andrzej Bluszcz who helps us a lot during the programming of this function. Dr Jeong-Heon Choi is thanked for providing published data sets to test this routine.
Bluszcz A, 1996. Exponential function fitting to TL growth data and similar applications. Geochronometria, 13: 135-141.
Bluszcz A, Adamiec G, 2006. Application of differential evolution to fitting OSL decay curves. Radiation Measurements, 41(7-8): 886-891.
Bulur E, 2000. A simple transformation for converting CW-OSL curves to LM-OSL curves. Radiation Measurements, 32(2): 141-145.
Differential evolution algorithm, https://en.wikipedia.org/wiki/Differential_evolution
Jain M, Murray AS, Boetter-Jensen L, 2003. Characterisation of blue-light stimulated luminescence components in different quartz samples: implications for dose measurement. Radiation Measurements, 37(4-5): 441-449.
More JJ, 1978. "The Levenberg-Marquardt algorithm: implementation and theory," in Lecture Notes in Mathematics: Numerical Analysis, Springer-Verlag: Berlin. 105-116.
Further reading
Adamiec G, 2005. OSL decay curves-relationship between single- and multiple-grain aliquots. Radiation Measurements, 39(1): 63-75.
Balian HG, Eddy NW, 1977. Figure-of-merit (FOM), an improved criterion over the normalized chi-squared test for assessing goodness-of-fit of gamma-ray spectral peaks. Nuclear Instruments and Methods, 145(2): 389-95.
Choi JH, Duller GAT, Wintle AG, 2006. Analysis of quartz LM-OSL curves. Ancient TL, 24(1): 9-20.
Li SH, Li B, 2006. Dose measurement using the fast component of LM-OSL signals from quartz. Radiation Measurements, 41(5): 534-541.
Peng J, Dong ZB, Han FQ, Han YH, Dai XL, 2014. Estimating the number of components in an OSL decay curve using the Bayesian Information Criterion. Geochronometria, 41(4): 334-341.
Signaldata; pickBINdata; fastED
### Example 1: data(Signaldata) decomp(Signaldata$lm,ncomp=3,typ="lm", control.args=list(maxiter=10)) ### Example 2 (not run): # data(BIN) # obj_pickBIN <- pickBINdata(BIN, Position=2, Run=2, view=TRUE, # LType="OSL", force.matrix=TRUE) # decomp(obj_pickBIN$BINdata[[1]], ncomp=2, log="xy")
### Example 1: data(Signaldata) decomp(Signaldata$lm,ncomp=3,typ="lm", control.args=list(maxiter=10)) ### Example 2 (not run): # data(BIN) # obj_pickBIN <- pickBINdata(BIN, Position=2, Run=2, view=TRUE, # LType="OSL", force.matrix=TRUE) # decomp(obj_pickBIN$BINdata[[1]], ncomp=2, log="xy")
Two sets of equivalent dose values.
data(EDdata)
data(EDdata)
A list that contains two sets of equivalent dose values:
35 equivalent dose values of a sand sample from the Tengger Desert (Peng and Han, 2013)
84 equivalent dose values of an alluvial deposit from the andean precordillera (Schmidt et al., 2012)
Peng J, Han FQ, 2013. Selections of fast-component OSL signal using sediments from the south edge of Tengger Desert. Acta Geoscientica Sinica, 34(6): 757-762.
Schmidt S, Tsukamoto S, Salomon E, Frechen M, Hetzel R, 2012. Optical dating of alluvial deposits at the orogenic front of the andean precordillera (Mendoza, Argentina). Geochronometria, 39(1): 62-75.
dbED; psRadialPlot; RadialPlotter; mcFMM; mcMAM; optimSAM; sensSAM
# Not run. # data(EDdata) # names(EDdata)
# Not run. # data(EDdata) # names(EDdata)
Estimating a fast-, medium-, or slow-component equivalent dose using decay curves obtained from the single aliquot regenerative-dose (SAR) method.
fastED(Sigdata, Redose, delay.off = c(0,0), ncomp = 2, constant = TRUE, compIDX = 1, control.args = list(), typ = "cw", model = "gok", origin = FALSE, errMethod = "sp", nsim = 500, weight.decomp = FALSE, weight.fitGrowth = TRUE, trial = TRUE, nofit.rgd = NULL, outpdf = NULL, log = "x", lwd = 2, test.dose = NULL, agID = NULL)
fastED(Sigdata, Redose, delay.off = c(0,0), ncomp = 2, constant = TRUE, compIDX = 1, control.args = list(), typ = "cw", model = "gok", origin = FALSE, errMethod = "sp", nsim = 500, weight.decomp = FALSE, weight.fitGrowth = TRUE, trial = TRUE, nofit.rgd = NULL, outpdf = NULL, log = "x", lwd = 2, test.dose = NULL, agID = NULL)
Sigdata |
matrix(required): a series of decay curves stored in a matrix column by column, the first column denotes stimulation time values, see details.
Data structure of this kind can be obtained using function pickBINdata by setting argument |
Redose |
vector(required): regenerative dose values. Example: |
delay.off |
vector(with default): a two-elment vector indicating the "Delay" and "Off" |
ncomp |
integer(with default): number of components to be decomposed |
constant |
logical(with default): logical value indicating if a constant background should be subtracted from the decay curve, see function decomp for details |
compIDX |
integer(with default): index of the component to be extracted. For example, |
control.args |
list(with default): arguments used in the differential evolution algorithm, see function decomp for details |
typ |
character(with default): type of an OSL decay curve, only CW-OSL decay curve can be analyzed currently |
model |
character(with default): model used for growth curve fitting, see function |
origin |
logical(with default): logical value indicating if the growth curve should be forced to pass the origin |
errMethod |
character(with default): method used for equivalent dose error assessment. See function calED for details |
nsim |
integer(with default): desired number of randomly simulated equivalent dose obtained by Monte Carlo simulation |
weight.decomp |
character(with default): logical value indicating if the decay curve should be fitted using a weighted procedure, see function decomp for details |
weight.fitGrowth |
character(with default): logical value indicating if the growth curve should be fitted using a weighted procedure, see function fitGrowth for details |
trial |
logical(with default): logical value indicating if the growth curve should be fitted using other models if the given model fails, see function fitGrowth for details |
nofit.rgd |
integer(optional): regenerative doses that will not be used during the fitting.
For example, if |
outpdf |
character(optional): if specified, results of fast-, medium-, or slow-component equivalent dose calculation will be written to a PDF file
named |
log |
character(with default): a character string which contains "x" if the x axis is to be logarithmic, "y" if the y axis is to be logarithmic and "xy" or "yx" if both axes are to be logarithmic |
lwd |
numeric(with default): width of curves (lines) |
test.dose |
numeric(optional): test dose of decay curves |
agID |
vector(optional): a three-elemenet vector indicating aliquot (grain) ID, i.e., |
Function fastED is used to estimate a fast-, medium-, or slow-component equivalent dose using data sets obtained from the SAR protocol (Murray and Wintle, 2000). The routine trys to decompose a series of decay curves to a specified number of components, then the numbers of trapped electrons from the fast-, medium-, or slow-component will be used to construct the growth curve to estimate a fast-, medium-, or slow-component equivalent dose. See function decomp, fitGrowth, and calED for more details concerning decay curve decomposition, growth curve fitting, and equivalent dose calculation, respectively.
Argument Sigdata
is a column-matrix made up with stimulation time values and a number of decay curves:
Column.no | Description |
I |
Stimulation time values |
II |
Natural-dose signal values |
III |
Test-dose signal values for the natural-dose |
IV |
The 1th Regenerative-dose signal values |
V |
Test-dose signal values for the 1th regenerative-dose |
VI |
The 2th regenerative-dose signal values |
VII |
Test-dose signal values for the 2th regenerative-dose |
... |
... |
Return an invisible list containing the following elements:
decomp.pars |
a list containing optimized parameters of successfully fitted decay curves |
Curvedata |
data sets used for building the fast-, medium-, or slow-component growth curve |
Ltx |
sensitivity-corrected natural-dose fast-, medium-, or slow-component signal and its standard error |
LMpars |
optimizaed parameters for the fast-, medium-, or slow-component growth curve |
value |
minimized objective for the fast-, medium-, or slow-component growth curve |
avg.error |
average fit error for the fast-, medium-, or slow-component growth curve |
RCS |
reduced chi-square value for the fast-, medium-, or slow-component growth curve |
FOM |
figure of merit value for the fast-, medium-, or slow-component growth curve in percent |
calED.method |
method used for calculating the fast-, medium-, or slow-component equivalent dose, i.e., |
mcED |
randomly simulated fast-, medium-, or slow-component equivalent doses |
ED |
fast-, medium-, or slow-component equivalent dose and its standard error |
ConfInt |
68 percent and 95 percent confidence interval of the fast-, medium-, or slow-component equivalent dose |
RecyclingRatio1 |
the first fast-, medium-, or slow-component recycling ratio and its standard error |
RecyclingRatio2 |
the second fast-, medium-, or slow-component recycling ratio and its standard error |
RecyclingRatio3 |
the third fast-, medium-, or slow-component recycling ratio and its standard error |
Recuperation1 |
the first fast-, medium-, or slow-component recuperation (i.e., ratio of the sensitivity-corrected zero-dose signal to natural-dose signal) and its standard error in percent |
Recuperation2 |
the second fast-, medium-, or slow-component recuperation (i.e., ratio of the sensitivity-corrected zero-dose signal to the maximum regenerative-dose signal) and its standard error in percent |
Argument test.dose
and agID
have nothing to do with fast-, medium-, or slow-component equivalent dose calculation. They are used only for plotting purpose.
The number of trapped electrons that corresponds to the largest, the second largest, and the third largest decay rates will be regarded as the fast-, medium-, and slow-component signals, respectively,
which cannot always ensure that pure fast-, medium-, or slow-component signals be extracted if an ultra-fast decaying component appears.
The authors thank Professor Sheng-Hua Li and Professor Geoff Duller for their helpful discussions concerning fast-component equivalent dose calculation.
Li SH, Li B, 2006. Dose measurement using the fast component of LM-OSL signals from quartz. Radiation Measurements, 41(5): 534-541.
Murray AS, Wintle AG, 2000. Luminescence dating of quartz using improved single-aliquot regenerative-dose protocol. Radiation Measurements, 32(1): 57-73.
pickBINdata; Signaldata; fitGrowth; decomp; calED
### Example 1 (not run): # data(Signaldata) # fastED(Signaldata$cw,Redose=c(80,160,240,320,0, 80)*0.13, # ncomp=3, constant=FALSE, compIDX=1, outpdf="fastED1") # fastED(Signaldata$cw,Redose=c(80,160,240,320,0, 80)*0.13, # ncomp=3, constant=FALSE, compIDX=2, outpdf="mediumED1") # fastED(Signaldata$cw,Redose=c(80,160,240,320,0, 80)*0.13, # ncomp=3, constant=FALSE, compIDX=3, outpdf="slowED1") ### Example 2 (not run): # data(BIN) # obj_pickBIN <- pickBINdata(BIN, Position=6, Grain=0, # LType="OSL", force.matrix=TRUE) # fastED(obj_pickBIN$BINdata[[1]], ncomp=2, constant=TRUE, # Redose=c(100,200,300,400,0,100)*0.13, outpdf="fastED2")
### Example 1 (not run): # data(Signaldata) # fastED(Signaldata$cw,Redose=c(80,160,240,320,0, 80)*0.13, # ncomp=3, constant=FALSE, compIDX=1, outpdf="fastED1") # fastED(Signaldata$cw,Redose=c(80,160,240,320,0, 80)*0.13, # ncomp=3, constant=FALSE, compIDX=2, outpdf="mediumED1") # fastED(Signaldata$cw,Redose=c(80,160,240,320,0, 80)*0.13, # ncomp=3, constant=FALSE, compIDX=3, outpdf="slowED1") ### Example 2 (not run): # data(BIN) # obj_pickBIN <- pickBINdata(BIN, Position=6, Grain=0, # LType="OSL", force.matrix=TRUE) # fastED(obj_pickBIN$BINdata[[1]], ncomp=2, constant=TRUE, # Redose=c(100,200,300,400,0,100)*0.13, outpdf="fastED2")
Fitting growth curves using the Levenberg-Marquardt algorithm.
fitGrowth(Curvedata, model = "gok", origin = FALSE, weight = TRUE, trial = FALSE, plot = TRUE, nofit.rgd = NULL, agID = NULL, Tn = NULL, Tn3BG = NULL, TnBG.ratio = NULL, rseTn = NULL, FR = NULL, RecyclingRatio1 = NULL, RecyclingRatio2 = NULL, RecyclingRatio3 = NULL, Recuperation1 = NULL, Recuperation2 = NULL, LnTn.curve = NULL, TxTn = NULL)
fitGrowth(Curvedata, model = "gok", origin = FALSE, weight = TRUE, trial = FALSE, plot = TRUE, nofit.rgd = NULL, agID = NULL, Tn = NULL, Tn3BG = NULL, TnBG.ratio = NULL, rseTn = NULL, FR = NULL, RecyclingRatio1 = NULL, RecyclingRatio2 = NULL, RecyclingRatio3 = NULL, Recuperation1 = NULL, Recuperation2 = NULL, LnTn.curve = NULL, TxTn = NULL)
Curvedata |
matrix(required): a three-column matrix (i.e., regenerative doses, |
model |
character(with default): model used for growth curve fitting, see details |
origin |
logical(optional): logical value indicating if the growth curve should be forced to pass the origin |
weight |
logical(with default): logical value indicating if the growth curve should be fitted using a weighted procedure, see details |
trial |
logical(with default): logical value indicating if the growth curve should be fitted using other models if the given model fails, see details |
plot |
logical(with default): logical value indicating if the results should be plotted |
nofit.rgd |
integer(optional): regenerative doses that will not be used during the fitting.
For example, if |
agID |
vector(optional): a three-elemenet vector indicating aliquot (grain) ID, i.e., |
Tn |
vector(optional): a two-element vector containing value and |
Tn3BG |
numeric(optional): 0-1 value indicating if Tn is more than 3 sigma above BG, |
TnBG.ratio |
vector(optional): a two-element vector containing value and |
rseTn |
numeric(optional): relative standard error of Tn in percent |
FR |
vector(optional): a two-element vector containing value and |
RecyclingRatio1 |
vector(optional): a two-element vector containing value and |
RecyclingRatio2 |
vector(optional): a two-element vector containing value and |
RecyclingRatio3 |
vector(optional): a two-element vector containing value and |
Recuperation1 |
vector(optional): a two-element vector containing value and |
Recuperation2 |
vector(optional): a two-element vector containing value and |
LnTn.curve |
list(optional): decay curve data for Ln and Tn, it should contain four elements,
i.e., |
TxTn |
vector(optional): ratios of Tx to Tn for various SAR cycles |
In growth curve fitting using function fitGrowth, five models are available:
(1) "line": a linear model, y=a*x+b
;
(2) "exp": a single saturation exponential model, y=a*[1-exp(-b*x)]+c
;
(3) "lexp": a single saturation exponential plus linear model, y=a*[1-exp(-b*x)]+c*x+d
;
(4) "dexp": a double saturation exponential model, y=a*[1-exp(-b*x)]+c*[1-exp(-d*x)]+e
;
(5) "gok": a general order kinetic model (Guralnik et al., 2015), y=a*[1-(1+b*c*x)^(-1/c)]+d
.
The fitting process is performed using the Levenberg-Marquardt algorithm (minpack: Fortran 90 source code by John Burkardt, freely available at https://people.sc.fsu.edu/~jburkardt/f_src/minpack/minpack.html). If weight=TRUE
, a weighted procedure will be performed through weighting each data point by its inverse variance. User is advised to set argument plot=TRUE
if possible to visualize the quality of fit.
Argument trial=TRUE
means that if the growth curve can not be fitted successfully using the user-supplied model, then the procedure will try to fit other models instead:
Model | Tried model |
"dexp" |
c("dexp", "gok", "exp", "line") |
"lexp" |
c("lexp", "gok", "exp", "line") |
"gok" |
c("gok", "exp", "line") |
"exp" |
c("exp", "line") |
"line" |
c("line")
|
For example, if model="dexp"
and trial=TRUE
, then a number of models from sequencec("dexp", "gok", "exp", "line")
will be applied one after another until the fit succeeds.
The required number of data points for each model is (value inside the parentheses denotes the required number of observations if the model passes the origin):
Model | Required NPoints |
"dexp" |
>=5 (>=4) |
"lexp" |
>=4 (>=3) |
"gok" |
>=4 (>=3) |
"exp" |
>=3 (>=2) |
"line" |
>=2 (>=1) |
If user-provided data is not enough for model fitting (i.e., the number of data points is less than the number of parameters of a given model),
then a model with less parameters will be fitted. For example, if 4 data points are fitted using a "dexp"
(origin=FALSE
) model that actually needs at least 5 data points,
then a 4-parameter "gok"
model will be fitted instead.
Return a list that contains the following elements:
message |
return 0 if the fit succeeds, else 1 |
fitIDX |
Indices of dose points used in growth curve fitting |
LMpars |
optimized parameters for the growth curve |
value |
minimized objective for the growth curve |
avg.error |
average fit error for the growth curve |
RCS |
reduced chi-square value for the growth curve |
FOM |
figure of merit value for the growth curve in percent |
Arguments agID
, Tn
, Tn3BG
, TnBG.ratio
, rseTn
, FR
,RecyclingRatio1
, RecyclingRatio2
, RecyclingRatio3
,Recuperation1
, Recuperation2
, LnTn.curve
, TxTn
have nothing to do with growth curve fitting. They are used only for plotting purpose.
The model to be optimized should not be underdetermined. This means that the number of data points should exceed (or at least be equal to) the number of parameters. For a given model, the procedure will return an error if any standard errors of parameters cannot be estimated by numerical difference-approximation.
Balian HG, Eddy NW, 1977. Figure-of-merit (FOM), an improved criterion over the normalized chi-squared test for assessing goodness-of-fit of gamma-ray spectral peaks. Nuclear Instruments and Methods, 145(2): 389-95.
Guralnik B, Li B, Jain M, Chen R, Paris RB, Murray AS, Li SH, Pagonis V, Valla PG, Herman F, 2015. Radiation-induced growth and isothermal decay of infrared-stimulated luminescence from feldspar. Radiation Measurements, 81: 224-231.
More JJ, 1978. "The Levenberg-Marquardt algorithm: implementation and theory" in Lecture Notes in Mathematics: Numerical Analysis, Springer-Verlag: Berlin. 105-116.
analyseBINdata; SARdata; calED; calSARED; fastED;
pickSARdata; lsNORM; calSGCED
### Example 1: Curvedata <- cbind(c(0, 18, 36, 54, 72, 0, 18), c(0.026, 1.55, 2.39, 3.46, 4.13, 0.023, 1.61), c(0.005, 0.11, 0.27, 0.22, 0.20, 0.008, 0.24)) fitGrowth(Curvedata, model="gok", origin=FALSE, plot=TRUE) ### Example 2 (not run): # data(SARdata) # Curvedata <- SARdata[!is.element(SARdata[,2], "N"),3:5] # fitGrowth(Curvedata, model="gok", origin=FALSE)
### Example 1: Curvedata <- cbind(c(0, 18, 36, 54, 72, 0, 18), c(0.026, 1.55, 2.39, 3.46, 4.13, 0.023, 1.61), c(0.005, 0.11, 0.27, 0.22, 0.20, 0.008, 0.24)) fitGrowth(Curvedata, model="gok", origin=FALSE, plot=TRUE) ### Example 2 (not run): # data(SARdata) # Curvedata <- SARdata[!is.element(SARdata[,2], "N"),3:5] # fitGrowth(Curvedata, model="gok", origin=FALSE)
Loading (importing) a BIN file into the R platform.
loadBINdata(filename, view = TRUE)
loadBINdata(filename, view = TRUE)
filename |
character(required): name(s) of file(s) (with file extension ".BIN", ".bin", "BINX", or "binx"), the file(s) must be available from the current working directory. Example: |
view |
logical(optional): logical value indicating if the loaded data should be visualized in a Summary Table |
Function loadBINdata is used for loading BIN (BINX) files into the R platform. Five versions of binary files (V3, V4, V6, V7, and V8) are loadable. It can load a single BIN (BINX) file or a number of files into R simultaneously.
Items reserved during the loading process include:
(1) Position: Carousel position;
(2) Grain: Grain number;
(3) Run: Run number;
(4) Set: Set number;
(5) DType: Data type, includes: Natural
, N+dose
, bleach
, Bleach+dose
,Natural(Bleach)
, N+dose(Bleach)
, Dose
, Background
;
(6) IRRTime: Irradiation time;
(7) NPoints: number of data points;
(8) LType: Luminescence type, includes: TL
, OSL
, IRSL
, M-IR
, M-VIS
,TOL
, TRPOSL
, RIR
, RBR
, USER
, POSL
, SGOSL
, RL
, XRF
;
(9) Low: Low (temperature, time, wavelength);
(10) High: High (temperature, time, wavelength);
(11) Rate: Rate (temperature, time, wavelength);
(12) Temperature: Sample temperature;
(13) Delay: TOL "delay" channels;
(14) On: TOL "on" channels;
(15) Off: TOL "off" channels;
(16) LightSource: Light source, includes: None
, Lamp
, IRDiodes
,CalibraitionLED
, BlueDiodes
, WhiteLight
, GreenLaser
, IRLaser
;
(17) AnTemp: Annealing temperature;
(18) TimeSinceIrr: Time since irradiation;
(19) Time: Data collection time;
(20) Date: Data collection date.
Return an invisible list of S3 class object "loadBIN"
containing the following elements:
records |
a list containing loaded data records |
tab |
a table (data.frame) summarizing items of loaded data records |
We would like to appreciate Dr Lei Gao who prompts us to write this function and provides measured data sets to test this procedure.
Duller GAT, 2016. Analyst (v4.31.9), User Mannual.
pickBINdata; analyseBINdata; BIN
### Not run. ### Ensure that file "foo.bin" is available ### from the current working directory. # obj_loadBIN <- loadBINdata("foo.bin", view=TRUE) # class(obj_loadBIN) # obj_loadBIN$records
### Not run. ### Ensure that file "foo.bin" is available ### from the current working directory. # obj_loadBIN <- loadBINdata("foo.bin", view=TRUE) # class(obj_loadBIN) # obj_loadBIN$records
Optimizing standardised regenerative-dose signals according to the least-squares normalisation (LS-normalisation) procedure using an iterative scaling and fitting procedure proposed by Li et al. (2016).
lsNORM(SARdata, model = "gok", origin = FALSE, weight = FALSE, natural.rm = TRUE, norm.dose = NULL, maxiter = 10, plot = TRUE)
lsNORM(SARdata, model = "gok", origin = FALSE, weight = FALSE, natural.rm = TRUE, norm.dose = NULL, maxiter = 10, plot = TRUE)
SARdata |
matrix(required): SAR data used for performing the LS-normalisation |
model |
character(with default): model used for growth curve fitting, see fitGrowth for available models |
origin |
logical(with default): logical value indicating if the growth curve should be forced to pass the origin |
weight |
logical(with default): logical value indicating if the growth curve should be fitted using a weighted procedure, see function fitGrowth for details |
natural.rm |
logical(with default): logical value indicating if the standardised natural-dose signal
should be removed from |
norm.dose |
numeric(optional): regenerative-dose used for re-scaling established gSGC.
For example, if |
maxiter |
integer(with default): allowed maximum number of iterations during the |
plot |
logical(with default): logical value indicating if the results should be plotted |
Function lsNORM is used for optimizing regenerative-dose signal data from a number of grains (aliquots) according to the least-squares normalisation (LS-normalisation) procedure outlined by Li et al. (2016) using an iterative scaling and fitting procedure.
The LS-normalisation procedure for growth curve optimization involves the following steps:
(1) Fit standardised regenerative-dose signals from all of the aliquots;
(2) Re-scale the individual growth curve from each aliquot using a scaling factor. The scaling factor for each aliquot is determined in a way such that the sum of squared residuals is minimized. Each aliquots is treated individually, and different scaling factors are calculated for different aliquots.
(3) Iterate the fitting (step 1) and re-scaling (step 2). The iterative procedure is performed repeatedly until there is negligible change in the relative standard deviation of the normalised growth curve data.
Return an invisible list that contains the following elements:
norm.SARdata |
SAR data sets optimized using the LS-normalisation procedure |
sf |
scaling factor of standardised regenerative-dose signals |
iter |
number of iterations required |
LMpars1 |
optimized parameters for the growth curve before LS-normalisation |
value1 |
minimized objective for the growth curve before LS-normalisation |
avg.error1 |
average fit error for the growth curve before LS-normalisation |
RCS1 |
reduced chi-square value for the growth curve before LS-normalisation |
FOM1 |
figure of merit value for the growth curve before LS-normalisation in percent |
LMpars2 |
optimized parameters for the growth curve after LS-normalisation |
value2 |
minimized objective for the growth curve after LS-normalisation |
avg.error2 |
average fit error for the growth curve after LS-normalisation |
RCS2 |
reduced chi-square value for the growth curve after LS-normalisation |
FOM2 |
figure of merit value for the growth curve after LS-normalisation in percent |
Li B, Jacobs Z, Roberts RG, 2016. Investigation of the applicability of standardised growth curves for OSL dating of quartz from Haua Fteah cave, Libya. Quaternary Geochronology, 35: 1-15.
analyseBINdata; fitGrowth; SARdata; scaleSGCN; calSGCED
### Example 1: data(SARdata) # Use only the first five aliquots of SARdata. Data <- SARdata[1:40,] res_lsNORM <- lsNORM(Data, model="gok") res_lsNORM$norm.SARdata ### Example 2 (not run): # data(BIN) # obj_pickBIN <- pickBINdata(BIN, Position=1:48, Grain=0, # LType="OSL", view=FALSE) # obj_analyseBIN <- analyseBINdata(obj_pickBIN, nfchn=3, nlchn=20) # lsNORM(obj_analyseBIN$SARdata, norm.dose=300)
### Example 1: data(SARdata) # Use only the first five aliquots of SARdata. Data <- SARdata[1:40,] res_lsNORM <- lsNORM(Data, model="gok") res_lsNORM$norm.SARdata ### Example 2 (not run): # data(BIN) # obj_pickBIN <- pickBINdata(BIN, Position=1:48, Grain=0, # LType="OSL", view=FALSE) # obj_analyseBIN <- analyseBINdata(obj_pickBIN, nfchn=3, nlchn=20) # lsNORM(obj_analyseBIN$SARdata, norm.dose=300)
Sampling from the joint-likelihood functions of finite mixture age models (include the central age model) using a Markov chain Monte Carlo (MCMC) method.
mcCAM(EDdata, addsigma = 0, iflog = TRUE, nsim = 50000, inis = list(), control.args = list()) mcFMM(EDdata, ncomp = 2, addsigma = 0, iflog = TRUE, nsim = 50000, inis = list(), control.args = list())
mcCAM(EDdata, addsigma = 0, iflog = TRUE, nsim = 50000, inis = list(), control.args = list()) mcFMM(EDdata, ncomp = 2, addsigma = 0, iflog = TRUE, nsim = 50000, inis = list(), control.args = list())
EDdata |
matrix(required): a two-column matrix (i.e., equivalent dose values and |
ncomp |
integer(with default): number of components |
addsigma |
numeric(with default): additional uncertainty, i.e., the sigmab value |
iflog |
logical(with default): transform equivalent dose values to log-scale or not |
nsim |
integer(with default): deseried number of iterations |
inis |
list(with default): initial state of parameters. |
control.args |
list(with default): arguments used in the Slice Sampling algorithm, see details |
Function mcFMM is used for sampling from the joint-likelihood functions of finite mixture age models (include the central age model) using a Markov chain Monte Carlo sampling algorithm called Slice Sampling (Neal, 2003). Three arguments (control.args
) are used for controling the sampling process:
(1) w: size of the steps for creating an interval from which to sample, default w=1
;
(2) m: limit on steps for expanding an interval, m<=1
means no limit on the expandation, m>1
means the interval is expanded with a finite number of iterations, default m=-100
;
(3) nstart: maximum number of trials for updating a variable in an iteration. It can be used for monitoring the stability of the simulation. For example, a MAM4 is likely to crash down for data sets with small numbers of data points or less dispersed distributions (see section 8.3 of Galbraith and Roberts, 2012 for a discussion), and sometimes more than one trial (i.e., using nstart>1
) is required to complete the sampling process, default nstart=1
.
Return an invisible list of S3 class object "mcAgeModels"
including the following elements:
EDdata |
equivalent dose values |
addsigma |
additional uncertainty |
model |
fitting model |
iflog |
transform equivalent dose values to log-scale or not |
nsim |
number of iterations |
chains |
simulated samples of parameters |
Galbraith RF, Green P, 1990. Estimating the component ages in a finite mixture. International Journal of Radiation Applications and Instrumentation. Part D. Nuclear Tracks and Radiation Measurements, 17: 197-206.
Neal RM, 2003. "Slice sampling" (with discussion). Annals of Statistics, 31(3): 705-767. Software is freely available at https://glizen.com/radfordneal/slice.software.html.
Peng J, Dong ZB, Han FQ, 2016. Application of slice sampling method for optimizing OSL age models used for equivalent dose determination. Progress in Geography, 35(1): 78-88. (In Chinese).
mcMAM; reportMC; RadialPlotter; optimSAM; sensSAM; EDdata
# Not run. # data(EDdata) # Construct a MCMC chain for CAM. # obj<-mcCAM(EDdata$gl11,nsim=5000) # reportMC(obj,thin=2,burn=1e3) # Construct a MCMC chain for FMM3. # obj<-mcFMM(EDdata$gl11,ncomp=3,nsim=5000) # reportMC(obj,thin=2,burn=1e3)
# Not run. # data(EDdata) # Construct a MCMC chain for CAM. # obj<-mcCAM(EDdata$gl11,nsim=5000) # reportMC(obj,thin=2,burn=1e3) # Construct a MCMC chain for FMM3. # obj<-mcFMM(EDdata$gl11,ncomp=3,nsim=5000) # reportMC(obj,thin=2,burn=1e3)
Sampling from the joint-likelihood function of the minimum (maximum) age model using a Markov chain Monte Carlo (MCMC) method.
mcMAM(EDdata, ncomp = -1, addsigma = 0, iflog = TRUE, nsim = 50000, inis = list(), control.args = list())
mcMAM(EDdata, ncomp = -1, addsigma = 0, iflog = TRUE, nsim = 50000, inis = list(), control.args = list())
EDdata |
matrix(required): a two-column matrix (i.e., equivalent dose values and |
ncomp |
integer(with default): number of components, |
addsigma |
numeric(with default): additional uncertainty, i.e., the sigmab value |
iflog |
logical(with default): transform equivalent dose values to log-scale or not |
nsim |
integer(with default): deseried number of iterations |
inis |
list(with default): initial state of parameters. |
control.args |
list(with default): arguments used by the Slice Sampling algorithm, see function mcFMM for details |
Return an invisible list of S3 class object "mcAgeModels"
. See mcFMM for details.
Galbraith RF, Roberts RG, Laslett GM, Yoshida H, Olley JM, 1999. Optical dating of single grains of quartz from Jinmium rock shelter, northern Australia. Part I: experimental design and statistical models. Archaeometry, 41(2): 339-364.
Neal RM, 2003. "Slice sampling" (with discussion). Annals of Statistics, 31(3): 705-767. Software is freely available at https://glizen.com/radfordneal/slice.software.html.
Peng J, Dong ZB, Han FQ, 2016. Application of slice sampling method for optimizing OSL age models used for equivalent dose determination. Progress in Geography, 35(1): 78-88. (In Chinese).
mcFMM; reportMC; RadialPlotter; EDdata; optimSAM; sensSAM
# Not run. # data(EDdata) # Construct a MCMC chain for MAM3. # obj<-mcMAM(EDdata$al3,ncomp=-1,addsigma=0.1,nsim=5000) # reportMC(obj,burn=1e3,thin=2) # # The convergence of the simulations may be diagnosed with # the Gelman and Rubin's convergence diagnostic. # library(coda) # Only if package "coda" has been installed. # args<-list(nstart=50) # inis1<-list(p=0.01,gamma=26,mu=104,sigma=0.01) # inis2<-list(p=0.99,gamma=100,mu=104,sigma=4.99) # obj1<-mcMAM(EDdata$al3,ncomp=-2,nsim=3000,inis=inis1,control.args=args) # obj2<-mcMAM(EDdata$al3,ncomp=-2,nsim=3000,inis=inis2,control.args=args) # chain1<-mcmc(obj1$chains) # chain2<-mcmc(obj2$chains) # chains<-mcmc.list(chain1,chain2) # gelman.plot(chains)
# Not run. # data(EDdata) # Construct a MCMC chain for MAM3. # obj<-mcMAM(EDdata$al3,ncomp=-1,addsigma=0.1,nsim=5000) # reportMC(obj,burn=1e3,thin=2) # # The convergence of the simulations may be diagnosed with # the Gelman and Rubin's convergence diagnostic. # library(coda) # Only if package "coda" has been installed. # args<-list(nstart=50) # inis1<-list(p=0.01,gamma=26,mu=104,sigma=0.01) # inis2<-list(p=0.99,gamma=100,mu=104,sigma=4.99) # obj1<-mcMAM(EDdata$al3,ncomp=-2,nsim=3000,inis=inis1,control.args=args) # obj2<-mcMAM(EDdata$al3,ncomp=-2,nsim=3000,inis=inis2,control.args=args) # chain1<-mcmc(obj1$chains) # chain2<-mcmc(obj2$chains) # chains<-mcmc.list(chain1,chain2) # gelman.plot(chains)
Estimating the parameters of statistical age models, including the common age model (COM), the central age model (CAM), the minimum age model (MAM), the maximum age model (MXAM), and the finite mixture age model (FMM), using the Maximum Likelihood Estimation method.
optimSAM(EDdata, model = "cam", addsigma = 0, iflog = TRUE, maxcomp = 6)
optimSAM(EDdata, model = "cam", addsigma = 0, iflog = TRUE, maxcomp = 6)
EDdata |
matrix(required): a two-column matrix (i.e., equivalent dose values and |
model |
character(with default): the fitting model, one of |
addsigma |
numeric(with default): additional uncertainty, i.e., the sigmab value |
iflog |
logical(with default): transform equivalent dose values to log-scale or not |
maxcomp |
integer(with default): the maximum number of components in FMM |
Return a list that contains the following elements:
pars |
optimized parameters, the name of the parameter of COM is |
maxlik |
optimized maximum logged likelihood value |
bic |
calculated Bayesian Information Criterion (BIC) value |
Galbraith RF, 1988. Graphical display of estimates having differing standard errors. Technometrics, 30(3): 271-281.
Galbraith RF, 1990. The radial plot: Graphical assessment of spread in ages. International Journal of Radiation Applications and Instrumentation. Part D. Nuclear Tracks and Radiation Measurements, 17(3): 207-214.
Galbraith RF, Green P, 1990. Estimating the component ages in a finite mixture. International Journal of Radiation Applications and Instrumentation. Part D. Nuclear Tracks and Radiation Measurements, 17: 197-206.
Galbraith RF, Laslett GM, 1993. Statistical models for mixed fission track ages. Nuclear Tracks And Radiation Measurements, 21(4): 459-470.
Galbraith RF, 1994. Some applications of radial plots. Journal of the American Statistical Association, 89(428): 1232-1242.
Galbraith RF, Roberts RG, Laslett GM, Yoshida H, Olley JM, 1999. Optical dating of single grains of quartz from Jinmium rock shelter, northern Australia. Part I: experimental design and statistical models. Archaeometry, 41(2): 339-364.
Galbraith RF, 2005. Statistics for fission track analysis. Chapman & Hall/CRC Press.
Galbraith RF, 2010. On plotting OSL equivalent doses. Ancient TL, 28(1): 1-10.
Galbraith RF, Roberts RG, 2012. Statistical aspects of equivalent dose and error calculation and display in OSL dating: an overview and some recommendations. Quaternary Geochronology, 11: 1-27.
mcMAM; mcFMM; dbED; psRadialPlot; RadialPlotter; EDdata
data(EDdata) ### Fitting a 3-component FMM. optimSAM(EDdata$al3, model="fmm3", addsigma=0) ### Fitting a 4-parameter MXAM. optimSAM(EDdata$al3, model="mxam4", addsigma=0.1)
data(EDdata) ### Fitting a 3-component FMM. optimSAM(EDdata$al3, model="fmm3", addsigma=0) ### Fitting a 4-parameter MXAM. optimSAM(EDdata$al3, model="mxam4", addsigma=0.1)
Extracting data sets from a loaded BIN (BINX) file.
pickBINdata(obj_loadBIN, Position = NULL, Grain = NULL, Run = NULL, Set = NULL, DType = NULL, IRRTime = NULL, NPoints = NULL, LType = NULL, Low = NULL, High = NULL, Rate = NULL, Temperature = NULL, Delay = NULL, On = NULL, Off = NULL, LightSource = NULL, AnTemp = NULL, TimeSinceIrr = NULL, view = TRUE, manual.select = FALSE, force.matrix = FALSE)
pickBINdata(obj_loadBIN, Position = NULL, Grain = NULL, Run = NULL, Set = NULL, DType = NULL, IRRTime = NULL, NPoints = NULL, LType = NULL, Low = NULL, High = NULL, Rate = NULL, Temperature = NULL, Delay = NULL, On = NULL, Off = NULL, LightSource = NULL, AnTemp = NULL, TimeSinceIrr = NULL, view = TRUE, manual.select = FALSE, force.matrix = FALSE)
obj_loadBIN |
list(required): an object of S3 class |
Position |
vector(optional): carousel position, Example: |
Grain |
vector(optional): grain number |
Run |
vector(optional): run number |
Set |
vector(optional): set number |
DType |
character(optional): a character vector indicating data type, |
IRRTime |
vector(optional): irradiation time |
NPoints |
vector(optional): number of data points |
LType |
character(optional): a character vector indicating luminescence types, |
Low |
vector(optional): lower limit on temperature, time, or wavelength |
High |
vector(optional): upper limit on temperature, time, or wavelength |
Rate |
vector(optional): increasing rate of temperature, time, or wavelength |
Temperature |
vector(optional): a vector indicating the sample temperatures |
Delay |
vector(optional): TOL "delay" channels |
On |
vector(optional): TOL "on" channels |
Off |
vector(optional): TOL "off" channels |
LightSource |
character(optional): a character vector indicating light source, |
AnTemp |
vector(optional): annealing temperature |
TimeSinceIrr |
vector(optional): time since irradiation |
view |
logical(with default): logical value indicating if the loaded data should be |
manual.select |
logical(with default): logical value indicating if the loaded data should be |
force.matrix |
logical(with default): logical value indicating if the picked data sets of an aliquot (grain) should be transformed into a matrix |
Function pickBINdata is used for pick up data sets from an object of S3 class "loadBIN"
generated using function loadBINdata.
Set force.matrix=TRUE
will transform data sets of an aliquot (grain) into a matrix, the transformation fails if data sets have different x (temperature, time, or wavelength) coordinates.
Transformed data sets stored in a matrix can be visualize via matplot (see examples).
Return an invisible list of S3 class object "pickBIN"
containing two elements:
BINdata |
selected BIN data |
agID |
Aliquot or grain ID (i.e., |
Duller GAT, 2016. Analyst (v4.31.9), User Mannual.
loadBINdata; analyseBINdata; BIN; decomp; fastED
### Example 1 (visualize decay curves for Position=2): data(BIN) obj_pickBIN <- pickBINdata(BIN, Position=2, view=FALSE, LType="OSL", force.matrix=TRUE) matplot(obj_pickBIN$BINdata[[1]][,1], obj_pickBIN$BINdata[[1]][,-1], main="Decay curves", xlab="Stimulation time (s)", ylab="Photon counts", type="l", log="xy") ### Example 2 (visualize test-dose decay curves for Position=2): obj_pickBIN <- pickBINdata(BIN, Position=2, Run=c(5,11,17,23,29,34,40), view=FALSE, LType="OSL", force.matrix=TRUE) matplot(obj_pickBIN$BINdata[[1]][,1], obj_pickBIN$BINdata[[1]][,-1], main="Test-dose decay curves", xlab="Stimulation time (s)", ylab="Photon counts", type="l", log="xy") ### Example 3 (visualize regenerative-dose decay curves for Position=2): obj_pickBIN <- pickBINdata(BIN, Position=2, Run=c(8,14,20,26,31,37), view=FALSE, LType="OSL", force.matrix=TRUE) matplot(obj_pickBIN$BINdata[[1]][,1], obj_pickBIN$BINdata[[1]][,-1], main="Regenerative-dose decay curves", xlab="Stimulation time (s)", ylab="Photon counts", type="l", log="xy")
### Example 1 (visualize decay curves for Position=2): data(BIN) obj_pickBIN <- pickBINdata(BIN, Position=2, view=FALSE, LType="OSL", force.matrix=TRUE) matplot(obj_pickBIN$BINdata[[1]][,1], obj_pickBIN$BINdata[[1]][,-1], main="Decay curves", xlab="Stimulation time (s)", ylab="Photon counts", type="l", log="xy") ### Example 2 (visualize test-dose decay curves for Position=2): obj_pickBIN <- pickBINdata(BIN, Position=2, Run=c(5,11,17,23,29,34,40), view=FALSE, LType="OSL", force.matrix=TRUE) matplot(obj_pickBIN$BINdata[[1]][,1], obj_pickBIN$BINdata[[1]][,-1], main="Test-dose decay curves", xlab="Stimulation time (s)", ylab="Photon counts", type="l", log="xy") ### Example 3 (visualize regenerative-dose decay curves for Position=2): obj_pickBIN <- pickBINdata(BIN, Position=2, Run=c(8,14,20,26,31,37), view=FALSE, LType="OSL", force.matrix=TRUE) matplot(obj_pickBIN$BINdata[[1]][,1], obj_pickBIN$BINdata[[1]][,-1], main="Regenerative-dose decay curves", xlab="Stimulation time (s)", ylab="Photon counts", type="l", log="xy")
Selecting SAR data sets (growth curves) in a batch model according to specified rejection criteria.
pickSARdata(obj_analyseBIN, model = "gok", origin = FALSE, weight = TRUE, trial = TRUE, nofit.rgd = NULL, Tn.above.3BG = TRUE, TnBG.ratio.low = NULL, rseTn.up = NULL, FR.low = NULL, rcy1.range = NULL, rcy2.range = NULL, rcy3.range = NULL, rcp1.up = NULL, rcp2.up = NULL, fom.up = NULL, rcs.up = NULL, use.se = TRUE, norm.dose = NULL, outpdf = NULL, outfile = NULL)
pickSARdata(obj_analyseBIN, model = "gok", origin = FALSE, weight = TRUE, trial = TRUE, nofit.rgd = NULL, Tn.above.3BG = TRUE, TnBG.ratio.low = NULL, rseTn.up = NULL, FR.low = NULL, rcy1.range = NULL, rcy2.range = NULL, rcy3.range = NULL, rcp1.up = NULL, rcp2.up = NULL, fom.up = NULL, rcs.up = NULL, use.se = TRUE, norm.dose = NULL, outpdf = NULL, outfile = NULL)
obj_analyseBIN |
list(required): an object of S3 class "analyseBIN" produced by |
model |
character(with default): model used for growth curve fitting, see fitGrowth for available models |
origin |
logical(with default): logical value indicating if the growth curve should be forced to pass the origin |
weight |
logical(with default): logical value indicating if the growth curve should be fitted using a weighted procedure, see function fitGrowth for details |
trial |
logical(with default): logical value indicating if the growth curve should be fitted using other models if the given model fails, see function fitGrowth for details |
nofit.rgd |
integer(optional): regenerative doses that will not be used during the fitting.
For example, if |
Tn.above.3BG |
logical(with default): logical value indicating if aliquot (grain) with Tn below 3 sigma BG should be rejected |
TnBG.ratio.low |
numeric(optional): lower limit on ratio of initial Tn signal to BG |
rseTn.up |
numeric(optional): upper limit on relative standard error of Tn in percent |
FR.low |
numeric(optional): lower limit on fast ratio of Tn |
rcy1.range |
vector(optional): a two-element vector indicating the lower and upper limits on recycling ratio 1,
Example: |
rcy2.range |
vector(optional): a two-element vector indicating the lower and upper limits on recycling ratio 2 |
rcy3.range |
vector(optional): a two-element vector indicating the lower and upper limits on recycling ratio 3 |
rcp1.up |
numeric(optional): upper limit on recuperation 1 (i.e., ratio of the |
rcp2.up |
numeric(optional): upper limit on recuperation 2 (i.e., ratio of the |
fom.up |
numeric(optional): upper limit on figure of merit (FOM) values of growth curves in percent |
rcs.up |
numeric(optional): upper limit on reduced chi-square (RCS) values of growth curves |
use.se |
logical(with default): logical value indicating if standard errors of values should be used during application of rejection criteria |
norm.dose |
numeric(optional): dose value used for SAR data set re-normalisation,
for example, if |
outpdf |
character(optional): if specified, results of growth curve fitting will be written to
a PDF file named |
outfile |
character(optional): if specified, SAR data related quantities will be written
to a CSV file named |
Return an invisible list that contains the following elements:
LMpars |
a list containing optimized parameters of growth curves of selected SAR data sets |
SARdata |
a data.frame containing selected SAR data sets |
norm.SARdata |
a data.frame containing re-normalised SAR data sets, |
agID |
aliquot or grain ID (i.e., |
summary.info |
a summary of the SAR data selection |
analyseBINdata; fitGrowth; lsNORM; calSARED
# Not run. # data(BIN) # obj_pickBIN <- pickBINdata(BIN, Position=1:48, Grain=0, # LType="OSL", view=FALSE) # obj_analyseBIN <- analyseBINdata(obj_pickBIN, nfchn=3, nlchn=20) # pickSARdata(obj_analyseBIN, model="gok", fom.up=3, outpdf="SARdata")
# Not run. # data(BIN) # obj_pickBIN <- pickBINdata(BIN, Position=1:48, Grain=0, # LType="OSL", view=FALSE) # obj_analyseBIN <- analyseBINdata(obj_pickBIN, nfchn=3, nlchn=20) # pickSARdata(obj_analyseBIN, model="gok", fom.up=3, outpdf="SARdata")
Drawing a pseudo (simplified) radial plot.
psRadialPlot(EDdata, addsigma = 0, dose = NULL, zmin = NULL, zmax = NULL, ntick = 6, digits = 2, pcolor = "blue", psize = 1, rg = 2, zlabel = "De (Gy)")
psRadialPlot(EDdata, addsigma = 0, dose = NULL, zmin = NULL, zmax = NULL, ntick = 6, digits = 2, pcolor = "blue", psize = 1, rg = 2, zlabel = "De (Gy)")
EDdata |
matrix(required): a two-column matrix (i.e., equivalent dose values and |
addsigma |
numeric(with default): additional uncertainty |
dose |
vector(optional): dose population(s) to be drawn |
zmin |
numeric(with default): lower limit on z-axis |
zmax |
numeric(with default): upper limit on z-axis |
ntick |
integer(with default): desired number of ticks in z-axis |
digits |
integer(with default): number of decimal places or significant digits for values shown in z-axis |
pcolor |
character(with default): color of a data point, input colors() to see more available colors |
psize |
numeric(with default): size of a data point |
rg |
integer(with default): range of a dose population, |
zlabel |
character(with default): title for the z-axis |
Function psRadialPlot is used for drawing a simplified radial plot in which the z-axis is a straight line. The pseudo radial plot is easier to construct compared to the regular radial plot. This function can be adopted to display estimates that have different error estimates in any field of the analytical sciences. Note that the function handles datasets in log-scale, so any minus observation is not allowed.
Return a pseudo radial plot
Galbraith RF, 1988. Graphical display of estimates having differing standard errors. Technometrics, 30(3): 271-281.
Galbraith RF, 1994. Some applications of radial plots. Journal of the American Statistical Association, 89(428): 1232-1242.
Galbraith RF, 2010. On plotting OSL equivalent doses. Ancient TL, 28(1): 1-10.
Galbraith RF, Roberts RG, Laslett GM, Yoshida H, Olley JM, 1999. Optical dating of single grains of quartz from Jinmium rock shelter, northern Australia. Part I: experimental design and statistical models. Archaeometry, 41(2): 339-364.
data(EDdata) psRadialPlot(EDdata$al3, addsigma=0.10, dose=c(39.14, 51.27, 79.14), digits=1, zmin=30, zmax=100, ntick=10, rg=1)
data(EDdata) psRadialPlot(EDdata$al3, addsigma=0.10, dose=c(39.14, 51.27, 79.14), digits=1, zmin=30, zmax=100, ntick=10, rg=1)
Depending on the specified number of components, this function performs statistical age models analysis reviewed in Galbraith and Roberts (2012) dynamically using a Maximum Likelihood Estimation method. Age models that can be applied include: central age model (CAM), minimum age model (MAM), and finite mixture age model (FMM).
RadialPlotter(EDdata, ncomp = 0, addsigma = 0, maxcomp = 6, algorithm = c("port","lbfgsb"), plot = TRUE, pcolor = "blue", psize = 1.5, kratio = 0.3, zscale = NULL)
RadialPlotter(EDdata, ncomp = 0, addsigma = 0, maxcomp = 6, algorithm = c("port","lbfgsb"), plot = TRUE, pcolor = "blue", psize = 1.5, kratio = 0.3, zscale = NULL)
EDdata |
matrix(required): a two-column matrix (i.e., equivalent dose values and |
ncomp |
integer(with default): number of components, |
addsigma |
numeric(with default): additional uncertainty, i.e., the sigmab value |
maxcomp |
integer(with default): maximum number of components in FMM |
algorithm |
character(with default): algorithm used for optimizing MAM, |
plot |
logical(with default): draw a radial plot or not |
pcolor |
character(with default): color of a data point, input colors() to see more available colors |
psize |
numeric(with default): size of a data point |
kratio |
numeric(with default): argument controlling the shape of zscale |
zscale |
vector(optional): argument controlling the scale of z-axis. |
Both CAM and FMM are fitted using a iterative Maximum Likelihood Estimation procedure outlined by Galbraith (1988), while MAM can be estimated using either the "L-BFGS-B" algorithm (R function optim in package stats) or the "port" algorithm (R function nlminb in package stats).
Return an object of S3 class "RadialPlotter"
that contains the following elements:
pars |
optimized parameters, the names of CAM parameters are |
maxlik |
optimized maximum logged likelihood value |
bic |
calculated Bayesian Information Criterion (BIC) value |
Function RadialPlotter was given the same name as the Java package RadialPlotter written by Pieter Vermeesch (Vermeesch, 2009). Note that this function fits a model in log-scale, hence any minus equivalent dose value is not allowed, and that the procedure will return an error if any standard error of a parameter cannot be estimated by numerical difference-approximation.
The original S code for drawing a radial plot was written by Rex Galbraith and was transformed to R by Sebastian Kreutzer. The code for drawing radial plot in this function was modified from package Luminescence written by Kreutzer et al. (2012). We thank Dr Rex Galbraith for his permission to modify and bundle the code to this function. We also thank Dr Silke Schmidt, Dr Helena Rodnight, Dr Xian-Jiao Ou, and Dr Amanda Keen-Zebert for providing published OSL data sets to test this routine.
This function only considered the optimization of statistical age models (including CAM, MAM, and FMM) in a log-scale and will not be updated in future. The newly developed function optimSAM allows the optimzation of age models (including COM, MAM, MXAM, and FMM) in either log- or unlog-scale, and the accompanied function sensSAM allows the optimization of these age models with a number of different sizes of additional uncertainty (sigmab).
Galbraith RF, 1988. Graphical display of estimates having differing standard errors. Technometrics, 30(3): 271-281.
Galbraith RF, 1990. The radial plot: Graphical assessment of spread in ages. International Journal of Radiation Applications and Instrumentation. Part D. Nuclear Tracks and Radiation Measurements, 17(3): 207-214.
Galbraith RF, Green P, 1990. Estimating the component ages in a finite mixture. International Journal of Radiation Applications and Instrumentation. Part D. Nuclear Tracks and Radiation Measurements, 17: 197-206.
Galbraith RF, Laslett GM, 1993. Statistical models for mixed fission track ages. Nuclear Tracks And Radiation Measurements, 21(4): 459-470.
Galbraith RF, 1994. Some applications of radial plots. Journal of the American Statistical Association, 89(428): 1232-1242.
Galbraith RF, Roberts RG, Laslett GM, Yoshida H, Olley JM, 1999. Optical dating of single grains of quartz from Jinmium rock shelter, northern Australia. Part I: experimental design and statistical models. Archaeometry, 41(2): 339-364.
Galbraith RF, 2005. Statistics for fission track analysis. Chapman & Hall/CRC Press.
Galbraith RF, 2010. On plotting OSL equivalent doses. Ancient TL, 28(1): 1-10.
Galbraith RF, Roberts RG, 2012. Statistical aspects of equivalent dose and error calculation and display in OSL dating: an overview and some recommendations. Quaternary Geochronology, 11: 1-27.
Further reading
Duller GAT, 2008. Single-grain optical dating of Quaternary sediments: why aliquot size matters in luminescence dating. Boreas, 37(4): 589-612.
Kreutzer S, Schmidt C, Fuchs MC, Dietze M, Fischer M, Fuchs M, 2012. Introducing an R package for luminescence dating analysis. Ancient TL, 30(1): 1-8. Software is freely available at https://CRAN.R-project.org/package=Luminescence.
Rodnight H, 2008. How many equivalent dose values are needed to obtain a reproducible distribution? Ancient TL, 26(1): 3-10.
Rodnight H, Duller GAT, Wintle AG, Tooth S, 2006. Assessing the reproducibility and accuracy of optical dating of fluvial deposits. Quaternary Geochronology, 1(2): 109-120.
Schmidt S, Tsukamoto S, Salomon E, Frechen M, Hetzel R, 2012. Optical dating of alluvial deposits at the orogenic front of the andean precordillera (Mendoza, Argentina). Geochronometria, 39(1): 62-75.
Vermeesch P, 2009. RadialPlotter: a Java application for fission track, luminescence and other radial plots. Radiation Measurements, 44: 409-410. Software is freely available at https://www.ucl.ac.uk/~ucfbpve/radialplotter/.
Peng J, Li B, Jacobs Z, 2020. Modelling heterogeneously bleached single-grain equivalent dose distributions: Implications for the reliability of burial dose determination. Quaternary Geochronology, 60: 101108.
Peng J, Li B, Jacobs Z, Gliganic LA, 2023. Optical dating of sediments affected by post-depositional mixing: Modelling, synthesizing and implications. Catena, 232: 107383.
mcMAM; mcFMM; dbED; psRadialPlot; EDdata; optimSAM; sensSAM
data(EDdata) # Find out the appropriate number of components # in FMM and fit automatically. RadialPlotter(EDdata$al3,zscale=seq(24,93,7)) # Fit MAM3 (not run). # RadialPlotter(EDdata$gl11,ncomp=-1,zscale=seq(20,37,3))
data(EDdata) # Find out the appropriate number of components # in FMM and fit automatically. RadialPlotter(EDdata$al3,zscale=seq(24,93,7)) # Fit MAM3 (not run). # RadialPlotter(EDdata$gl11,ncomp=-1,zscale=seq(20,37,3))
Summarizing distributions of parameters simulated from statistical age models using a Markov Chain Monte Carlo method.
reportMC(obj, burn = 10000, thin = 5, plot = TRUE, outfile = NULL, ...)
reportMC(obj, burn = 10000, thin = 5, plot = TRUE, outfile = NULL, ...)
obj |
list(required): an object of S3 class |
burn |
integer(with default): number of iterations (i.e., the initial, non-stationary |
thin |
integer(with default): take every |
plot |
logical(with default): plot the MCMC output or not |
outfile |
character(optional): if specified, simulated parameters will be written to a CSV file named |
... |
do not use |
Function reportMC summarizes the output of a Markov Chain (the mean values, the standard deviations, the mode values, and the 2.5, 25, 50, 75, 97.5 quantiles of the simulated parameters). The initial i (burn=i
) samples may have been affected by the inital state and has to be discarded ("burn-in"). Autocorrelation of simulated samples can be reduced by taking every j-th (thin=j
) iteration ("thining").
Return a list that contains the following elements:
pars |
means, standard deviations, and modes of simulated parameters |
quantile |
quantiles of simulated parameters |
maxlik |
maximum logged likelihood values calculated using the means and modes of simulated parameters |
bic |
Bayesian Information Criterion (BIC) values calculated using the means and modes of simulated parameters |
Lunn D, Jackson C, Best N, Thomas A, Spiegelhalter D, 2013. The BUGS book: a practical introduction to bayesian analysis. Chapman & Hall/CRC Press.
Gelman A, Carlin JB, Stern HS, Dunson DB, Vehtari A, Rubin DB, 2013. Bayesian data analysis. Chapman & Hall/CRC Press.
Peng J, Dong ZB, Han FQ, 2016. Application of slice sampling method for optimizing OSL age models used for equivalent dose determination. Progress in Geography, 35(1): 78-88. (In Chinese).
SAR data sets for individual aliquots from the "later" group of sample HF11 from Haua Fteah cave, Libya (Li et al., 2016).
data(SARdata)
data(SARdata)
A data.frame with 840 observations containing the following 5 variables:
aliquot (grain) number
SAR cycles
regenerative doses
OSL signals
standard error of OSL signals
Li B, Jacobs Z, Roberts RG, 2016. Investigation of the applicability of standardised growth curves for OSL dating of quartz from Haua Fteah cave, Libya. Quaternary Geochronology, 35: 1-15.
fitGrowth; lsNORM; calSGCED; as_analyseBIN
# Not run. # data(SARdata) # head(SARdata)
# Not run. # data(SARdata) # head(SARdata)
Re-scaling sensitivity-corrected natural-dose signals according to the "global standardised growth curve" (gSGC) method suggested by Li et al. (2015, 2016).
scaleSGCN(obj_analyseBIN, SGCpars, model, origin, SAR.Cycle, Tn.above.3BG = TRUE, TnBG.ratio.low = NULL, rseTn.up = NULL, FR.low = NULL, use.se = TRUE, outfile = NULL)
scaleSGCN(obj_analyseBIN, SGCpars, model, origin, SAR.Cycle, Tn.above.3BG = TRUE, TnBG.ratio.low = NULL, rseTn.up = NULL, FR.low = NULL, use.se = TRUE, outfile = NULL)
obj_analyseBIN |
list(required): an object of S3 class "analyseBIN" produced by |
SGCpars |
vector(required): optimized parameters of the SGC obtained using function fitGrowth or lsNORM |
model |
character(required): fitting model used for obtaining |
origin |
logical(required): logical value indicating if established SGC passes the origin |
SAR.Cycle |
character(required): a two-element character vector containing SAR cycles used for
natural-dose signal re-scaling. Example: |
Tn.above.3BG |
logical(with default): logical value indicating if aliquot (grain) with Tn below 3 sigma BG should be rejected |
TnBG.ratio.low |
numeric(optional): lower limit on ratio of initial Tn signal to BG |
rseTn.up |
numeric(optional): upper limit on relative standard error of Tn in percent |
FR.low |
numeric(optional): lower limit on fast ratio of Tn |
use.se |
logical(with default): logical value indicating if standard errors of values should be used during application of rejection criteria |
outfile |
character(optional): if specified, scaled SGC data related quantities will be written to a CSV file named |
Sensitivity-corrected natural-dose signals are re-scaled according to Eqn.(10) of Li et al. (2015).
Return an invisible list that contains the following elements:
scale.Ltx |
scaled natural-dose signals and associated standard errors |
agID |
aliquot (grain) ID of scaled natural-dose signals |
Li B, Roberts RG, Jacobs Z, Li SH, 2015. Potential of establishing a "global standardised growth curve" (gSGC) for optical dating of quartz from sediments. Quaternary Geochronology, 27: 94-104.
Li B, Jacobs Z, Roberts RG, 2016. Investigation of the applicability of standardised growth curves for OSL dating of quartz from Haua Fteah cave, Libya. Quaternary Geochronology, 35: 1-15.
# Not run. data(SARdata) gSGCpars <- c(137.440874251, 0.007997863, 2.462035263, -0.321536177) scaleSGCN(as_analyseBIN(SARdata), SGCpars=gSGCpars, model="gok", origin=FALSE, SAR.Cycle=c("N","R3"))
# Not run. data(SARdata) gSGCpars <- c(137.440874251, 0.007997863, 2.462035263, -0.321536177) scaleSGCN(as_analyseBIN(SARdata), SGCpars=gSGCpars, model="gok", origin=FALSE, SAR.Cycle=c("N","R3"))
Estimate of the parameters of a statistical age model using a number of sigmab values.
sensSAM(EDdata, model, sigmaVEC = NULL, iflog = TRUE, maxcomp = 8, plot = TRUE, outfile = NULL)
sensSAM(EDdata, model, sigmaVEC = NULL, iflog = TRUE, maxcomp = 8, plot = TRUE, outfile = NULL)
EDdata |
matrix(required): a two-column matrix (i.e., equivalent dose values and |
model |
character(with default): the fitting model, one of |
sigmaVEC |
vector(with default): a series of sigmab values that will be used as inputs for the model. For example, |
iflog |
logical(with default): transform equivalent dose values to log-scale or not |
maxcomp |
integer(with default): the maximum number of components in the FMM |
plot |
logical(with default): logical value indicating if the results should be plotted |
outfile |
character(optional): if specified, the results will be written to a CSV file named |
Return an invisible list that contains the following elements:
pars |
a list that contains the optimized parameters for each sigmab value |
mat |
a matrix that contains the optimized parameters, the maximum logged likelihood value, and the corresponding Bayesian Information Criterion (BIC) value |
Peng J, Li B, Jacobs Z, 2020. Modelling heterogeneously bleached single-grain equivalent dose distributions: Implications for the reliability of burial dose determination. Quaternary Geochronology, 60: 101108.
Peng J, Li B, Jacobs Z, Gliganic LA, 2023. Optical dating of sediments affected by post-depositional mixing: Modelling, synthesizing and implications. Catena, 232: 107383.
RadialPlotter; EDdata; optimSAM
# Not run. # data(EDdata) # sensSAM(EDdata$al3, model="mam4", iflog=TRUE)
# Not run. # data(EDdata) # sensSAM(EDdata$al3, model="mam4", iflog=TRUE)
CW-OSL and LM-OSL decay curves.
data(Signaldata)
data(Signaldata)
A list that contains CW-OSL and LM-OSL decay curves:
a number of CW-OSL decay curves of a sand sample from the Tengger Desert in northern china (Peng and Han, 2013)
a LM-OSL decay curve from Li and Li (2006)
Li SH, Li B, 2006. Dose measurement using the fast component of LM-OSL signals from quartz. Radiation Measurements, 41(5): 534-541.
Peng J, Han FQ, 2013. Selections of fast-component OSL signal using sediments from the south edge of Tengger Desert. Acta Geoscientica Sinica, 34(6): 757-762.
# Not run. # data(Signaldata) # names(Signaldata)
# Not run. # data(Signaldata) # names(Signaldata)