# NOTE: THIS IS CARRIED OVER FROM THE OLD CODE (e.g. "ARIMA/Review Code - ARIMA_functions.R")
# CLEARLY FLAG ANY CHANGES!!!!!!!!!!!!!!!!!!!!!!!
meboot2 <- function (x, reps = 999, trim = 0.1, reachbnd = FALSE, expand.sd = FALSE, force.clt = FALSE, scl.adjustment = FALSE, sym = FALSE, elaps = FALSE, colsubj, coldata, coltimes, ...){
# meboot2 function for bootstrapping positive time series
# NOTES:
# This is a wrapper function using functions from the {meboot} package,
# specifically: meboot.pdata.frame() and meboot.part()
# GP added: no require(meboot) here, because have it in library_calls.R
if ("pdata.frame" %in% class(x)) {
res <- meboot::meboot.pdata.frame(x, reps, trim, reachbnd, expand.sd,
force.clt, scl.adjustment, sym, elaps, colsubj, coldata,
coltimes, ...)
return(res)
}
ptm1 <- proc.time()
n <- length(x)
xx <- sort(x)
ordxx <- order(x)
if (sym) {
xxr <- rev(xx)
xx.sym <- mean(xx) + 0.5 * (xx - xxr)
xx <- xx.sym
}
z <- rowMeans(embed(xx, 2))
dv <- abs(diff(as.numeric(x)))
dvtrim <- mean(dv, trim = trim)
xmin <- 0
xmax <- xx[n] + dvtrim
aux <- colSums(t(embed(xx, 3)) * c(0.25, 0.5, 0.25))
desintxb <- c(0.75 * xx[1] + 0.25 * xx[2], aux, 0.25 * xx[n -
1] + 0.75 * xx[n])
ensemble <- matrix(x, nrow = n, ncol = reps)
ensemble <- apply(ensemble, 2, meboot::meboot.part, n, z, xmin, xmax,
desintxb, reachbnd)
qseq <- apply(ensemble, 2, sort)
ensemble[ordxx, ] <- qseq
if (expand.sd)
ensemble <- expand.sd(x = x, ensemble = ensemble, ...)
if (force.clt)
ensemble <- force.clt(x = x, ensemble = ensemble)
if (scl.adjustment) {
zz <- c(xmin, z, xmax)
v <- diff(zz^2)/12
xb <- mean(x)
s1 <- sum((desintxb - xb)^2)
uv <- (s1 + sum(v))/n
desired.sd <- sd(x)
actualME.sd <- sqrt(uv)
if (actualME.sd <= 0)
stop("actualME.sd<=0 Error")
out <- desired.sd/actualME.sd
kappa <- out - 1
ensemble <- ensemble + kappa * (ensemble - xb)
}
else kappa <- NULL
if (is.ts(x)) {
ensemble <- ts(ensemble, frequency = frequency(x), start = start(x))
dimnames(ensemble)[[2]] <- paste("Series", 1:reps)
}
ptm2 <- proc.time()
elapsr <- elapsedtime(ptm1, ptm2)
if (elaps)
cat("\n Elapsed time:", elapsr$elaps, paste(elapsr$units,
".", sep = ""), "\n")
list(x = x, ensemble = ensemble, xx = xx, z = z, dv = dv,
dvtrim = dvtrim, xmin = xmin, xmax = xmax, desintxb = desintxb,
ordxx = ordxx, kappa = kappa, elaps = elapsr)
}#END meboot2
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.