Function implements the Romano-Wolf multiple hypothesis correction procedure for objects of type `fixest_multi` (`fixest_multi` are objects created by `fixest::feols()` that use `feols()` multiple-estimation interface). The null hypothesis is always imposed on the bootstrap dgp.
Usage
rwolf(
models,
param,
B,
R = NULL,
r = 0,
p_val_type = "two-tailed",
weights_type = "rademacher",
engine = "R",
nthreads = 1,
bootstrap_type = "fnw11",
...
)
Arguments
- models
An object of type `fixest_multi` or a list of objects of type `fixest`, estimated via ordinary least squares (OLS)
- param
The regression parameter to be tested
- B
The number of bootstrap iterations
- R
Hypothesis Vector giving linear combinations of coefficients. Must be either NULL or a vector of the same length as `param`. If NULL, a vector of ones of length param.
- r
A numeric. Shifts the null hypothesis H0: `param.` = r vs H1: `param.` != r
- p_val_type
Character vector of length 1. Type of hypothesis test By default "two-tailed". Other options include "equal-tailed" (for one-sided tests), ">" and "<" (for two-sided tests).
- weights_type
character or function. The character string specifies the type of bootstrap to use: One of "rademacher", "mammen", "norm" and "webb". Alternatively, type can be a function(n) for drawing wild bootstrap factors. "rademacher" by default. For the Rademacher distribution, if the number of replications B exceeds the number of possible draw ombinations, 2^(#number of clusters), then `boottest()` will use each possible combination once (enumeration).
- engine
Should the wild cluster bootstrap run via `fwildclusterboot's` R implementation or via `WildBootTests.jl`? 'R' by default. The other option is `WildBootTests.jl`. Running the bootstrap through `WildBootTests.jl` might significantly reduce the runtime of `rwolf()` for complex problems (e.g. problems with more than 500 clusters).
- nthreads
Integer. The number of threads to use when running the bootstrap.
- bootstrap_type
Either "11", "13", "31", "33", or "fnw11". "fnw11" by default. See `?fwildclusterboot::boottest` for more details
- ...
additional function values passed to the bootstrap function.
Value
A data.frame containing the following columns:
- model
Index of Models
- Estimate
The estimated coefficient of `param` in the respective model.
- Std. Error
The estimated standard error of `param` in the respective model.
- t value
The t statistic of `param` in the respective model.
- Pr(>|t|)
The uncorrected pvalue for `param` in the respective model.
- RW Pr(>|t|)
The Romano-Wolf corrected pvalue of hypothesis test for `param` in the respective model.
Setting Seeds and Random Number Generation
To guarantee reproducibility, please set a global random seeds via `set.seed()`.
References
Clarke, Romano & Wolf (2019), STATA Journal. IZA working paper: https://ftp.iza.org/dp12845.pdf
Examples
library(fixest)
library(wildrwolf)
set.seed(12345)
N <- 1000
X1 <- rnorm(N)
Y1 <- 1 + 1 * X1 + rnorm(N)
Y2 <- 1 + 0.01 * X1 + rnorm(N)
Y3 <- 1 + 0.01 * X1 + rnorm(N)
Y4 <- 1 + 0.01 * X1 + rnorm(N)
B <- 999
# intra-cluster correlation of 0 for all clusters
cluster <- rep(1:50, N / 50)
data <- data.frame(Y1 = Y1,
Y2 = Y2,
Y3 = Y3,
Y4 = Y4,
X1 = X1,
cluster = cluster)
res <- feols(c(Y1, Y2, Y3) ~ X1, data = data, cluster = ~ cluster)
res_rwolf <- rwolf(models = res, param = "X1", B = B)
#>
|
| | 0%
#> Error in feols(fml = Y1 ~ 1, data = data, cluster = ~cluster): Argument `data` must be either: i) a matrix, or ii) a data.frame. Problem:
#> it is not a matrix nor a data.frame (instead it is a function).
res_rwolf
#> Error in eval(expr, envir, enclos): object 'res_rwolf' not found