rdbw2d.dist {rd2d} | R Documentation |
Bandwidth Selection for Distance-Based RD Designs
Description
rdbw2d.dist
implements bandwidth selector for distance-based local polynomial boundary regression discontinuity (RD) point estimators with robust bias-corrected pointwise confidence intervals and
uniform confidence bands, developed in Cattaneo, Titiunik and Yu (2025a) with a companion software article Cattaneo, Titiunik and Yu (2025b). For robust bias-correction, see Calonico, Cattaneo, Titiunik (2014).
Usage
rdbw2d.dist(
Y,
D,
b = NULL,
p = 1,
kink = c("off", "on"),
kernel = c("tri", "triangular", "epa", "epanechnikov", "uni", "uniform", "gau",
"gaussian"),
bwselect = c("mserd", "imserd", "msetwo", "imsetwo"),
vce = c("hc1", "hc0", "hc2", "hc3"),
bwcheck = 20 + p + 1,
masspoints = c("check", "adjust", "off"),
C = NULL,
scaleregul = 1,
cqt = 0.5
)
Arguments
Y |
Dependent variable; a numeric vector of length |
D |
Distance-based scores |
b |
Optional evaluation points; a matrix or data frame specifying boundary points |
p |
Polynomial order for point estimation. Default is |
kink |
Logical; whether to apply kink adjustment. Options: |
kernel |
Kernel function to use. Options are |
bwselect |
Bandwidth selection strategy. Options:
|
vce |
Variance-covariance estimator for standard errors. Options:
|
bwcheck |
If a positive integer is provided, the preliminary bandwidth used in the calculations is enlarged so that at least |
masspoints |
Strategy for handling mass points in the running variable. Options:
|
C |
Cluster ID variable used for cluster-robust variance estimation with degrees-of-freedom weights.Default is |
scaleregul |
Scaling factor for the regularization term in bandwidth selection. Default is |
cqt |
Constant controlling subsample fraction for initial bias estimation. Default is |
Value
An object of class "rdbw2d.dist"
, containing:
bws
Data frame of optimal bandwidths for each evaluation point:
b1
First coordinate of the evaluation point
b1
.b2
Second coordinate of the evaluation point
b2
.h0
Bandwidth for observations with distance
D_{i}(\mathbf{b}) < 0
.h1
Bandwidth for observations with distance
D_{i}(\mathbf{b}) \geq 0
.Nh0
Effective sample size for
D_{i}(\mathbf{b}) < 0
.Nh1
Effective sample size for
D_{i}(\mathbf{b}) \geq 0
.
mseconsts
Data frame of intermediate bias and variance constants used for MSE/IMSE calculations.
opt
List of options used in the function call.
Author(s)
Matias D. Cattaneo, Princeton University. cattaneo@princeton.edu
Rocío Titiunik, Princeton University. titiunik@princeton.edu
Ruiqi Rae Yu, Princeton University. rae.yu@princeton.edu
References
Cattaneo, M. D., Titiunik, R., Yu, R. R. (2025a). Estimation and Inference in Boundary Discontinuity Designs
Cattaneo, M. D., Titiunik, R., Yu, R. R. (2025b). rd2d: Causal Inference in Boundary Discontinuity Designs
Calonico, S., Cattaneo, M. D., Titiunik, R. (2014) Robust Nonparametric Confidence Intervals for Regression-Discontinuity Designs
See Also
rd2d.dist
, rd2d
, summary.rdbw2d.dist
, print.rdbw2d.dist
Examples
set.seed(123)
n <- 5000
# Generate running variables x1 and x2
x1 <- rnorm(n)
x2 <- rnorm(n)
# Define treatment assignment: treated if x1 >= 0
d <- as.numeric(x1 >= 0)
# Generate outcome variable y with some treatment effect
y <- 3 + 2 * x1 + 1.5 * x2 + 1.5 * d + rnorm(n, sd = 0.5)
# Define evaluation points (e.g., at the origin and another point)
eval <- data.frame(x.1 = c(0, 0), x.2 = c(0, 1))
# Compute Euclidean distances to evaluation points
dist.a <- sqrt((x1 - eval$x.1[1])^2 + (x2 - eval$x.2[1])^2)
dist.b <- sqrt((x1 - eval$x.1[2])^2 + (x2 - eval$x.2[2])^2)
# Combine distances into a matrix
D <- as.data.frame(cbind(dist.a, dist.b))
# Assign positive distances for treatment group, negative for control
d_expanded <- matrix(rep(2 * d - 1, times = ncol(D)), nrow = nrow(D), ncol = ncol(D))
D <- D * d_expanded
# Run the rd2d.dist function
bws <- rdbw2d.dist(y, D, b = eval)
# View the estimation results
print(bws)
summary(bws)