flexMeboot {meboot}R Documentation

Flexible Extension of the Maximum Entropy Bootstrap Procedure

Description

This function extends the maximum entropy bootstrap procedure implemented in meboot to allow for for a flexible trend up, flat or down.

Usage

  flexMeboot (x, reps = 9, segment = 5, forc = FALSE, myseq = seq(-1, 1, by = 1))

Arguments

x

vector of data, ts object.

reps

number of replicates to generate.

segment

block size.

forc

logical. If TRUE the ensemble is forced to satisfy the central limit theorem. See force.clt.

myseq

directions for trend within a block of data is chosen randomly with the user's choice limited by the range of values given by myseq. For example, myseq=seq(-1,1,by=0.5) provides five options for direction changes. If the user specifies any single number instead of a sequence, (e.g., myseq=1) then flexMeboot will not change the directions of trends at all, but will modify the original meboot function to resample separately within several non-overlapping blocks, before joining them into resampled time series. This may be desirable for long series and for some applications.

Details

flexMeboot uses non-overlapping blocks having only m observations. A trend a+bta + bt is replaced by a+Bta + Bt, where B = sample(myseq) * b.

Its steps are as follows:

  1. Choose block size segment denoted here as mm (default equal to m=5m=5) and divide the original time series x of length TT into k=floor(T/m)k = floor(T/m) blocks or subsets. Note that when T/mT/m is not an integer the kk-th block will have a few more than mm items. Hence let us denote the number of observations in each block as mm which equals mm for most blocks, except the kk-th.

  2. Regress each block having m observations as subsets of x on the set τ=1,2,...,m\tau = 1, 2,..., m, and store the intercept b0b0, the slope b1b1 of τ\tau and the residuals rr.

  3. Note that the positive (negative) sign of the slope b1b1 in this regression determines the up (down) direction of the time series in that block. Hence the next step of the algorithm replaces b1b1 by B1=b1wB1 = b1 * w, defined by a randomly chosen weight win(1,0,1)w in (-1, 0, 1). For example, when the random choice yields w=1w = -1, the sign of b1b1 is reversed. Our weighting independently injects some limited flexibility to the directions of values block segments of the original time series.

  4. Reconstruct all time series blocks as: b0+b1wτ+rb0 + b1 * w * \tau + r, by adding back the residual rr of the regression on τ\tau.

  5. The next step applies the function meboot to each block of time serie-now having a modified trend-and create a large number, JJ, of resampled time series for each of the kk blocks.

  6. Sequentially join the JJ replicates of all kk blocks or subsets together.

Value

A matrix containing by columns the bootstrapped replicated of the original data x.

References

Vinod, H.D. (2012), Constructing Scenarios of Time Heterogeneous Series for Stress Testing, Available at SSRN: https://www.ssrn.com/abstract=1987879.

See Also

meboot.

Examples

set.seed(235)
myseq <- seq(-1, 1, by = 0.5)
xx <- flexMeboot(x = AirPassengers, myseq = myseq, reps = 3)
matplot(cbind(AirPassengers, xx), type = "l")

[Package meboot version 1.4-9.4 Index]