---
title: "make_cate"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{make_cate}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
```
```{r setup}
library(OPL)
```
#make_cate#
Predicting conditional average treatment effect (CATE)
on a new policy based on the training over an old policy
##Description##
make_cate is a function generating conditional average treatment effect
(CATE) for both a training dataset and a testing (or new) dataset
related to a binary (treated vs. untreated) policy program. It provides
the main input for running opl_tb (optimal policy learning of a
threshold-based policy), opl_tb_c (optimal policy learning of a
threshold-based policy at specific thresholds), opl_lc (optimal policy
learning of a linear-combination policy), opl_lc_c (optimal policy
learning of a linear-combination policy at specific parameters), opl_dt
(optimal policy learning of a decision-tree policy), opl_dt_c (optimal
policy learning of a decision-tree policy at specific thresholds and
selection variables). Based on Kitagawa and Tetenov (2018), the main
econometrics supported by these commands can be found in Cerulli (2022).
##Function Syntax##
make_cate(model, train_data, test_data, w, x, y, family = gaussian(), ntree = 100, mtry = 2)
##Arguments:##
- model: A string indicating the model to use. Valid options are "glm" and "rf".
- train_data: The training dataset used for estimating the treatment effect on the old policy.
- test_data: The test dataset used for estimating the treatment effect on the new policy.
- w: The treatment variable.
- x: Independent variables for the model.
- y: The outcome variable.
- family: The family type for the model (e.g., "binomial", "gaussian").
- ntree: Number of trees for the Random Forest model (default is 100).
##Return Value##
An object containing the estimated causal treatment effect results, including:
- Average Treatment Effect (ATE)
- Average Treatment Effect on Treated (ATET)
- Average Treatment Effect on Non-Treated (ATENT)
##Example Usage##
```{r}
set.seed(42)
train_data <- data.frame(
y = rnorm(100), # Outcome
x1 = rnorm(100), # Covariate
x2 = rnorm(100),
w = sample(0:1, 100, replace = TRUE) # Trattamento
)
test_data <- data.frame(
y = rnorm(100), # Outcome
x1 = rnorm(100), # Covariate
x2 = rnorm(100),
w = sample(0:1, 100, replace = TRUE) # Trattamento
)
x <- c("x1", "x2") # le covariate
y <- "y" # la variabile dipendente
w <- "w" # la variabile di trattamento
family <- "gaussian" # Famiglia per glm
ntree <- 100 # Numero di alberi per random forest
mtry <- 2 # Numero di variabili da considerare in ogni split
result <- make_cate(model = "glm", train_data = train_data, test_data = test_data, w = w, x = x, y = y)
```
##Detailed Steps:##
- Train and Test Data: The function separates the data into treated and untreated groups for both the training and test datasets.
- Model Estimation: The function estimates the treatment effect using either a GLM or Random Forest model. It then calculates the predicted outcome for both the treated and untreated groups.
- Causal Effect Calculation: The CATE is calculated as the difference in predicted outcomes between the treated and untreated groups.
- Output: The function returns the estimated treatment effects (ATE, ATET, ATENT) and the treatment effects for both the training and test datasets.
##Results##
The following results are output for both the old (training) and new (test) policy:
--------------------------------------------------
- Treatment-effects estimation: OLD POLICY -
--------------------------------------------------
Number of obs = [n]
Estimator = regression adjustment
Outcome model = linear
DIM = [DIM_value]
ATE = [ATE_value]
ATET = [ATET_value]
ATENT = [ATENT_value]
--------------------------------------------------
- Treatment-effects estimation: NEW POLICY -
--------------------------------------------------
Number of obs = [n]
Estimator = regression adjustment
Outcome model = linear
DIM = [DIM_value]
ATE = [ATE_value]
ATET = [ATET_value]
ATENT = [ATENT_value]
##Conclusion##
The make_cate function is a powerful tool for estimating the causal treatment effect of a policy using either GLM or Random Forest models. It provides insights into the treatment effects both for the old and new policies, making it a useful method for causal inference in policy analysis.