Title: | Analysis of Chronological Patterns from Archaeological Count Data |
---|---|
Description: | A toolkit for absolute and relative dating and analysis of chronological patterns. This package includes functions for chronological modeling and dating of archaeological assemblages from count data. It provides methods for matrix seriation. It also allows to compute time point estimates and density estimates of the occupation and duration of an archaeological site. |
Authors: | Nicolas Frerebeau [aut, cre] (<https://orcid.org/0000-0001-5759-4944>, Université Bordeaux Montaigne), Brice Lebrun [ctb] (<https://orcid.org/0000-0001-7503-8685>, Logo designer), Ben Marwick [ctb] (<https://orcid.org/0000-0001-7879-4531>, University of Washington), Anne Philippe [ctb] (<https://orcid.org/0000-0002-5331-5087>, Université de Nantes), Université Bordeaux Montaigne [fnd], CNRS [fnd] |
Maintainer: | Nicolas Frerebeau <[email protected]> |
License: | GPL (>= 3) |
Version: | 2.1.1 |
Built: | 2024-08-25 05:56:32 UTC |
Source: | https://github.com/tesselle/kairos |
Computes the aoristic sum.
aoristic(x, y, ...) ## S4 method for signature 'numeric,numeric' aoristic( x, y, step = 1, start = min(x), end = max(y), calendar = CE(), weight = TRUE, groups = NULL ) ## S4 method for signature 'ANY,missing' aoristic( x, step = 1, start = NULL, end = NULL, calendar = CE(), weight = TRUE, groups = NULL )
aoristic(x, y, ...) ## S4 method for signature 'numeric,numeric' aoristic( x, y, step = 1, start = min(x), end = max(y), calendar = CE(), weight = TRUE, groups = NULL ) ## S4 method for signature 'ANY,missing' aoristic( x, step = 1, start = NULL, end = NULL, calendar = CE(), weight = TRUE, groups = NULL )
x , y
|
A |
... |
Currently not used. |
step |
A length-one |
start |
A length-one |
end |
A length-one |
calendar |
An |
weight |
A |
groups |
A |
Aoristic analysis is 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.
Muller and Hinz (2018) pointed out that the overlapping of temporal intervals related to period categorization and dating accuracy is likely to bias the analysis. They proposed a weighting method to overcome this problem. This method is not implemented here (for the moment), see the aoristAAR package.
An AoristicSum
object.
N. Frerebeau
Crema, E. R. (2012). Modelling Temporal Uncertainty in Archaeological Analysis. Journal of Archaeological Method and Theory, 19(3): 440-61. doi:10.1007/s10816-011-9122-3.
Johnson, I. (2004). Aoristic Analysis: Seeds of a New Approach to Mapping Archaeological Distributions through Time. In Ausserer, K. F., Börner, W., Goriany, M. & Karlhuber-Vöckl, L. (ed.), Enter the Past - The E-Way into the Four Dimensions of Cultural Heritage, Oxford: Archaeopress, p. 448-52. BAR International Series 1227. doi:10.15496/publikation-2085
Müller-Scheeßel, N. & Hinz, M. (2018). Aoristic Research in R: Correcting Temporal Categorizations in Archaeology. Presented at the Human History and Digital Future (CAA 2018), Tubingen, March 21. https://www.youtube.com/watch?v=bUBukex30QI.
Palmisano, A., Bevan, A. & Shennan, S. (2017). Comparing Archaeological Proxies for Long-Term Population Patterns: An Example from Central Italy. Journal of Archaeological Science, 87: 59-72. doi:10.1016/j.jas.2017.10.001.
Ratcliffe, J. H. (2000). Aoristic Analysis: The Spatial Interpretation of Unspecific Temporal Events. International Journal of Geographical Information Science, 14(7): 669-79. doi:10.1080/136588100424963.
Ratcliffe, J. H. (2002). Aoristic Signatures and the Spatio-Temporal Analysis of High Volume Crime Patterns. Journal of Quantitative Criminology, 18(1): 23-43. doi:10.1023/A:1013240828824.
Other chronological analysis:
apportion()
,
fit()
,
roc()
## Data from Husi 2022 data("loire", package = "folio") ## Get time range loire_range <- loire[, c("lower", "upper")] ## Calculate aoristic sum (normal) aorist_raw <- aoristic(loire_range, step = 50, weight = FALSE) plot(aorist_raw, col = "grey") ## Calculate aoristic sum (weights) aorist_weighted <- aoristic(loire_range, step = 50, weight = TRUE) plot(aorist_weighted, col = "grey") ## Calculate aoristic sum (weights) by group aorist_groups <- aoristic(loire_range, step = 50, weight = TRUE, groups = loire$area) plot(aorist_groups, flip = TRUE, col = "grey") image(aorist_groups) ## Rate of change roc_weighted <- roc(aorist_weighted, n = 30) plot(roc_weighted) ## Rate of change by group roc_groups <- roc(aorist_groups, n = 30) plot(roc_groups, flip = TRUE)
## Data from Husi 2022 data("loire", package = "folio") ## Get time range loire_range <- loire[, c("lower", "upper")] ## Calculate aoristic sum (normal) aorist_raw <- aoristic(loire_range, step = 50, weight = FALSE) plot(aorist_raw, col = "grey") ## Calculate aoristic sum (weights) aorist_weighted <- aoristic(loire_range, step = 50, weight = TRUE) plot(aorist_weighted, col = "grey") ## Calculate aoristic sum (weights) by group aorist_groups <- aoristic(loire_range, step = 50, weight = TRUE, groups = loire$area) plot(aorist_groups, flip = TRUE, col = "grey") image(aorist_groups) ## Rate of change roc_weighted <- roc(aorist_weighted, n = 30) plot(roc_weighted) ## Rate of change by group roc_groups <- roc(aorist_groups, n = 30) plot(roc_groups, flip = TRUE)
Chronological Apportioning
apportion(object, ...) ## S4 method for signature 'data.frame' apportion( object, s0, s1, t0, t1, from = min(s0), to = max(s1), step = 25, method = c("uniform", "truncated"), z = 2, progress = getOption("kairos.progress") ) ## S4 method for signature 'matrix' apportion( object, s0, s1, t0, t1, from = min(s0), to = max(s1), step = 25, method = c("uniform", "truncated"), z = 2, progress = getOption("kairos.progress") )
apportion(object, ...) ## S4 method for signature 'data.frame' apportion( object, s0, s1, t0, t1, from = min(s0), to = max(s1), step = 25, method = c("uniform", "truncated"), z = 2, progress = getOption("kairos.progress") ) ## S4 method for signature 'matrix' apportion( object, s0, s1, t0, t1, from = min(s0), to = max(s1), step = 25, method = c("uniform", "truncated"), z = 2, progress = getOption("kairos.progress") )
object |
A |
... |
Currently not used. |
s0 |
A length- |
s1 |
A length- |
t0 |
A length- |
t1 |
A length- |
from |
A length-one |
to |
A length-one |
step |
A length-one |
method |
A |
z |
An |
progress |
A |
A CountApportion
object.
N. Frerebeau
Roberts, J. M., Mills, B. J., Clark, J. J., Haas, W. R., Huntley, D. L. & Trowbridge, M. A. (2012). A Method for Chronological Apportioning of Ceramic Assemblages. Journal of Archaeological Science, 39(5): 1513-20. doi:10.1016/j.jas.2011.12.022.
Other chronological analysis:
aoristic()
,
fit()
,
roc()
Coerce to a Data Frame
## S4 method for signature 'MeanDate' as.data.frame(x, ..., calendar = getOption("kairos.calendar")) ## S4 method for signature 'AoristicSum' as.data.frame(x, ..., calendar = getOption("kairos.calendar")) ## S4 method for signature 'IncrementTest' as.data.frame(x, row.names = NULL, optional = FALSE, ...)
## S4 method for signature 'MeanDate' as.data.frame(x, ..., calendar = getOption("kairos.calendar")) ## S4 method for signature 'AoristicSum' as.data.frame(x, ..., calendar = getOption("kairos.calendar")) ## S4 method for signature 'IncrementTest' as.data.frame(x, row.names = NULL, optional = FALSE, ...)
x |
An object. |
... |
Further parameters to be passed to |
calendar |
An |
row.names , optional
|
Currently not used. |
A data.frame
with an extra time
column giving the (decimal) years at
which the time series was sampled.
N. Frerebeau
Other mutators:
model
,
mutators
,
series()
,
subset()
Fits a date event model.
event(object, dates, ...) ## S4 method for signature 'data.frame,numeric' event(object, dates, rank = NULL, sup_row = NULL, calendar = CE(), ...) ## S4 method for signature 'matrix,numeric' event(object, dates, rank = NULL, sup_row = NULL, calendar = CE(), ...) ## S4 method for signature 'EventDate' summary(object, ...)
event(object, dates, ...) ## S4 method for signature 'data.frame,numeric' event(object, dates, rank = NULL, sup_row = NULL, calendar = CE(), ...) ## S4 method for signature 'matrix,numeric' event(object, dates, rank = NULL, sup_row = NULL, calendar = CE(), ...) ## S4 method for signature 'EventDate' summary(object, ...)
object |
A |
dates |
A |
... |
Further arguments to be passed to internal methods. |
rank |
An |
sup_row |
A |
calendar |
An |
This is an implementation of the chronological modeling method proposed by Bellanger and Husi (2012, 2013).
Event and accumulation dates are density estimates of the occupation and duration of an archaeological site (Bellanger and Husi 2012, 2013). 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. According to Bellanger and Husi (2012), accumulation date can be interpreted "at best [...] as a formation process reflecting the duration or succession of events on the scale of archaeological time, and at worst, as imprecise dating due to contamination of the context by residual or intrusive material." In other words, accumulation dates estimate occurrence of archaeological events and rhythms of the long term.
Dates are converted to rata die before any computation.
This method relies on strong archaeological and statistical assumptions
(see vignette("event")
).
An EventDate
object.
N. Frerebeau
Bellanger, L. & Husi, P. (2013). Mesurer et modéliser le temps inscrit dans la matière à partir d'une source matérielle : la céramique médiévale. In Mesure et Histoire Médiévale. Histoire ancienne et médiévale. Paris: Publication de la Sorbonne, p. 119-134.
Bellanger, L. & Husi, P. (2012). Statistical Tool for Dating and Interpreting Archaeological Contexts Using Pottery. Journal of Archaeological Science, 39(4), 777-790. doi:10.1016/j.jas.2011.06.031.
Bellanger, L., Tomassone, R. & Husi, P. (2008). A Statistical Approach for Dating Archaeological Contexts. Journal of Data Science, 6, 135-154.
Bellanger, L., Husi, P. & Tomassone, R. (2006). Une approche statistique pour la datation de contextes archéologiques. Revue de Statistique Appliquée, 54(2), 65-81.
Bellanger, L., Husi, P. & Tomassone, R. (2006). Statistical Aspects of Pottery Quantification for the Dating of Some Archaeological Contexts. Archaeometry, 48(1), 169-183. doi:10.1111/j.1475-4754.2006.00249.x.
Poblome, J. & Groenen, P. J. F. (2003). Constrained Correspondence Analysis for Seriation of Sagalassos Tablewares. In Doerr, M. & Apostolis, S. (eds.), The Digital Heritage of Archaeology. Athens: Hellenic Ministry of Culture.
plot()
, predict_event()
,
predict_accumulation()
, jackknife()
,
bootstrap()
Other dating methods:
mcd()
,
predict_event()
## Data from Peeples and Schachner 2012 data("zuni", package = "folio") ## 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, zuni_dates, rank = 10) plot(model, select = 1:10, event = TRUE, flip = TRUE)
## Data from Peeples and Schachner 2012 data("zuni", package = "folio") ## 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, zuni_dates, rank = 10) plot(model, select = 1:10, event = TRUE, flip = TRUE)
Frequency Increment Test
fit(object, dates, ...) ## S4 method for signature 'data.frame,numeric' fit(object, dates, calendar = CE(), level = 0.95, roll = FALSE, window = 3) ## S4 method for signature 'matrix,numeric' fit(object, dates, calendar = CE(), level = 0.95, roll = FALSE, window = 3)
fit(object, dates, ...) ## S4 method for signature 'data.frame,numeric' fit(object, dates, calendar = CE(), level = 0.95, roll = FALSE, window = 3) ## S4 method for signature 'matrix,numeric' fit(object, dates, calendar = CE(), level = 0.95, roll = FALSE, window = 3)
object |
A |
dates |
A length- |
... |
Currently not used. |
calendar |
An |
level |
A length-one |
roll |
A |
window |
An odd |
The Frequency Increment Test (FIT) rejects neutrality if the distribution of normalized variant frequency increments exhibits a mean that deviates significantly from zero.
If roll
is TRUE
, each time series is subsetted according to window
to
see if episodes of selection can be identified among variables that might
not show overall selection.
An IncrementTest
object.
N. Frerebeau
Feder, A. F., Kryazhimskiy, S. & Plotkin, J. B. (2014). Identifying Signatures of Selection in Genetic Time Series. Genetics, 196(2): 509-522. doi:10.1534/genetics.113.158220.
Other chronological analysis:
aoristic()
,
apportion()
,
roc()
## Data from Crema et al. 2016 data("merzbach", package = "folio") ## Keep only decoration types that have a maximum frequency of at least 50 keep <- apply(X = merzbach, MARGIN = 2, FUN = function(x) max(x) >= 50) counts <- merzbach[, keep] ## Group by phase ## We use the row names as time coordinates (roman numerals) dates <- as.numeric(utils::as.roman(rownames(counts))) ## Frequency Increment Test freq <- fit(counts, dates, calendar = NULL) ## Plot time vs abundance plot(freq, calendar = NULL, ncol = 3, xlab = "Phases") ## Plot time vs abundance and highlight selection freq <- fit(counts, dates, calendar = NULL, roll = TRUE, window = 5) plot(freq, calendar = NULL, ncol = 3, xlab = "Phases")
## Data from Crema et al. 2016 data("merzbach", package = "folio") ## Keep only decoration types that have a maximum frequency of at least 50 keep <- apply(X = merzbach, MARGIN = 2, FUN = function(x) max(x) >= 50) counts <- merzbach[, keep] ## Group by phase ## We use the row names as time coordinates (roman numerals) dates <- as.numeric(utils::as.roman(rownames(counts))) ## Frequency Increment Test freq <- fit(counts, dates, calendar = NULL) ## Plot time vs abundance plot(freq, calendar = NULL, ncol = 3, xlab = "Phases") ## Plot time vs abundance and highlight selection freq <- fit(counts, dates, calendar = NULL, roll = TRUE, window = 5) plot(freq, calendar = NULL, ncol = 3, xlab = "Phases")
Estimates the Mean Ceramic Date of an assemblage.
mcd(object, dates, ...) ## S4 method for signature 'numeric,numeric' mcd(object, dates, calendar = CE()) ## S4 method for signature 'data.frame,numeric' mcd(object, dates, calendar = CE()) ## S4 method for signature 'matrix,numeric' mcd(object, dates, calendar = CE())
mcd(object, dates, ...) ## S4 method for signature 'numeric,numeric' mcd(object, dates, calendar = CE()) ## S4 method for signature 'data.frame,numeric' mcd(object, dates, calendar = CE()) ## S4 method for signature 'matrix,numeric' mcd(object, dates, calendar = CE())
object |
A |
dates |
A length- |
... |
Currently not used. |
calendar |
An |
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 (based on absolute dates or the known production interval) found in a given assemblage. The weights are the relative frequencies of the respective types in the assemblage.
A bootstrapping procedure is used to estimate the confidence interval of a given MCD. For each assemblage, a large number of new bootstrap replicates is created, with the same sample size, by resampling the original assemblage with replacement. MCDs are calculated for each replicates and upper and lower boundaries of the confidence interval associated with each MCD are then returned.
A MeanDate
object.
N. Frerebeau
South, S. A. (1977). Method and Theory in Historical Archaeology. New York: Academic Press.
plot(), bootstrap(), jackknife(), simulate()
Other dating methods:
event()
,
predict_event()
## Data from Peeples and Schachner 2012 data("zuni", package = "folio") ## Set the start and end dates for each ceramic type 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) ) ## Calculate date midpoints mid <- vapply(X = dates, FUN = mean, FUN.VALUE = numeric(1)) ## Calculate MCD (mc_dates <- mcd(zuni[100:125, ], dates = mid)) ## Get MCD in years CE time(mc_dates, calendar = CE()) ## Plot plot(mc_dates) ## Bootstrap resampling boot <- bootstrap(mc_dates, n = 30) head(boot) ## Jackknife resampling jack <- jackknife(mc_dates) head(jack) ## Simulation sim <- simulate(mc_dates, nsim = 30) plot(sim, interval = "range", pch = 16)
## Data from Peeples and Schachner 2012 data("zuni", package = "folio") ## Set the start and end dates for each ceramic type 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) ) ## Calculate date midpoints mid <- vapply(X = dates, FUN = mean, FUN.VALUE = numeric(1)) ## Calculate MCD (mc_dates <- mcd(zuni[100:125, ], dates = mid)) ## Get MCD in years CE time(mc_dates, calendar = CE()) ## Plot plot(mc_dates) ## Bootstrap resampling boot <- bootstrap(mc_dates, n = 30) head(boot) ## Jackknife resampling jack <- jackknife(mc_dates) head(jack) ## Simulation sim <- simulate(mc_dates, nsim = 30) plot(sim, interval = "range", pch = 16)
coef()
extracts model coefficients (see stats::coef()
).
fitted()
extracts model fitted values (see stats::fitted()
).
residuals()
extracts model residuals (see stats::residuals()
).
sigma()
extracts the residual standard deviation (see stats::sigma()
).
terms()
extracts model terms (see stats::terms()
).
## S4 method for signature 'EventDate' coef(object, calendar = NULL, ...) ## S4 method for signature 'EventDate' fitted(object, calendar = NULL, ...) ## S4 method for signature 'EventDate' residuals(object, calendar = NULL, ...) ## S4 method for signature 'EventDate' sigma(object, calendar = NULL, ...) ## S4 method for signature 'EventDate' terms(x, ...)
## S4 method for signature 'EventDate' coef(object, calendar = NULL, ...) ## S4 method for signature 'EventDate' fitted(object, calendar = NULL, ...) ## S4 method for signature 'EventDate' residuals(object, calendar = NULL, ...) ## S4 method for signature 'EventDate' sigma(object, calendar = NULL, ...) ## S4 method for signature 'EventDate' terms(x, ...)
calendar |
An |
... |
Currently not used. |
x , object
|
An |
N. Frerebeau
Other mutators:
data.frame
,
mutators
,
series()
,
subset()
## Data from Peeples and Schachner 2012 data("zuni", package = "folio") ## 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, zuni_dates, rank = 10) plot(model, select = 1:10, event = TRUE, flip = TRUE)
## Data from Peeples and Schachner 2012 data("zuni", package = "folio") ## 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, zuni_dates, rank = 10) plot(model, select = 1:10, event = TRUE, flip = TRUE)
Getters and setters to retrieve or set parts of an object.
## S4 method for signature 'AoristicSum' weights(object, ...) ## S4 method for signature 'CountApportion' weights(object, ...)
## S4 method for signature 'AoristicSum' weights(object, ...) ## S4 method for signature 'CountApportion' weights(object, ...)
object |
An object from which to get or set element(s). |
... |
Currently not used. |
N. Frerebeau
Other mutators:
data.frame
,
model
,
series()
,
subset()
permute()
rearranges a data matrix according to a permutation order.
get_order()
returns the seriation order for rows and/or columns.
permute(object, order, ...) get_order(x, ...) ## S4 method for signature 'data.frame,PermutationOrder' permute(object, order) ## S4 method for signature 'matrix,PermutationOrder' permute(object, order) ## S4 method for signature 'PermutationOrder' get_order(x, margin = c(1, 2))
permute(object, order, ...) get_order(x, ...) ## S4 method for signature 'data.frame,PermutationOrder' permute(object, order) ## S4 method for signature 'matrix,PermutationOrder' permute(object, order) ## S4 method for signature 'PermutationOrder' get_order(x, margin = c(1, 2))
object |
A |
... |
Currently not used. |
x , order
|
A |
margin |
A |
permute()
returns a permuted matrix
or a permuted data.frame
(the same as object
).
N. Frerebeau
Other seriation methods:
seriate_average()
,
seriate_rank()
,
seriate_refine()
## Replicates Desachy 2004 results data("compiegne", package = "folio") ## Get seriation order for columns on EPPM using the reciprocal averaging method ## Expected column order: N, A, C, K, P, L, B, E, I, M, D, G, O, J, F, H (indices <- seriate_rank(compiegne, EPPM = TRUE, margin = 2)) ## Get permutation order get_order(indices, 1) # rows get_order(indices, 2) # columns ## Permute columns (new <- permute(compiegne, indices)) ## See the vignette ## Not run: utils::vignette("seriation") ## End(Not run)
## Replicates Desachy 2004 results data("compiegne", package = "folio") ## Get seriation order for columns on EPPM using the reciprocal averaging method ## Expected column order: N, A, C, K, P, L, B, E, I, M, D, G, O, J, F, H (indices <- seriate_rank(compiegne, EPPM = TRUE, margin = 2)) ## Get permutation order get_order(indices, 1) # rows get_order(indices, 2) # columns ## Permute columns (new <- permute(compiegne, indices)) ## See the vignette ## Not run: utils::vignette("seriation") ## End(Not run)
Plot Aoristic Analysis
## S4 method for signature 'AoristicSum,missing' plot( x, calendar = getOption("kairos.calendar"), type = c("bar"), flip = FALSE, ncol = NULL, main = NULL, sub = NULL, ann = graphics::par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, ... ) ## S4 method for signature 'AoristicSum' image(x, calendar = getOption("kairos.calendar"), ...) ## S4 method for signature 'RateOfChange,missing' plot( x, calendar = getOption("kairos.calendar"), level = 0.95, flip = FALSE, ncol = NULL, main = NULL, sub = NULL, ann = graphics::par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, ... )
## S4 method for signature 'AoristicSum,missing' plot( x, calendar = getOption("kairos.calendar"), type = c("bar"), flip = FALSE, ncol = NULL, main = NULL, sub = NULL, ann = graphics::par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, ... ) ## S4 method for signature 'AoristicSum' image(x, calendar = getOption("kairos.calendar"), ...) ## S4 method for signature 'RateOfChange,missing' plot( x, calendar = getOption("kairos.calendar"), level = 0.95, flip = FALSE, ncol = NULL, main = NULL, sub = NULL, ann = graphics::par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, ... )
x |
An |
calendar |
An |
type |
A |
flip |
A |
ncol |
An |
main |
A |
sub |
A |
ann |
A |
axes |
A |
frame.plot |
A |
panel.first |
An |
panel.last |
An |
... |
Further parameters to be passed to |
level |
A length-one |
plot()
is called it for its side-effects: it results in a graphic being
displayed (invisibly returns x
).
N. Frerebeau
Other plotting methods:
plot_event
,
plot_fit
,
plot_mcd
,
plot_time()
## Data from Husi 2022 data("loire", package = "folio") ## Get time range loire_range <- loire[, c("lower", "upper")] ## Calculate aoristic sum (normal) aorist_raw <- aoristic(loire_range, step = 50, weight = FALSE) plot(aorist_raw, col = "grey") ## Calculate aoristic sum (weights) aorist_weighted <- aoristic(loire_range, step = 50, weight = TRUE) plot(aorist_weighted, col = "grey") ## Calculate aoristic sum (weights) by group aorist_groups <- aoristic(loire_range, step = 50, weight = TRUE, groups = loire$area) plot(aorist_groups, flip = TRUE, col = "grey") image(aorist_groups) ## Rate of change roc_weighted <- roc(aorist_weighted, n = 30) plot(roc_weighted) ## Rate of change by group roc_groups <- roc(aorist_groups, n = 30) plot(roc_groups, flip = TRUE)
## Data from Husi 2022 data("loire", package = "folio") ## Get time range loire_range <- loire[, c("lower", "upper")] ## Calculate aoristic sum (normal) aorist_raw <- aoristic(loire_range, step = 50, weight = FALSE) plot(aorist_raw, col = "grey") ## Calculate aoristic sum (weights) aorist_weighted <- aoristic(loire_range, step = 50, weight = TRUE) plot(aorist_weighted, col = "grey") ## Calculate aoristic sum (weights) by group aorist_groups <- aoristic(loire_range, step = 50, weight = TRUE, groups = loire$area) plot(aorist_groups, flip = TRUE, col = "grey") image(aorist_groups) ## Rate of change roc_weighted <- roc(aorist_weighted, n = 30) plot(roc_weighted) ## Rate of change by group roc_groups <- roc(aorist_groups, n = 30) plot(roc_groups, flip = TRUE)
Produces an activity or a tempo plot.
## S4 method for signature 'EventDate,missing' plot( x, type = c("activity", "tempo"), event = FALSE, calendar = getOption("kairos.calendar"), select = 1, n = 500, eps = 1e-09, col.accumulation = "black", col.event = "red", flip = FALSE, ncol = NULL, xlab = NULL, ylab = NULL, main = NULL, sub = NULL, ann = graphics::par("ann"), axes = TRUE, frame.plot = axes, ... )
## S4 method for signature 'EventDate,missing' plot( x, type = c("activity", "tempo"), event = FALSE, calendar = getOption("kairos.calendar"), select = 1, n = 500, eps = 1e-09, col.accumulation = "black", col.event = "red", flip = FALSE, ncol = NULL, xlab = NULL, ylab = NULL, main = NULL, sub = NULL, ann = graphics::par("ann"), axes = TRUE, frame.plot = axes, ... )
x |
An |
type |
A |
event |
A |
calendar |
An |
select |
A |
n |
A length-one non-negative |
eps |
A length-one |
col.accumulation |
A color specification for the accumulation density curve. |
col.event |
A color specification for the event density curve. |
flip |
A |
ncol |
An |
xlab , ylab
|
A |
main |
A |
sub |
A |
ann |
A |
axes |
A |
frame.plot |
A |
... |
Further parameters to be passed to |
plot()
is called it for its side-effects: it results in a graphic being
displayed (invisibly returns x
).
plot()
displays the probability estimate density curves of archaeological
assemblage dates (event and accumulation dates; Bellanger and Husi
2012). The event date is plotted as a line, while the accumulation date
is shown as a grey filled area.
The accumulation date can be displayed as a tempo plot (Dye 2016) or an activity plot (Philippe and Vibet 2020):
tempo
A tempo plot estimates the cumulative occurrence of archaeological events, such as the slope of the plot directly reflects the pace of change.
activity
An activity plot displays the first derivative of the tempo plot.
N. Frerebeau
Bellanger, L. & Husi, P. (2012). Statistical Tool for Dating and Interpreting Archaeological Contexts Using Pottery. Journal of Archaeological Science, 39(4), 777-790. doi:10.1016/j.jas.2011.06.031.
Dye, T. S. (2016). Long-Term Rhythms in the Development of Hawaiian Social Stratification. Journal of Archaeological Science, 71, 1-9. doi:10.1016/j.jas.2016.05.006.
Philippe, A. & Vibet, M.-A. (2020). Analysis of Archaeological Phases Using the R Package ArchaeoPhases. Journal of Statistical Software, Code Snippets, 93(1), 1-25. doi:10.18637/jss.v093.c01.
Other plotting methods:
plot_aoristic
,
plot_fit
,
plot_mcd
,
plot_time()
## Data from Peeples and Schachner 2012 data("zuni", package = "folio") ## 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, zuni_dates, rank = 10) plot(model, select = 1:10, event = TRUE, flip = TRUE)
## Data from Peeples and Schachner 2012 data("zuni", package = "folio") ## 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, zuni_dates, rank = 10) plot(model, select = 1:10, event = TRUE, flip = TRUE)
Produces an abundance vs time diagram.
## S4 method for signature 'IncrementTest,missing' plot( x, calendar = getOption("kairos.calendar"), col.neutral = "#004488", col.selection = "#BB5566", col.roll = "grey", flip = FALSE, ncol = NULL, xlab = NULL, ylab = NULL, main = NULL, sub = NULL, ann = graphics::par("ann"), axes = TRUE, frame.plot = axes, ... )
## S4 method for signature 'IncrementTest,missing' plot( x, calendar = getOption("kairos.calendar"), col.neutral = "#004488", col.selection = "#BB5566", col.roll = "grey", flip = FALSE, ncol = NULL, xlab = NULL, ylab = NULL, main = NULL, sub = NULL, ann = graphics::par("ann"), axes = TRUE, frame.plot = axes, ... )
x |
An |
calendar |
An |
col.neutral , col.selection , col.roll
|
A vector of colors. |
flip |
A |
ncol |
An |
xlab , ylab
|
A |
main |
A |
sub |
A |
ann |
A |
axes |
A |
frame.plot |
A |
... |
Further parameters to be passed to |
Results of the frequency increment test can be displayed on an abundance
vs time diagram aid in the detection and quantification of selective
processes in the archaeological record. If roll
is TRUE
, each time
series is subsetted according to window
to see if episodes of selection
can be identified among decoration types that might not show overall
selection. If so, shading highlights the data points where
fit()
identifies selection.
plot()
is called it for its side-effects: it results in a graphic being
displayed (invisibly returns x
).
Displaying FIT results on an abundance vs time diagram is adapted from Ben Marwick's original idea.
N. Frerebeau
Other plotting methods:
plot_aoristic
,
plot_event
,
plot_mcd
,
plot_time()
## Data from Crema et al. 2016 data("merzbach", package = "folio") ## Keep only decoration types that have a maximum frequency of at least 50 keep <- apply(X = merzbach, MARGIN = 2, FUN = function(x) max(x) >= 50) counts <- merzbach[, keep] ## Group by phase ## We use the row names as time coordinates (roman numerals) dates <- as.numeric(utils::as.roman(rownames(counts))) ## Frequency Increment Test freq <- fit(counts, dates, calendar = NULL) ## Plot time vs abundance plot(freq, calendar = NULL, ncol = 3, xlab = "Phases") ## Plot time vs abundance and highlight selection freq <- fit(counts, dates, calendar = NULL, roll = TRUE, window = 5) plot(freq, calendar = NULL, ncol = 3, xlab = "Phases")
## Data from Crema et al. 2016 data("merzbach", package = "folio") ## Keep only decoration types that have a maximum frequency of at least 50 keep <- apply(X = merzbach, MARGIN = 2, FUN = function(x) max(x) >= 50) counts <- merzbach[, keep] ## Group by phase ## We use the row names as time coordinates (roman numerals) dates <- as.numeric(utils::as.roman(rownames(counts))) ## Frequency Increment Test freq <- fit(counts, dates, calendar = NULL) ## Plot time vs abundance plot(freq, calendar = NULL, ncol = 3, xlab = "Phases") ## Plot time vs abundance and highlight selection freq <- fit(counts, dates, calendar = NULL, roll = TRUE, window = 5) plot(freq, calendar = NULL, ncol = 3, xlab = "Phases")
MCD Plot
## S4 method for signature 'MeanDate,missing' plot( x, calendar = getOption("kairos.calendar"), decreasing = TRUE, main = NULL, sub = NULL, ann = graphics::par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, ... ) ## S4 method for signature 'SimulationMeanDate,missing' plot( x, calendar = getOption("kairos.calendar"), interval = "student", level = 0.8, decreasing = TRUE, main = NULL, sub = NULL, ann = graphics::par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, ... )
## S4 method for signature 'MeanDate,missing' plot( x, calendar = getOption("kairos.calendar"), decreasing = TRUE, main = NULL, sub = NULL, ann = graphics::par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, ... ) ## S4 method for signature 'SimulationMeanDate,missing' plot( x, calendar = getOption("kairos.calendar"), interval = "student", level = 0.8, decreasing = TRUE, main = NULL, sub = NULL, ann = graphics::par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, ... )
x |
A |
calendar |
An |
decreasing |
A |
main |
A |
sub |
A |
ann |
A |
axes |
A |
frame.plot |
A |
panel.first |
An an |
panel.last |
An |
... |
Further graphical parameters. |
interval |
A |
level |
A length-one |
plot()
is called it for its side-effects: it results in a graphic being
displayed (invisibly returns x
).
N. Frerebeau
Other plotting methods:
plot_aoristic
,
plot_event
,
plot_fit
,
plot_time()
## Data from Peeples and Schachner 2012 data("zuni", package = "folio") ## Set the start and end dates for each ceramic type 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) ) ## Calculate date midpoints mid <- vapply(X = dates, FUN = mean, FUN.VALUE = numeric(1)) ## Calculate MCD (mc_dates <- mcd(zuni[100:125, ], dates = mid)) ## Get MCD in years CE time(mc_dates, calendar = CE()) ## Plot plot(mc_dates) ## Bootstrap resampling boot <- bootstrap(mc_dates, n = 30) head(boot) ## Jackknife resampling jack <- jackknife(mc_dates) head(jack) ## Simulation sim <- simulate(mc_dates, nsim = 30) plot(sim, interval = "range", pch = 16)
## Data from Peeples and Schachner 2012 data("zuni", package = "folio") ## Set the start and end dates for each ceramic type 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) ) ## Calculate date midpoints mid <- vapply(X = dates, FUN = mean, FUN.VALUE = numeric(1)) ## Calculate MCD (mc_dates <- mcd(zuni[100:125, ], dates = mid)) ## Get MCD in years CE time(mc_dates, calendar = CE()) ## Plot plot(mc_dates) ## Bootstrap resampling boot <- bootstrap(mc_dates, n = 30) head(boot) ## Jackknife resampling jack <- jackknife(mc_dates) head(jack) ## Simulation sim <- simulate(mc_dates, nsim = 30) plot(sim, interval = "range", pch = 16)
Produces an abundance vs time diagram.
plot_time(object, dates, ...) ## S4 method for signature 'data.frame,numeric' plot_time(object, dates, calendar = getOption("kairos.calendar"), ...) ## S4 method for signature 'matrix,numeric' plot_time(object, dates, calendar = getOption("kairos.calendar"), ...)
plot_time(object, dates, ...) ## S4 method for signature 'data.frame,numeric' plot_time(object, dates, calendar = getOption("kairos.calendar"), ...) ## S4 method for signature 'matrix,numeric' plot_time(object, dates, calendar = getOption("kairos.calendar"), ...)
object |
A |
dates |
A |
... |
Further parameters to be passed to |
calendar |
An |
plot_time()
is called it for its side-effects: it results in a graphic
being displayed (invisibly returns object
).
N. Frerebeau
Other plotting methods:
plot_aoristic
,
plot_event
,
plot_fit
,
plot_mcd
## Data from Crema et al. 2016 data("merzbach", package = "folio") ## Coerce the merzbach dataset to a count matrix ## Keep only decoration types that have a maximum frequency of at least 50 keep <- apply(X = merzbach, MARGIN = 2, FUN = function(x) max(x) >= 50) counts <- merzbach[, keep] ## Set dates ## We use the row names as time coordinates (roman numerals) dates <- as.numeric(utils::as.roman(rownames(counts))) ## Plot abundance vs time plot_time(counts, dates, calendar = NULL, ncol = 3, xlab = "Phases")
## Data from Crema et al. 2016 data("merzbach", package = "folio") ## Coerce the merzbach dataset to a count matrix ## Keep only decoration types that have a maximum frequency of at least 50 keep <- apply(X = merzbach, MARGIN = 2, FUN = function(x) max(x) >= 50) counts <- merzbach[, keep] ## Set dates ## We use the row names as time coordinates (roman numerals) dates <- as.numeric(utils::as.roman(rownames(counts))) ## Plot abundance vs time plot_time(counts, dates, calendar = NULL, ncol = 3, xlab = "Phases")
Estimates the event and accumulation dates of an assemblage.
predict_event(object, data, ...) predict_accumulation(object, data, ...) ## S4 method for signature 'EventDate,missing' predict_event(object, margin = 1, level = 0.95, calendar = NULL) ## S4 method for signature 'EventDate,matrix' predict_event(object, data, margin = 1, level = 0.95, calendar = NULL) ## S4 method for signature 'EventDate,missing' predict_accumulation(object, calendar = NULL) ## S4 method for signature 'EventDate,matrix' predict_accumulation(object, data, level = 0.95, calendar = NULL)
predict_event(object, data, ...) predict_accumulation(object, data, ...) ## S4 method for signature 'EventDate,missing' predict_event(object, margin = 1, level = 0.95, calendar = NULL) ## S4 method for signature 'EventDate,matrix' predict_event(object, data, margin = 1, level = 0.95, calendar = NULL) ## S4 method for signature 'EventDate,missing' predict_accumulation(object, calendar = NULL) ## S4 method for signature 'EventDate,matrix' predict_accumulation(object, data, level = 0.95, calendar = NULL)
object |
A |
data |
A |
... |
Further arguments to be passed to internal methods. |
margin |
A |
level |
A length-one |
calendar |
An |
predict_event()
returns a data.frame
.
predict_accumulation()
returns a data.frame
.
N. Frerebeau
Bellanger, L. & Husi, P. (2013). Mesurer et modéliser le temps inscrit dans la matière à partir d'une source matérielle : la céramique médiévale. In Mesure et Histoire Médiévale. Histoire ancienne et médiévale. Paris: Publication de la Sorbonne, p. 119-134.
Bellanger, L. & Husi, P. (2012). Statistical Tool for Dating and Interpreting Archaeological Contexts Using Pottery. Journal of Archaeological Science, 39(4), 777-790. doi:10.1016/j.jas.2011.06.031.
Bellanger, L., Tomassone, R. & Husi, P. (2008). A Statistical Approach for Dating Archaeological Contexts. Journal of Data Science, 6, 135-154.
Bellanger, L., Husi, P. & Tomassone, R. (2006). Une approche statistique pour la datation de contextes archéologiques. Revue de Statistique Appliquée, 54(2), 65-81.
Bellanger, L., Husi, P. & Tomassone, R. (2006). Statistical Aspects of Pottery Quantification for the Dating of Some Archaeological Contexts. Archaeometry, 48(1), 169-183. doi:10.1111/j.1475-4754.2006.00249.x.
Other dating methods:
event()
,
mcd()
## Data from Peeples and Schachner 2012 data("zuni", package = "folio") ## 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, zuni_dates, rank = 10) plot(model, select = 1:10, event = TRUE, flip = TRUE)
## Data from Peeples and Schachner 2012 data("zuni", package = "folio") ## 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, zuni_dates, rank = 10) plot(model, select = 1:10, event = TRUE, flip = TRUE)
bootstrap()
generate bootstrap estimations of an event.
jackknife()
generate jackknife estimations of an event.
## S4 method for signature 'EventDate' jackknife(object, level = 0.95, progress = getOption("kairos.progress"), ...) ## S4 method for signature 'EventDate' bootstrap( object, level = 0.95, probs = c(0.05, 0.95), n = 1000, progress = getOption("kairos.progress"), ... )
## S4 method for signature 'EventDate' jackknife(object, level = 0.95, progress = getOption("kairos.progress"), ...) ## S4 method for signature 'EventDate' bootstrap( object, level = 0.95, probs = c(0.05, 0.95), n = 1000, progress = getOption("kairos.progress"), ... )
object |
|
level |
A length-one |
progress |
A |
... |
Further arguments to be passed to internal methods. |
probs |
A |
n |
A non-negative |
If jackknife()
is used, one type/fabric is removed at a
time and all statistics are recalculated. In this way, one can assess
whether certain type/fabric has a substantial influence on the date
estimate.
A three columns data.frame
is returned, giving the results of
the resampling procedure (jackknifing fabrics) for each assemblage (in rows)
with the following columns:
mean
The jackknife mean (event date).
bias
The jackknife estimate of bias.
error
The standard error of predicted means.
If bootstrap()
is used, a large number of new bootstrap assemblages is
created, with the same sample size, by resampling each of the original
assemblage with replacement. Then, examination of the bootstrap statistics
makes it possible to pinpoint assemblages that require further
investigation.
A five columns data.frame
is returned, giving the bootstrap
distribution statistics for each replicated assemblage (in rows)
with the following columns:
min
Minimum value.
mean
Mean value (event date).
max
Maximum value.
Q5
Sample quantile to 0.05 probability.
Q95
Sample quantile to 0.95 probability.
A data.frame
.
N. Frerebeau
Other resampling methods:
resample_mcd
bootstrap()
generate bootstrap estimations of an MCD.
jackknife()
generate jackknife estimations of an MCD.
## S4 method for signature 'MeanDate' bootstrap(object, n = 1000, f = NULL, calendar = getOption("kairos.calendar")) ## S4 method for signature 'MeanDate' jackknife(object, f = NULL, calendar = getOption("kairos.calendar")) ## S4 method for signature 'MeanDate' simulate(object, nsim = 1000)
## S4 method for signature 'MeanDate' bootstrap(object, n = 1000, f = NULL, calendar = getOption("kairos.calendar")) ## S4 method for signature 'MeanDate' jackknife(object, f = NULL, calendar = getOption("kairos.calendar")) ## S4 method for signature 'MeanDate' simulate(object, nsim = 1000)
object |
|
n |
A non-negative |
f |
A |
calendar |
An |
nsim |
A non-negative |
If f
is NULL
, bootstrap()
and jackknife()
return a data.frame
with the following elements (else, returns the result of f
applied to the
n
resampled values) :
The observed value.
The bootstrap/jackknife estimate of mean.
The bootstrap/jackknife estimate of bias.
The boostrap/jackknife estimate of standard erro.
N. Frerebeau
Other resampling methods:
resample_event
Computes the rate of change from an aoristic analysis.
roc(object, ...) ## S4 method for signature 'AoristicSum' roc(object, n = 100)
roc(object, ...) ## S4 method for signature 'AoristicSum' roc(object, n = 100)
object |
An |
... |
Currently not used. |
n |
A non-negative |
A RateOfChange
object.
N. Frerebeau
Baxter, M. J. & Cool, H. E. M. (2016). Reinventing the Wheel? Modelling Temporal Uncertainty with Applications to Brooch Distributions in Roman Britain. Journal of Archaeological Science, 66: 120-27. doi:10.1016/j.jas.2015.12.007.
Crema, E. R. (2012). Modelling Temporal Uncertainty in Archaeological Analysis. Journal of Archaeological Method and Theory, 19(3): 440-61. doi:10.1007/s10816-011-9122-3.
Other chronological analysis:
aoristic()
,
apportion()
,
fit()
## Data from Husi 2022 data("loire", package = "folio") ## Get time range loire_range <- loire[, c("lower", "upper")] ## Calculate aoristic sum (normal) aorist_raw <- aoristic(loire_range, step = 50, weight = FALSE) plot(aorist_raw, col = "grey") ## Calculate aoristic sum (weights) aorist_weighted <- aoristic(loire_range, step = 50, weight = TRUE) plot(aorist_weighted, col = "grey") ## Calculate aoristic sum (weights) by group aorist_groups <- aoristic(loire_range, step = 50, weight = TRUE, groups = loire$area) plot(aorist_groups, flip = TRUE, col = "grey") image(aorist_groups) ## Rate of change roc_weighted <- roc(aorist_weighted, n = 30) plot(roc_weighted) ## Rate of change by group roc_groups <- roc(aorist_groups, n = 30) plot(roc_groups, flip = TRUE)
## Data from Husi 2022 data("loire", package = "folio") ## Get time range loire_range <- loire[, c("lower", "upper")] ## Calculate aoristic sum (normal) aorist_raw <- aoristic(loire_range, step = 50, weight = FALSE) plot(aorist_raw, col = "grey") ## Calculate aoristic sum (weights) aorist_weighted <- aoristic(loire_range, step = 50, weight = TRUE) plot(aorist_weighted, col = "grey") ## Calculate aoristic sum (weights) by group aorist_groups <- aoristic(loire_range, step = 50, weight = TRUE, groups = loire$area) plot(aorist_groups, flip = TRUE, col = "grey") image(aorist_groups) ## Rate of change roc_weighted <- roc(aorist_weighted, n = 30) plot(roc_weighted) ## Rate of change by group roc_groups <- roc(aorist_groups, n = 30) plot(roc_groups, flip = TRUE)
Correspondence Analysis-Based Seriation
seriate_average(object, ...) ## S4 method for signature 'data.frame' seriate_average(object, margin = c(1, 2), axes = 1, ...) ## S4 method for signature 'matrix' seriate_average(object, margin = c(1, 2), axes = 1, ...)
seriate_average(object, ...) ## S4 method for signature 'data.frame' seriate_average(object, margin = c(1, 2), axes = 1, ...) ## S4 method for signature 'matrix' seriate_average(object, margin = c(1, 2), axes = 1, ...)
object |
A |
... |
Further arguments to be passed to internal methods. |
margin |
A |
axes |
An |
Correspondence analysis (CA) is an effective method for the seriation of archaeological assemblages. The order of the rows and columns is given by the coordinates along one dimension of the CA space, assumed to account for temporal variation. The direction of temporal change within the correspondence analysis space is arbitrary: additional information is needed to determine the actual order in time.
An AveragePermutationOrder
object.
N. Frerebeau
Ihm, P. (2005). A Contribution to the History of Seriation in Archaeology. In C. Weihs & W. Gaul (Eds.), Classification: The Ubiquitous Challenge. Berlin Heidelberg: Springer, p. 307-316. doi:10.1007/3-540-28084-7_34.
Other seriation methods:
permute()
,
seriate_rank()
,
seriate_refine()
## Replicates Desachy 2004 results data("compiegne", package = "folio") ## Get seriation order for columns on EPPM using the reciprocal averaging method ## Expected column order: N, A, C, K, P, L, B, E, I, M, D, G, O, J, F, H (indices <- seriate_rank(compiegne, EPPM = TRUE, margin = 2)) ## Get permutation order get_order(indices, 1) # rows get_order(indices, 2) # columns ## Permute columns (new <- permute(compiegne, indices)) ## See the vignette ## Not run: utils::vignette("seriation") ## End(Not run)
## Replicates Desachy 2004 results data("compiegne", package = "folio") ## Get seriation order for columns on EPPM using the reciprocal averaging method ## Expected column order: N, A, C, K, P, L, B, E, I, M, D, G, O, J, F, H (indices <- seriate_rank(compiegne, EPPM = TRUE, margin = 2)) ## Get permutation order get_order(indices, 1) # rows get_order(indices, 2) # columns ## Permute columns (new <- permute(compiegne, indices)) ## See the vignette ## Not run: utils::vignette("seriation") ## End(Not run)
Reciprocal Ranking Seriation
seriate_rank(object, ...) ## S4 method for signature 'data.frame' seriate_rank(object, EPPM = FALSE, margin = c(1, 2), stop = 100) ## S4 method for signature 'matrix' seriate_rank(object, EPPM = FALSE, margin = c(1, 2), stop = 100)
seriate_rank(object, ...) ## S4 method for signature 'data.frame' seriate_rank(object, EPPM = FALSE, margin = c(1, 2), stop = 100) ## S4 method for signature 'matrix' seriate_rank(object, EPPM = FALSE, margin = c(1, 2), stop = 100)
object |
A |
... |
Currently not used. |
EPPM |
A |
margin |
A |
stop |
An |
This procedure iteratively rearrange rows and/or columns according to their weighted rank in the data matrix until convergence.
Note that this procedure could enter into an infinite loop. If no convergence is reached before the maximum number of iterations, it stops with a warning.
A RankPermutationOrder object.
N. Frerebeau
Desachy, B. (2004). Le sériographe EPPM: un outil informatisé de sériation graphique pour tableaux de comptages. Revue archéologique de Picardie, 3(1), 39-56. doi:10.3406/pica.2004.2396.
Dunnell, R. C. (1970). Seriation Method and Its Evaluation. American Antiquity, 35(03), 305-319. doi:10.2307/278341.
Ihm, P. (2005). A Contribution to the History of Seriation in Archaeology. In C. Weihs & W. Gaul (Eds.), Classification: The Ubiquitous Challenge. Berlin Heidelberg: Springer, p. 307-316. doi:10.1007/3-540-28084-7_34.
Other seriation methods:
permute()
,
seriate_average()
,
seriate_refine()
## Replicates Desachy 2004 results data("compiegne", package = "folio") ## Get seriation order for columns on EPPM using the reciprocal averaging method ## Expected column order: N, A, C, K, P, L, B, E, I, M, D, G, O, J, F, H (indices <- seriate_rank(compiegne, EPPM = TRUE, margin = 2)) ## Get permutation order get_order(indices, 1) # rows get_order(indices, 2) # columns ## Permute columns (new <- permute(compiegne, indices)) ## See the vignette ## Not run: utils::vignette("seriation") ## End(Not run)
## Replicates Desachy 2004 results data("compiegne", package = "folio") ## Get seriation order for columns on EPPM using the reciprocal averaging method ## Expected column order: N, A, C, K, P, L, B, E, I, M, D, G, O, J, F, H (indices <- seriate_rank(compiegne, EPPM = TRUE, margin = 2)) ## Get permutation order get_order(indices, 1) # rows get_order(indices, 2) # columns ## Permute columns (new <- permute(compiegne, indices)) ## See the vignette ## Not run: utils::vignette("seriation") ## End(Not run)
Refine CA-based Seriation
seriate_refine(object, ...) ## S4 method for signature 'AveragePermutationOrder' seriate_refine(object, cutoff, margin = 1, axes = 1, n = 30, ...) ## S4 method for signature 'BootstrapCA' seriate_refine(object, cutoff, margin = 1, axes = 1, ...) ## S4 method for signature 'RefinePermutationOrder' hist(x, ...)
seriate_refine(object, ...) ## S4 method for signature 'AveragePermutationOrder' seriate_refine(object, cutoff, margin = 1, axes = 1, n = 30, ...) ## S4 method for signature 'BootstrapCA' seriate_refine(object, cutoff, margin = 1, axes = 1, ...) ## S4 method for signature 'RefinePermutationOrder' hist(x, ...)
object |
A |
... |
Further arguments to be passed to internal methods. |
cutoff |
A function that takes a numeric vector as argument and returns a single numeric value (see below). |
margin |
A length-one |
axes |
An |
n |
A non-negative |
x |
A |
seriate_refine()
allows to identify samples that are subject to
sampling error or samples that have underlying structural relationships
and might be influencing the ordering along the CA space.
This relies on a partial bootstrap approach to CA-based seriation where each
sample is replicated n
times. The maximum dimension length of
the convex hull around the sample point cloud allows to remove samples for
a given cutoff
value.
According to Peebles and Schachner (2012), "[this] point removal procedure [results in] a reduced dataset where the position of individuals within the CA are highly stable and which produces an ordering consistent with the assumptions of frequency seriation."
seriate_refine()
returns a RefinePermutationOrder
object.
hist()
is called it for its side-effects: it results in a histogram
being displayed (invisibly returns x
).
hist(RefinePermutationOrder)
: Compute and plot a histogram of convex hull
maximum dimension length.
N. Frerebeau
Peeples, M. A., & Schachner, G. (2012). Refining correspondence analysis-based ceramic seriation of regional data sets. Journal of Archaeological Science, 39(8), 2818-2827. doi:10.1016/j.jas.2012.04.040.
Other seriation methods:
permute()
,
seriate_average()
,
seriate_rank()
Get the times at which a time series was sampled.
## S4 method for signature 'EventDate' time(x, calendar = NULL)
## S4 method for signature 'EventDate' time(x, calendar = NULL)
x |
An R object. |
calendar |
An |
A numeric
vector.
N. Frerebeau
Other mutators:
data.frame
,
model
,
mutators
,
subset()
Operators acting on objects to extract or replace parts.
## S4 method for signature 'MeanDate' x[i, j, k, drop = FALSE] ## S4 method for signature 'IncrementTest' x[i, j, k, drop = FALSE] ## S4 method for signature 'PermutationOrder,ANY,missing' x[[i]]
## S4 method for signature 'MeanDate' x[i, j, k, drop = FALSE] ## S4 method for signature 'IncrementTest' x[i, j, k, drop = FALSE] ## S4 method for signature 'PermutationOrder,ANY,missing' x[[i]]
x |
An object from which to extract element(s) or in which to replace element(s). |
i , j , k
|
Indices specifying elements to extract or replace. |
drop |
A |
A subsetted object.
N. Frerebeau
Other mutators:
data.frame
,
model
,
mutators
,
series()