Analysis of Chronological Patterns from Archaeological Count Data.
We are delighted to announce that kairos 1.0.0 has just landed on on CRAN! kairos is a toolkit for absolute dating and analysis of chronological patterns. This package includes functions for chronological modeling and dating of archaeological assemblages from count data. It allows to compute time point estimates and density estimates of the occupation and duration of an archaeological site.
You can install it from CRAN with:
install.packages("kairos")
This first release includes:
mcd()
event()
aoristic()
apportion()
This post highlights the basics of the package using the zuni
dataset (Peeples and Schachner 2012).
## Load the zuni dataset
# install.packages("folio")
data("zuni", package = "folio")
## Coerce the zuni dataset to an abundance (count) matrix
zuni_counts <- as_count(zuni)
## Set the start and end dates for each ceramic type
zuni_dates <- list(
LINO = c(600, 875), KIAT = c(850, 950), RED = c(900, 1050),
GALL = c(1025, 1125), ESC = c(1050, 1150), PUBW = c(1050, 1150),
RES = c(1000, 1200), TULA = c(1175, 1300), PINE = c(1275, 1350),
PUBR = c(1000, 1200), WING = c(1100, 1200), WIPO = c(1125, 1225),
SJ = c(1200, 1300), LSJ = c(1250, 1300), SPR = c(1250, 1300),
PINER = c(1275, 1325), HESH = c(1275, 1450), KWAK = c(1275, 1450)
)
The Mean Ceramic Date (MCD) is a point estimate of the occupation of an archaeological site (South 1977). The MCD is estimated as the weighted mean of the date midpoints of the ceramic types found in a given assemblage. The weights are the conditional frequencies of the respective types in the assemblage.
## Calculate date midpoint for each ceramic type
zuni_mid <- vapply(X = zuni_dates, FUN = mean, FUN.VALUE = numeric(1))
## Calculate MCD
zuni_mcd <- mcd(zuni_counts, dates = zuni_mid)
head(zuni_mcd)
LZ1105 LZ1103 LZ1100 LZ1099 LZ1097 LZ1096
1162 1138 1154 1091 1092 841
## Assess the sampling error
zuni_boot <- bootstrap(zuni_mcd, level = 0.95, probs = NULL)
head(zuni_boot)
min mean max lower upper
LZ1105 1119 1163.092 1219 1161.9640 1164.2200
LZ1103 1043 1136.817 1210 1135.1518 1138.4822
LZ1100 1049 1156.671 1235 1154.8740 1158.4680
LZ1099 1075 1090.737 1100 1090.4606 1091.0134
LZ1097 892 1094.294 1231 1091.0647 1097.5233
LZ1096 738 837.911 1100 834.1224 841.6996
Event and accumulation dates are density estimates of the occupation and duration of an archaeological site (Bellanger and Husi 2012). The event date is an estimation of the terminus post-quem of an archaeological assemblage. The accumulation date represents the “chronological profile” of the assemblage.
Event dates are estimated by fitting a Gaussian multiple linear regression model on the factors resulting from a correspondence analysis. This model results from the known dates of a selection of reliable contexts and allows to predict the event dates of the remaining assemblages.
## Assume that some assemblages are reliably dated
## (this is NOT a real example)
zuni_dates <- c(
LZ0569 = 1097, LZ0279 = 1119, CS16 = 1328, LZ0066 = 1111,
LZ0852 = 1216, LZ1209 = 1251, CS144 = 1262, LZ0563 = 1206,
LZ0329 = 1076, LZ0005Q = 859, LZ0322 = 1109, LZ0067 = 863,
LZ0578 = 1180, LZ0227 = 1104, LZ0610 = 1074
)
## Model the event and accumulation date for each assemblage
model <- event(zuni_counts, dates = zuni_dates, cutoff = 90)
## Estimate the event date of the assemblages
zuni_event <- predict_event(model, margin = 1, level = 0.95)
head(zuni_event)
date lower upper error
LZ1105 1168 1158 1178 4
LZ1103 1143 1139 1147 1
LZ1100 1156 1148 1164 3
LZ1099 1099 1092 1106 3
LZ1097 1088 1080 1097 3
LZ1096 839 829 849 4
The accumulation date is defined as the weighted mean of the event date of the ceramic types found in a given assemblage. The weights are the conditional frequencies of the respective types in the assemblage.
## Estimate accumulation dates
zuni_acc <- predict_accumulation(model)
head(zuni_acc)
LZ1105 LZ1103 LZ1100 LZ1099 LZ1097 LZ1096
1170 1140 1158 1087 1092 875
Event and accumulation dates can be displayed as density curves (see Bellanger and Husi 2012 for the interpretation of the curves). The probability density of the event date can be approximated by a normal distribution, while the accumulation time can be estimated by a Gaussian mixture. The distribution function of the accumulation time is quite close to the definition of the tempo plot introduced by Dye (2016): an estimates of the cumulative occurrence of archaeological events.
## Activity plot
## The event date is plotted as a line
## The accumulation time is shown as a grey filled area
plot(model, type = "activity", event = TRUE, select = "LZ1105")
## Tempo plot
plot(model, type = "tempo", select = "LZ1105")
Aoristic analysis (Ratcliffe 2000) can be used to determine the probability of contemporaneity of archaeological sites or assemblages. The aoristic analysis distributes the probability of an event uniformly over each temporal fraction of the period considered. The aoristic sum is then the distribution of the total number of events to be assumed within this period.
## Keep only assemblages that have a sample size of at least 10
zuni_keep <- apply(X = zuni, MARGIN = 1, FUN = function(x) sum(x) >= 10)
## Calculate date ranges for each assemblage
zuni_span <- apply(
X = zuni[zuni_keep, ],
FUN = function(x, dates) range(unlist(dates[x > 0])),
MARGIN = 1,
dates = zuni_dates
)
## Coerce to a data.frame
zuni_span <- as.data.frame(t(zuni_span))
names(zuni_span) <- c("from", "to")
## Calculate aoristic sum (weights)
aorist_weigth <- aoristic(zuni_span, step = 50, weight = TRUE)
plot(aorist_weigth)
If you see mistakes or want to suggest changes, please create an issue on the source repository.
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. Source code is available at https://github.com/tesselle/website, unless otherwise noted. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Frerebeau (2021, Nov. 10). tesselle: kairos 1.0.0. Retrieved from https://www.tesselle.org/posts/2021-11-10-kairos-100/
BibTeX citation
@misc{tesselle-kairos-100, author = {Frerebeau, Nicolas}, title = {tesselle: kairos 1.0.0}, url = {https://www.tesselle.org/posts/2021-11-10-kairos-100/}, year = {2021} }