Using a known-age sample to model systematic offset in OxCal

12 views
Skip to first unread message

Lu Wen Liu

unread,
Dec 16, 2025, 5:15:30 AM (6 days ago) Dec 16
to OxCal

Hi OxCal Group,

I am currently using OxCal to calibrate a phase consisting of 15 terrestrial samples using IntCal20. In addition, I have one independent control sample from the Mary Rose shipwreck with a known historical age (expected conventional age; 311 BP).

The measured radiocarbon age of this sample is 344 ± 18 BP. Based on this discrepancy, I am considering whether it is appropriate to model this difference as a systematic measurement offset, and then apply this correction to the other 15 terrestrial samples in the phase.

At present, I am considering implementing the model using Offset() as follows:

Plot() 
 Offset("MaryRose_lab_offset", 33, 18); 
 Outlier_Model("General", T(5), U(0,4), "t"); 
 Sequence()
 { 
  Boundary("Start 8a"); 
  Phase("8a") 
  { 
   R_Date("X_01", 1717, 22)
   { 
    Outlier(0.05); 
   };
   . 
   (omitted for brevity) 
   . 
  };
  Boundary("End 8a"); 
 }; 
};

I would be very grateful for any advice on whether this is an appropriate way to account for a potential systematic offset when only a single control sample with known age is available, or whether an alternative modeling approach would be preferable.

For context, I am an MSc Archaeology student at the University of Oxford, and this work forms part of a summative assessment. I hope it is acceptable to ask this question here.

Many thanks in advance for your time and help.

Christopher Ramsey

unread,
Dec 16, 2025, 5:30:19 AM (6 days ago) Dec 16
to OxCal group
If you wish to allow for offsets then the Delta_R function is the best one to use.

In this case though I would not assume that all of the dates in a series are offset because a control sample is not at the mean expected value. This sample is <2sigma away from the expected value (which itself has an uncertainty) and so this is likely just be chance: one in twenty such measurements would be even beyond 2 sigma. The radiocarbon age measurements will be against several primary standards (typically New Oxalic) each measured to a higher precision than the secondary standard and effectively you would be replacing those multiple primary standards with a single secondary one in your age estimate.

Also, although the expected atmospheric level (from IntCal) may be ~311 for the date of the Mary Rose wreck, some of the bones from the wreck are pig bones which may have a small marine component to their diet - so unless you are actually dating the Mary Rose yourself, any offsets there were in these bones are unlikely to be reproduced in your unknown samples.

Best wishes

Christopher
> --
> You received this message because you are subscribed to the Google Groups "OxCal" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to oxcal+un...@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/oxcal/10dce535-3520-49db-9749-2a78c04bbc28n%40googlegroups.com.

Lu Wen Liu

unread,
Dec 16, 2025, 12:11:17 PM (6 days ago) Dec 16
to OxCal

Dear Christopher,

Thank you very much for the detailed explanation regarding the roles of primary and secondary standards, and for clarifying the potential offsets associated with the pig bones from the Mary Rose due to dietary effects. I found this distinction extremely helpful.

Many thanks again for your guidance.

Best wishes,
Lu-Wen Liu

Christopher Ramsey 在 2025年12月16日 星期二上午10:30:19 [UTC] 的信中寫道:

Erik Marsh

unread,
Dec 17, 2025, 7:23:48 AM (5 days ago) Dec 17
to OxCal
Hi Lu-Wen Liu,
I would take a look at the sequence of when the samples were harvested. For example, if you sampled wood from the ship's hull, then that tree was probably felled before the ship was launched in 1511 (...or during a refit. Apparently this ship required 600 large oaks, which would have been quite old, perhaps with wood that grew centuries before the ship was launched). If you sampled pig bones, the date is for the pig's death, which should be slightly prior to the ship's sinking on 19 July 1545 (I recommend using AD dates in the code and not doing the calculation manually). I would use the date for sinking as the final boundary in the sequence; all other dates should be prior to this. One way or another, I think you will get a better result by adding in a few dates from the ship's construction history and a sequence of sample deaths (even if grouped in phases with an unknown internal order), not assuming all dates should be around 311 uncal BP.

I would try this first, which hopefully will sort things out without relying too much on outlier models or offsets (I would guess these have fairly minor effects).
Hope this helps
Erik

Sequence()
{
Boundary("Start construction materials");
R_Date("Wood used in original construction",500,30);
C_Date("Mary Rose launched", AD(1511.5,0.1));
R_Date("Pig bones",344,18);
Boundary(C_Date("Mary Rose Sinks", AD(1545.5476)));
};
Reply all
Reply to author
Forward
0 new messages