By default, Bacon will perform millions of MCMC iterations for each age-model run, although only a fraction of these will be stored. In most cases the remaining MCMC iterations will be well mixed (the upper left panel of the fit of the iterations shows no strange features such as sudden systematic drops or rises). However if the iterations seem not well mixed, or if too few remain (say less than a few hundred), then you could check the Gelman and Rubin Reduction Factor1. Too high differences (high Factors) between runs indicate poor MCMC mixing. Robust MCMC mixing is indicated by a Gelman and Rubin Reduction factor below the 1.05 safety threshold.
For example, try the default core, running it five times with a very
small sample size of ssize=100
:
Baconvergence("MSB2K", thick=5, runs=5, ssize=100, coredir=tempfile())
Did 5 Bacon runs.
Gelman and Rubin Reduction Factor 1.10078680880009 (smaller and closer to 1 is better).
Probably not a robust MCMC run! Too much difference between runs, above the 1.05 threshold. Increase sample size?
Once a robust, reliable and realistic age-depth model has been
produced, the fun starts. Greyscale plots for example can be used to
show not just one age-depth curve but the entire MCMC run output. If
pollen or other ‘proxies’ have been analysed across a range of depths of
your core, then these proxies can be plotted on the time-scale as
grey-scale ‘ghosts’ where less certain sections are plotted in lighter
grey than more certain sections. Bacon looks for a file in the core’s
folder, starting with the core’s name and ending in
_proxies.csv
, e.g.,
Bacon_runs/MSB2K/MSB2K_proxies.csv
. This file should have
columns separated by commas, with the first column being the depth,
followed by columns for the proxies. The first row should contain the
names of the columns. To produce a proxy ghost of the seventh proxy of
MSB2K:
proxy.ghost(7)
proxy.ghost graph of the 7th proxy in core MSB2K
Ghost graphs can also be produced for the accumulation rate
throughout the core (accrate.depth.ghost
) or over time
(accrate.age.ghost
):
accrate.depth.ghost()
accrate.age.ghost()
ghost-graph of the accumulation rate of core MSB2K against depth
ghost-graph of the accumulation rate of core MSB2K over time
R provides a very versatile environment to query the age-model output. To get the age estimate of any single core depth:
Bacon.hist(20)
##
|
| | 0%
## mean (red): 4844.4 cal yr BP, median (green): 4839.4 cal yr BP
## 95% range (blue): 4763 to 4937.9 cal yr BP
You can also store the iterations of the age estimates of that depth in a new variable and then query it:
<- Bacon.Age.d(20)
a.d20 summary(a.d20)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4678 4823 4839 4844 4861 4997
hist(a.d20)
Or calculate how much time has passed between 30 and 20 cm depth:
<- Bacon.Age.d(30)
a.d30 <- Bacon.Age.d(20)
a.d20 summary(a.d30-a.d20)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 237.6 399.8 440.2 439.0 476.8 707.6
hist(a.d30-a.d20)
Accumulation rates at specific depths or ages can also be investigated:
<- accrate.depth(20)
acc.d20 summary(acc.d20)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.1256 8.4033 16.2756 20.9620 31.2461 83.1302
<- accrate.age(4500)
acc.a4500 summary(acc.a4500)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 2.08 13.77 20.30 22.91 28.20 63.74 3207
Brooks, S.P., Gelman, A., 1998. General methods for monitoring convergence of iterative simulations. Journal of Computational and Graphical Statistics 7, 434-455↩︎