bootstrap: Bootstrap for msel function

bootstrapR Documentation

Bootstrap for msel function

Description

Function bootstrap_msel provides bootstrap estimates of the parameters of the model estimated via the msel function. Function bootstrap_combine_msel allows to combine several objects of class 'bootstrap_msel'.

Usage

bootstrap_msel(
  object,
  iter = 100,
  opt_type = "optim",
  opt_args = NULL,
  is_ind = FALSE,
  n_sim = 1000,
  n_cores = 1
)

bootstrap_combine_msel(...)

Arguments

object

an object of class 'msel'.

iter

the number of bootstrap iterations.

opt_type

the same as opt_type argument of the msel function.

opt_args

the same as opt_args argument of the msel functions.

is_ind

logical; if TRUE then the function also returns a numeric matrix of indexes of observations used in the bootstrap samples.

n_sim

the same as n_sim argument of the msel function.

n_cores

the same as n_cores argument of the msel function.

...

objects returned by function bootstrap_msel to be combined into a single object.

Details

The function generates iter bootstrap samples and estimates the parameters \theta of the model by using each of these samples. Estimate \hat{\theta}^{(b)} from the b-th of these samples is stored as the b-th row of the numeric matrix par which is an element of the returned object.

Use update_msel function to transfer the bootstrap estimates to the object of class 'msel'.

Value

Function bootstrap_msel returns an object of class "bootstrap_msel". This object is a list which may contain the following elements:

  • par - a numeric matrix such that par[b, ] is a vector of the estimates of the parameters of the model estimated via msel function on the b-th bootstrap sample.

  • iter - the number of the bootstrap iterations.

  • cov - bootstrap estimate of the covariance matrix which equals to cov(par).

  • ind - a numeric matrix such that ind[, b] stores the indexes of the observations from object$data included into the b-th bootstrap sample.

Function bootstrap_combine_msel returns the object which combines several objects returned by the bootstrap_msel function into a single object.

Examples

# -------------------------------
# Bootstrap for the probit model
# -------------------------------

# ---
# Step 1
# Simulation of data
# ---

# Load required package
library("mnorm")

# Set seed for reproducibility
set.seed(123)

# The number of observations
n <- 100

# Regressors (covariates)
w1 <- runif(n = n, min = -1, max = 1)
w2 <- runif(n = n, min = -1, max = 1)

# Random errors
u <- rnorm(n = n, mean = 0, sd = 1)

# Coefficients
gamma <- c(-1, 2)

# Linear index
li <- gamma[1] * w1 + gamma[2] * w2

# Latent variable
z_star <- li + u

# Cuts
cuts <- c(-1, 0.5, 2)

# Observable ordered outcome
z                                           <- rep(0, n)
z[(z_star > cuts[1]) & (z_star <= cuts[2])] <- 1
z[(z_star > cuts[2]) & (z_star <= cuts[3])] <- 2
z[z_star > cuts[3]]                         <- 3
table(z)

# Data
data <- data.frame(w1 = w1, w2 = w2, z = z)

# ---
# Step 2
# Estimation of the parameters
# ---

# Estimation
model <- msel(formula = z ~ w1 + w2, data = data)
summary(model)
 
# ---
# Step 3
# Bootstrap
# ---

# Perform bootstrap
bootstrap <- bootstrap_msel(model)

# Test the hypothesis that H0: gamma[2] = -2gamma[1]
# by using the t-test and with bootstrap p-values
fn_test <- function(object)
{
  gamma <- coef(object, eq = 1)
  return(gamma[2] + 2 * gamma[1])
}
b <- test_msel(object    = model, 
               fn        = fn_test,
               test      = "t", 
               method    = "bootstrap",
               ci        = "percentile",
               se_type   = "bootstrap",
               bootstrap = bootstrap)
summary(b)

# Replicate the analysis with the additional 20 bootstrap iterations
bootstrap2    <- bootstrap_msel(model, iter = 20)
bootstrap_new <- bootstrap_combine_msel(bootstrap, bootstrap2)
b2 <- test_msel(object    = model, 
                fn        = fn_test,
                test      = "t", 
                method    = "bootstrap",
                ci        = "percentile",
                se_type   = "bootstrap",
                bootstrap = bootstrap)
summary(b2)

 

switchSelection documentation built on Sept. 26, 2024, 5:07 p.m.