Calculating and interpreting Difference

34 views
Skip to first unread message

Chris Chinnock (Chris)

unread,
Nov 6, 2025, 11:08:46 AMNov 6
to OxCal
Hi all, 

I am trying to calculate the difference between a few select parameters in a model I am building for a range of Bronze Age activity across a particular landscape I am looking at. I think I am happy with the way the model is constructed (critique welcome). However, when I run the model I am getting results for the difference which extend from a negative to a positive number or in some cases just a negative range. A I right in thinking that in these cases this simply allows for the possibility that there is no gap between the two selected parameters? 

In the case below I have tried to calculate the difference between the Start Boundary of RD4 and the Start Boundary of S1. There should, I think be a gap between these two parameters given that their modelled ranges do not overlap at 95%. However, when I run the model I am getting entirely negative ranges. 

Any help greatly appreciated.

Chris 

 Plot()
 {
  Sequence()
  {
   Boundary("Start Early Prehistoric");
   Phase("Early Prehistoric")
   {
    Sequence("Isolated cremation burials")
    {
     Boundary("Start isolated crems");
     Phase("Isolated cremation burials use")
     {
      R_Date("SUERC-132230 (4173)",3578,34);
      R_Date("SUERC-132232 (4062)",3556,24);
      R_Date("SUERC-132225 (6023)",3556,23);
      R_Date("SUERC-132220 (6283)",3548,23);
      Span("Isolated crem use");
     };
     Boundary("End isolated crems");
    };
    Sequence("Barrow RD4")
    {
     Boundary("Start RD4");
     R_Date("Beta-538150 (4127)", 3620, 30);
     Phase("Barrow RD4 use")
     {
      R_Date("Beta-538154 (4469)", 3590, 30);
      R_Date("Beta-538153 (4269)", 3260, 30);
     };
     Boundary("End RD4");
    };
    Sequence("Other barrows")
    {
     Boundary("Start Other barrows");
     Phase("Other barrows use")
     {
      After("Residual")
      {
       R_Date("Beta-585633 (8116)", 5510, 30);
      };
      R_Date("Beta-585628 (9027)", 2440, 30)
      {
       Outlier();
      };
      R_Date("Beta-585634 (8150)", 3530, 30);
      Span("Other barrow use");
     };
     Boundary("End Other barrows");
    };
    Sequence("Hollow S1")
    {
     Boundary("Start S1");
     Phase("Hollow [4334] S1 use")
     {
      R_Date("SUERC-132213 (4279)",3486,23);
      R_Date("SUERC-132210 (4432)",3408,23);
      R_Date("Beta-538151 (4388)", 3370, 30);
      R_Date("SUERC-132226 (4337)",3363,24);
      R_Date("SUERC-132211 (4448)",3453,23);
      R_Date("SUERC-132212 (4412)",3347,21);
      R_Date("SUERC-132204 (4562)",3329,19);
      R_Date("SUERC-132221 (4453)",3284,25);
      R_Date("SUERC-132242 (4467)",589,21)
      {
       Outlier();
      };
      Span("S1 use");
     };
     R_Date("SUERC-132233 (4345)",3335,23);
     Boundary("End S1");
    };
    Sequence("Hollow S4")
    {
     Boundary("Start S4");
     Phase("Hollow [4368] S4 use")
     {
      R_Date("SUERC-132231 (4557)",3380,24);
      R_Combine("B4139")
      {
       R_Date("SUERC-132234 (6089)",3370,25);
       R_Date("SUERC-132235 (6092)",3323,21);
      };
      R_Date("SUERC-132203 (6005)",3369,23);
      R_Date("SUERC-132206 (6112)",3368,23);
      R_Date("Beta-538149 (6142)", 3320, 30);
      R_Date("SUERC-132215 (4577)",3320,20);
      R_Date("SUERC-132214 (4552)",3272,22);
      R_Date("SUERC-132222 (6094)",3226,25);
      Span("S4 use");
     };
     R_Date("SUERC-132224 (4168)",3258,25);
     Boundary("End S4");
    };
    Sequence("Enclosure E1")
    {
     Boundary("Start E1");
     Phase("Enclosure E1 use")
     {
      R_Date("Beta-585631 (3165)", 3020, 30);
     };
     Boundary("End E1");
    };
    Span("Early prehistoric activity");
   };
   Boundary("End Early Prehistoric ");
  };
  Order()
  {
   Date("=Start E1");
   Date("=End E1");
   Date("=Start isolated crems");
   Date("=End isolated crems");
   Date("=Start RD4");
   Date("=End RD4");
   Date("=Start Other barrows");
   Date("=End Other barrows");
   Date("=Start S1");
   Date("=End S1");
   Date("=Start S4");
   Date("=End S4");
  };
  Phase("Gaps")
  {
   Difference("Isolated crems/S1","=End isolated crems","=Start S1");
   Difference("RD4/Isolated crems","=Start RD4","=Start isolated crems");
   Difference("RD4/S1","=Start RD4","=Start S1");
  };
 };

Christopher Ramsey

unread,
Nov 6, 2025, 11:24:31 AMNov 6
to OxCal group
Dear Chris

On the difference commands - a couple of points:

1. The Difference command does not need the = sign to work because it assumes a cross reference anyway - so the last three lines could just be:

Difference("Isolated crems/S1","End isolated crems","Start S1");
Difference("RD4/Isolated crems","Start RD4","Start isolated crems");
Difference("RD4/S1","Start RD4","Start S1");

2. To understand how Difference works you need to think of the events on a time line so:

Difference("C","A","B");

implies C=A-B and will give positive values if A-B is positive which means A is after B. In your case "End isolated crems" is mostly earlier than "Start S1" and so will give negative values as you get. If you want to know how much "Start S1" is after "End isolated crems" that would be:

Difference("Isolated crems/S1","Start S1","End isolated crems");

In the end this comes down to how time is modelled in OxCal - this is as a time line with greater values being later - not in terms of age. This is why Sequences are entered oldest first etc.

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/f5674646-d2a3-4c70-ab08-711927ae0408n%40googlegroups.com.

Christopher Ramsey

unread,
Nov 6, 2025, 11:24:47 AMNov 6
to OxCal group
Dear Chris

On the difference commands - a couple of points:

1. The Difference command does not need the = sign to work because it assumes a cross reference anyway - so the last three lines could just be:

Difference("Isolated crems/S1","End isolated crems","Start S1");
Difference("RD4/Isolated crems","Start RD4","Start isolated crems");
Difference("RD4/S1","Start RD4","Start S1");

2. To understand how Difference works you need to think of the events on a time line so:

Difference("C","A","B");

implies C=A-B and will give positive values if A-B is positive which means A is after B. In your case "End isolated crems" is mostly earlier than "Start S1" and so will give negative values as you get. If you want to know how much "Start S1" is after "End isolated crems" that would be:

Difference("Isolated crems/S1","Start S1","End isolated crems");

In the end this comes down to how time is modelled in OxCal - this is as a time line with greater values being later - not in terms of age. This is why Sequences are entered oldest first etc.

Best wishes

Christopher

> On 6 Nov 2025, at 16:08, 'Chris Chinnock (Chris)' via OxCal <ox...@googlegroups.com> wrote:
>

Chris Chinnock (Chris)

unread,
Nov 7, 2025, 6:31:18 AMNov 7
to OxCal
Hi Chris, 

Thanks for the very helpful response. I have re-run the model and that does seem to have done the trick. I still have some negative numbers at the lower end of the 95% range. From an interpretative perspective am I right in thinking that this signifies the possibility of an overlap between the two parameters in question? Is the negative number a reflection of the scale of the potential overlap? For example, if my difference is -50 to 210, woud it be correct to say this reflects a possible overlap of 50 years to a potential gap of 210 years. Or, would I be just as well saying the gap is 0-210 (I fear even suggesting this might constitute a mathematical faux pas and get me kicked out fo the group!). 

Thanks again 

All the best

Chris 

Christopher Ramsey

unread,
Nov 7, 2025, 6:37:10 AMNov 7
to OxCal group
Dear Chris

Yes - the negative numbers imply that the events might be in the other order (presumably also indicated by the order matrix). If you know events are in a particular order, this should be a constraint of the model.

Best wishes

Christopher
> To view this discussion visit https://groups.google.com/d/msgid/oxcal/fa1d704d-a41f-4f73-a75d-0157cad4f95fn%40googlegroups.com.

Reply all
Reply to author
Forward
0 new messages