Earlier this month, Anders Fischer and I published a paper ( https://doi.org/10.1016/j.quascirev.2024.108745 ) which contains an embarrassing error in a fragment of OxCal code (Appendix B). Because we wanted to illustrate the potential impact on chronology of splitting the marine environment into two biotopes, I defined two different Delta_R values for the Marine20 calibration curve, called pelagic and eelgrass, and used the Mix_Curves function twice for each human bone date. Unfortunately, I got this part of the code back-to-front, which became obvious when I tried to apply the same method to some cases with more terrestrial diets; the published code over-corrected their dates. Fortunately, my coding error has a negligible impact on this paper, but for other applications it is quite misleading.
I soon worked out that the code should have been, for example:
Mix_Curves("ABC-12345
marine diet", "pelagic", "eelgrass", 80, 10); R_Date("ABC-12345", 6789, 100); |
The first Mix_Curves creates a bespoke marine calibration curve for sample ABC-12345, using both Delta_Rs. Here, the 80±10% eelgrass is my estimate of how much of the marine component of diet was derived from the eelgrass biotope, not my estimate of contribution of the eelgrass biotope to the overall diet. The second Mix_Curves defines the mixture between the bespoke marine curve and the terrestrial (IntCal20) calibration curve; 25±8% is the estimated share of overall diet derived from terrestrial sources. Using synthetic 14C ages, I checked that this code gives accurate calibrations over a wide range of values for both mixtures (from 10% to 90% marine: terrestrial, and from 20% to 80% pelagic: eelgrass). Whether the Delta_R values and diet reconstructions are realistic is a different problem, but this episode reminded me that it is always a good idea to check OxCal model output using synthetic or simulated chronometric data, before going to press.
I hope someone finds this useful!
John