Generate an ensemble of possible age corrected data:See for a detailed description of the model. The time series in X are automatically flipped to range from most recent to oldest measurements when the intput t is given in increasing order.

bamCorrect(X, t, model = NULL)



data (vector or matrix n*p)


chronology for data X (n*1)


a list that describes the model to use in BAM

  • model$ns: number of samples

  • model$name: 'poisson' or 'bernoulli'

  • model$param: probability of growth band being perturbed (default: prob of missing band = prob of doubly-counted band = 0.05)

    • if model$param is a single argument, then the perturbations are symmetric (prob of missing band = prob of doubly-counted band)

    • if model$param = [a1 a2] and a1 neq a2 the model is asymmetric

      • a1 = prob(missing layer) - undercounted

      • a2 = prob(layer counted multiple times) - overcounted

    • if model$param: 2xp matrix, then different miscounting prob. are defined for each time series.

  • model$resize: do not resize: 0 (default), resize to shortest sample: -1, resize to longest sample: 1

  • model$tm: if a time model is provided, the code returns the corresponding perturbed data


res a list with

  • res$Xc: realizations of age-perturbed data matrix of size tn*p*ns (could be 2 or 3d)

  • res$tc: new chronology tn*1

  • res$tmc: corresponding ensemble of time-correction matrices (tn*p*ns) to map realizations in Xp back to the original data X (2=insert nan, 0=remove double band) (2 or 3d) where tn is the chronology length = n (default), shortest sample or longest sample depending on the chosen resizing option.

See also

Other BAM: runBam(), simulateBam()


Maud Comboul


if (FALSE) {
res <- bamCorrect(X,t) 
#will generate an ensemble of 1000 age models randomly following
#a Poisson process with rate parameter theta=0.05 used to perturb data X
res <- bamCorrect(X,t,model) 
#will correct data X  with the model specified in
#the model structure