bootstrap | R Documentation |
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'
.
bootstrap_msel(
object,
iter = 100,
opt_type = "optim",
opt_args = NULL,
is_ind = FALSE,
n_sim = 1000,
n_cores = 1
)
bootstrap_combine_msel(...)
object |
an object of class 'msel'. |
iter |
the number of bootstrap iterations. |
opt_type |
the same as |
opt_args |
the same as |
is_ind |
logical; if |
n_sim |
the same as |
n_cores |
the same as |
... |
objects returned by function
|
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'
.
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.
# -------------------------------
# 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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.