| Title: | Estimates Weights for Confounding Control for Continuous-Valued Exposures | 
| Version: | 0.0.1 | 
| Description: | Estimates weights to make a continuous-valued exposure statistically independent of a vector of pre-treatment covariates using the method proposed in Huling, Greifer, and Chen (2021) <doi:10.48550/arXiv.2107.07086>. | 
| License: | MIT + file LICENSE | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.1.1 | 
| Depends: | osqp (≥ 0.6.0.3) | 
| Imports: | locfit | 
| Suggests: | cobalt | 
| NeedsCompilation: | no | 
| Packaged: | 2022-05-09 18:31:38 UTC; huling | 
| Author: | Jared Huling | 
| Maintainer: | Jared Huling <jaredhuling@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2022-05-10 15:20:02 UTC | 
Construction of distance covariance optimal weights weights
Description
Constructs independence-inducing weights (distance covariance optimal weights) for estimation of causal quantities for continuous-valued treatments
Usage
independence_weights(
  A,
  X,
  lambda = 0,
  decorrelate_moments = FALSE,
  preserve_means = FALSE,
  dimension_adj = TRUE
)
Arguments
| A | vector indicating the value of the treatment or exposure variable. Should be a numeric vector. | 
| X | matrix of covariates with number of rows equal to the length of  | 
| lambda | tuning parameter for the penalty on the sum of squares of the weights | 
| decorrelate_moments | logical scalar. Whether or not to add constraints that result in exact decorrelation of
weighted first order moments of  | 
| preserve_means | logical scalar. Whether or not to add constraints that result in exact preservation of
weighted first order moments of  | 
| dimension_adj | logical scalar. Whether or not to add adjustment to energy distance terms that account for
the dimensionality of  | 
Value
An object of class "independence_weights" with elements:
| weights | A vector of length  | 
| A | Treatment vector | 
| opt | The optimization object returned by  | 
| objective | The value of the objective function at its optimal value. This is the weighted dependence statistic plus any ridge penalty on the weights. | 
| D_unweighted | The value of the weighted dependence distance using all weights = 1 (i.e. unweighted) | 
| D_w | The value of the weighted dependence distance of Huling, et al. (2021) using the optimal estimated weights. This is the weighted dependence statistic without the ridge penalty on the weights. | 
| distcov_unweighted | The unweighted distance covariance term. This is the standard distance covariance of Szekely et al (2007). This term
is always equal to  | 
| distcov_weighted | The weighted distance covariance term. This term itself does not directly measure weighted dependence but is a critical component of it. | 
| energy_A | The weighted energy distance between  | 
| energy_X | The weighted energy distance between  | 
| ess | The estimated effective sample size of the weights using Kish's effective sample size formula. | 
An object of class "independence_weights".
| weights | the estimated weights, the distance covariance optimal weights (DCOWs) | 
| A | the treatment vector | 
| opt | the object returned by whatever optimization routine was used | 
| objective | the value of the optimized objective function | 
| distcov_unweighted | the unweighted distance covariance between treatment and covariates | 
| distcov_weighted | the weighted distance covariance between treatment and covariates | 
| energy_A | the (energy) distance between the treatment distribution and the weighted treatment distribution. Smaller values mean the marginal distribution of the treatment is preserved after weighting | 
| energy_x | the (energy) distance between the covariate distribution and the weighted covariate distribution. Smaller values mean the marginal distribution of the covariates is preserved after weighting | 
| ess | the expected sample size after weighting. Kish's approximation is used | 
References
Szekely, G. J., Rizzo, M. L., & Bakirov, N. K. (2007). Measuring and testing dependence by correlation of distances. Annals of Statistics 35(6) 2769-2794 doi: 10.1214/009053607000000505
Huling, J. D., Greifer, N., & Chen, G. (2021). Independence weights for causal inference with continuous exposures. arXiv preprint arXiv:2107.07086. https://arxiv.org/abs/2107.07086
See Also
print.independence_weights for printing of fitted energy balancing objects
Examples
simdat <- simulate_confounded_data(seed = 999, nobs = 500)
y <- simdat$data$Y
A <- simdat$data$A
X <- as.matrix(simdat$data[c("Z1", "Z2", "Z3", "Z4", "Z5")])
dcows <- independence_weights(A, X)
print(dcows)
# distribution of response:
quantile(y)
## create grid
trt_vec <- seq(min(simdat$data$A), 50, length.out=500)
## estimate ADRF
adrf_hat <- weighted_kernel_est(A, y, dcows$weights, trt_vec)$est
## estimate naively without weights
adrf_hat_unwtd <- weighted_kernel_est(A, y, rep(1, length(y)), trt_vec)$est
ylims <- range(c(simdat$data$Y, simdat$true_adrf(trt_vec)))
plot(x = simdat$data$A, y = simdat$data$Y, ylim = ylims, xlim = c(0,50))
## true ADRF
lines(x = trt_vec, y = simdat$true_adrf(trt_vec), col = "blue", lwd=2)
## estimated ADRF
lines(x = trt_vec, y = adrf_hat, col = "red", lwd=2)
## naive estimate
lines(x = trt_vec, y = adrf_hat_unwtd, col = "green", lwd=2)
Printing results for estimated energy balancing weights
Description
Prints results for energy balancing weights
Prints weighted energy statistics for given weights
Usage
## S3 method for class 'independence_weights'
print(x, digits = max(getOption("digits") - 3, 3), ...)
## S3 method for class 'weighted_energy_terms'
print(x, digits = max(getOption("digits") - 3, 3), ...)
Arguments
| x | a fitted object from  | 
| digits | minimal number of significant digits to print. | 
| ... | further arguments passed to or from  | 
Value
Nothing returned
Nothing returned
See Also
independence_weights for function which produces energy balancing weights
weighted_energy_stats for function which produces energy balancing weights
Simulation of confounded data with a continuous treatment
Description
Simulates confounded data with continuous treatment based on Vegetabile et al's simulation
Usage
simulate_confounded_data(
  seed = 1,
  nobs = 1000,
  MX1 = -0.5,
  MX2 = 1,
  MX3 = 0.3,
  A_effect = TRUE
)
Arguments
| seed | random seed for reproducibility | 
| nobs | number of observations | 
| MX1 | the mean of the first covariate. Defaults to -0.5, the value used in the simulations of Vegetabile, et al (2021). | 
| MX2 | the mean of the second and fourth covariates. Defaults to 1, the value used in the simulations of Vegetabile, et al (2021). | 
| MX3 | the probability that the fifth covariate (a binary covariate) is equal to 1. Defaults to 0.3, the value used in the simulations of Vegetabile, et al (2021). | 
| A_effect | whether ( | 
Value
An list with elements:
| data | A simulated dataset with  | 
| true_adrf | A function that inputs values of the treatment  | 
A list with the following elements
| data | a  | 
| true_adrf | a function; true average dose response function | 
| original_covariates | original, untransformed covariates in the simulation setup. Do not use, as it makes the simulation setup significantly easier. | 
References
Vegetabile, B. G., Griffin, B. A., Coffman, D. L., Cefalu, M., Robbins, M. W., and McCaffrey, D. F. (2021). Nonparametric estimation of population average dose-response curves using entropy balancing weights for continuous exposures. Health Services and Outcomes Research Methodology, 21(1), 69-110.
Examples
simdat <- simulate_confounded_data(seed = 999, nobs = 500)
str(simdat$data)
A <- simdat$data$A
y <- simdat$data$Y
trt_vec <- seq(min(simdat$data$A), max(simdat$data$A), length.out=500)
ylims <- range(c(simdat$data$Y, simdat$true_adrf(trt_vec)))
plot(x = simdat$data$A, y = simdat$data$Y, ylim = ylims)
lines(x = trt_vec, y = simdat$true_adrf(trt_vec), col = "blue", lwd=2)
## naive estimate of ADRF without weights
adrf_hat_unwtd <- weighted_kernel_est(A, y, rep(1, length(y)), trt_vec)$est
lines(x = trt_vec, y = adrf_hat_unwtd, col = "green", lwd=2)
Calculation of weighted energy statistics for weighted dependence
Description
Calculates weighted energy statistics used to quantify weighted dependence
Usage
weighted_energy_stats(A, X, weights, dimension_adj = TRUE)
Arguments
| A | treatment vector indicating values of the treatment/exposure variable. | 
| X | matrix of covariates with number of rows equal to the length of  | 
| weights | a vector of sample weights | 
| dimension_adj | logical scalar. Whether or not to add adjustment to energy distance terms that account for
the dimensionality of  | 
Value
a list with the following components
| D_w | The value of the weighted dependence distance of Huling, et al. (2021) using the optimal estimated weights. This is the weighted dependence statistic without the ridge penalty on the weights. | 
| distcov_unweighted | The unweighted distance covariance term. This is the standard distance covariance of Szekely et al (2007). This term
is always equal to  | 
| distcov_weighted | The weighted distance covariance term. This term itself does not directly measure weighted dependence but is a critical component of it. | 
| energy_A | The weighted energy distance between  | 
| energy_X | The weighted energy distance between  | 
| ess | The estimated effective sample size of the weights using Kish's effective sample size formula. | 
An object of class "weighted_energy_terms".
| D_w | the value of the DCOW measure | 
| distcov_unweighted | the unweighted distance covariance between treatment and covariates | 
| distcov_weighted | the weighted distance covariance between treatment and covariates | 
| energy_A | the (energy) distance between the treatment distribution and the weighted treatment distribution. Smaller values mean the marginal distribution of the treatment is preserved after weighting | 
| energy_x | the (energy) distance between the covariate distribution and the weighted covariate distribution. Smaller values mean the marginal distribution of the covariates is preserved after weighting | 
| ess | the expected sample size after weighting. Kish's approximation is used | 
References
Szekely, G. J., Rizzo, M. L., & Bakirov, N. K. (2007). Measuring and testing dependence by correlation of distances. Annals of Statistics 35(6) 2769-2794 doi: 10.1214/009053607000000505
Huling, J. D., Greifer, N., & Chen, G. (2021). Independence weights for causal inference with continuous exposures. arXiv preprint arXiv:2107.07086. https://arxiv.org/abs/2107.07086
Examples
simdat <- simulate_confounded_data(seed = 999, nobs = 100)
str(simdat$data)
A <- simdat$data$A
X <- as.matrix(simdat$data[c("Z1", "Z2", "Z3", "Z4", "Z5")])
wts <- runif(length(A))
weighted_energy_stats(A, X, wts)
Calculation of weighted nonparametric regression estimate of the dose response function
Description
Calculates weighted nonparametric regression estimate of the causal average dose response function
Usage
weighted_kernel_est(A, y, weights, Aseq)
Arguments
| A | vector indicating the value of the treatment or exposure variable. Should be a numeric vector. | 
| y | vector of responses | 
| weights | a vector of sample weights of length equal to the length of  | 
| Aseq | a vector of new points for which to obtain estimates of E(Y(a)) | 
Value
A list with the following elements
| fit | A fitted model object from the  | 
| estimated | a vector of estimates of a causal ADRF at the values of the treatment specified by  |