penhdfeppml_cluster_int {penppml} | R Documentation |
Plugin Lasso Estimation
Description
Performs plugin lasso - PPML estimation with HDFE. This is an internal function, called by mlfitppml_int
and
penhdfeppml_int
when users select the method = "plugin"
option, but it's made available
as a stand-alone option for advanced users who may prefer to avoid some overhead imposed by the
wrappers.
Usage
penhdfeppml_cluster_int(
y,
x,
fes,
cluster,
tol = 1e-08,
hdfetol = 1e-04,
glmnettol = 1e-12,
penalty = "lasso",
penweights = NULL,
saveX = TRUE,
mu = NULL,
colcheck = TRUE,
colcheck_x = colcheck,
colcheck_x_fes = colcheck,
K = 15,
init_z = NULL,
post = FALSE,
verbose = FALSE,
lambda = NULL,
phipost = TRUE,
gamma_val = NULL
)
Arguments
y |
Dependent variable (a vector) |
x |
Regressor matrix. |
fes |
List of fixed effects. |
cluster |
Optional: a vector classifying observations into clusters (to use when calculating SEs). |
tol |
Tolerance parameter for convergence of the IRLS algorithm. |
hdfetol |
Tolerance parameter for the within-transformation step,
passed on to |
glmnettol |
Tolerance parameter to be passed on to |
penalty |
Only "lasso" is supported at the present stage. |
penweights |
Optional: a vector of coefficient-specific penalties to use in plugin lasso when
|
saveX |
Logical. If |
mu |
A vector of initial values for mu that can be passed to the command. |
colcheck |
Logical. If |
colcheck_x |
Logical. If |
colcheck_x_fes |
Logical. If |
K |
Maximum number of iterations. |
init_z |
Optional: initial values of the transformed dependent variable, to be used in the first iteration of the algorithm. |
post |
Logical. If |
verbose |
Logical. If |
lambda |
Penalty parameter (a number). |
phipost |
Logical. If |
gamma_val |
Numerical value that determines the regularization threshold as defined in Belloni, Chernozhukov, Hansen, and Kozbur (2016). NULL default sets parameter to 0.1/log(n). |
Details
The plugin method uses coefficient-specific penalty weights that account for heteroskedasticity. The penalty parameters are calculated automatically by the function using statistical theory - for a brief discussion of this, see Breinlich, Corradi, Rocha, Ruta, Santos Silva and Zylkin (2021), and for a more in-depth analysis, check Belloni, Chernozhukov, Hansen, and Kozbur (2016), which introduced the specific implementation used in this package. Heuristically, the penalty parameters are set at a level high enough so that the absolute value of the score for each regressor must be statistically large relative to its standard error in order for the regressors to be selected.
Value
An object of class elnet
with the elements described in glmnet, as
well as the following:
-
mu
: a 1 xlength(y)
matrix with the final values of the conditional mean\mu
. -
deviance
. -
bic
: Bayesian Information Criterion. -
phi
: coefficient-specific penalty weights. -
x_resid
: matrix of demeaned regressors. -
z_resid
: vector of demeaned (transformed) dependent variable.
References
Breinlich, H., Corradi, V., Rocha, N., Ruta, M., Santos Silva, J.M.C. and T. Zylkin (2021). "Machine Learning in International Trade Research: Evaluating the Impact of Trade Agreements", Policy Research Working Paper; No. 9629. World Bank, Washington, DC.
Correia, S., P. Guimaraes and T. Zylkin (2020). "Fast Poisson estimation with high dimensional fixed effects", STATA Journal, 20, 90-115.
Gaure, S (2013). "OLS with multiple high dimensional category variables", Computational Statistics & Data Analysis, 66, 8-18.
Friedman, J., T. Hastie, and R. Tibshirani (2010). "Regularization paths for generalized linear models via coordinate descent", Journal of Statistical Software, 33, 1-22.
Belloni, A., V. Chernozhukov, C. Hansen and D. Kozbur (2016). "Inference in high dimensional panel models with an application to gun control", Journal of Business & Economic Statistics, 34, 590-605.
Examples
## Not run:
# To reduce run time, we keep only countries in Latin America and the Caribbean:
LatAmericaCar <- countries$iso[countries$sub.region == "Latin America and the Caribbean"]
trade <- trade[(trade$imp %in% LatAmericaCar) & (trade$exp %in% LatAmericaCar), ]
# Now generate the needed x, y and fes objects:
y <- trade$export
x <- data.matrix(trade[, -1:-6])
fes <- list(exp_time = interaction(trade$exp, trade$time),
imp_time = interaction(trade$imp, trade$time),
pair = interaction(trade$exp, trade$imp))
# Finally, we try penhdfeppml_cluster_int:
reg <- penhdfeppml_cluster_int(y = y, x = x, fes = fes, cluster = fes$pair)
## End(Not run)