Last chance! 50% off unlimited learning
Sale ends in
Returns a list
with censored values, intervals, and censored response matrix y
.
gjamCensorY(values, intervals, y, type='CA', whichcol = c(1:ncol(y)))
Values in y
that are censored, specified by intervals
matrix
having two rows and one column for each value
in values
. The first row holds lower bounds. The second row holds
upper bounds. See Examples.
Response matrix
, n
rows by S
columns. All values within intervals
will be replaced with values
Response type, see typeNames
in gjam
Columns in y
that are censored (often not all responses are
censored)
Returns a list containing two elements.
y
n by S matrix updated with censored values substituted for
those falling within intervals
.
censor
list
containing $columns
that are censored and
$partition
, a matrix with 3 rows used in gjam
and gjamPlot
, one column per censor interval. Rows
are values, followed by lower and upper bounds.
Any values in y
that fall within censored intervals
are replaced with censored values
. The example below simulates data collected on an 'octave scale': 0, 1, 2, 4, 8, ..., an approach to accelerate data collection with approximate bins.
Clark, J.S., D. Nemergut, B. Seyednasrollah, P. Turner, and S. Zhang. 2017. Generalized joint attribute modeling for biodiversity analysis: Median-zero, multivariate, multifarious data. Ecological Monographs 87, 34-56.
gjamSimData
simulates data
gjam
analyzes data
A more detailed vignette is can be obtained with:
browseVignettes('gjam')
website 'http://sites.nicholas.duke.edu/clarklab/code/'.
# NOT RUN {
# data in octaves
v <- up <- c(0, 2^c(0:4), Inf)
dn <- c(-Inf, v[-length(v)])
i <- rbind( dn, up ) # intervals
f <- gjamSimData(n = 2000, S = 15, Q = 3, typeNames='CA')
y <- f$y
cc <- c(3:6) # censored columns
g <- gjamCensorY(values = v, intervals = i, y = y, whichcol = cc)
y[,cc] <- g$y # replace columns
ml <- list(ng = 500, burnin = 100, censor = g$censor, typeNames = f$typeNames)
output <- gjam(f$formula, xdata = f$xdata, ydata = y, modelList = ml)
#repeat with ng = 2000, burnin = 500, then:
pl <- list(trueValues = f$trueValues, width = 3, height = 3)
gjamPlot(output, pl)
# upper detection limit
up <- 5
v <- up
i <- matrix(c(up,Inf),2)
rownames(i) <- c('down','up')
f <- gjamSimData(typeNames='CA')
g <- gjamCensorY(values = v, intervals = i, y = f$y)
ml <- list(ng = 500, burnin = 100, censor = g$censor, typeNames = f$typeNames)
out <- gjam(f$formula, xdata = f$xdata, ydata = g$y, modelList = ml)
#repeat with ng = 2000, burnin = 500, then:
pl <- list(trueValues = f$trueValues, width = 3, height = 3)
gjamPlot(out, pl)
# lower detection limit
lo <- .001
values <- upper <- lo
intervals <- matrix(c(-Inf,lo),2)
rownames(intervals) <- c('lower','upper')
# }
Run the code above in your browser using DataLab