--- title: "opl_tb_c" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{opl_tb_c} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ```{r setup} library(OPL) ``` ## Introduction The `opl_tb_c` function implements ex-ante treatment assignment using as policy class a threshold-based (or quadrant) approach at specific threshold values c1 and c2 for respectively the selection variables var1 and var2. ## Usage opl_tb_c(make_cate_result, z, w, c1 = NA, c2 = NA) ### Arguments - `make_cate_result`: A data frame containing input data, including a column named `my_cate`, representing conditional average treatment effects (CATE). - `z`: A character vector of length 2 specifying the column names of the two selection variables. - `w`: A character string indicating the column name for treatment assignment (binary variable). - `c1`: User-defined or function-optimized threshold for the first selection variable (between 0 and 1). - `c2`: User-defined or function-optimized threshold for the second selection variable (between 0 and 1). ### Output The function returns the input data frame augmented with: - `z[1]_std`: Standardized first selection variable. - `z[2]_std`: Standardized second selection variable. - `units_to_be_treated`: Binary indicator for treatment assignment. Additionally, the function: - Prints a summary of key results, including threshold values, constrained and unconstrained welfare, and treatment proportions. - Displays a scatter plot visualizing the policy assignment. ## Details The function follows these steps: 1. Standardizes the selection variables to a [0,1] range. 2. Identifies the optimal thresholds using grid search to maximize constrained welfare. 3. Computes and reports key statistics, including average welfare and percentage of treated units. ## Example ```r # Load example data set.seed(123) data_example <- data.frame( my_cate = runif(100, -1, 1), var1 = runif(100, 0, 1), var2 = runif(100, 0, 1), treatment = sample(0:1, 100, replace = TRUE) ) # Run threshold-based policy learning result <- opl_tb_c( make_cate_result = data_example, z = c("var1", "var2"), w = "treatment" ) ``` ## Interpretation of Results - The printed summary provides insights into the optimal threshold values and the proportion of units assigned to treatment. - The scatter plot visualizes the treatment assignment based on the optimized thresholds. ## References - Athey, S., & Wager, S. (2021). Policy Learning with Observational Data. *Econometrica*, 89(1), 133–161. - Cerulli, G. (2021). Improving econometric prediction by machine learning. *Applied Economics Letters*, 28(16), 1419-1425. - Cerulli, G. (2022). Optimal treatment assignment of a threshold-based policy: empirical protocol and related issues. *Applied Economics Letters*. DOI: 10.1080/13504851.2022.2032577. - Gareth, J., Witten, D., Hastie, D.T., & Tibshirani, R. (2013). *An Introduction to Statistical Learning: with Applications in R*. New York: Springer. - Kitagawa, T., & Tetenov, A. (2018). Who Should Be Treated? Empirical Welfare Maximization Methods for Treatment Choice. *Econometrica*, 86(2), 591–616. --- This vignette provides an overview of the `opl_tb_c` function and demonstrates its usage for threshold-based policy learning. For further details, consult the package documentation.