Taking Treatment Effects Analysis and Visualisation to Higher Levels with R

Introduction

This blog is a new function, treatment_model that have been added to the Dyn4cast package. The function provides means for enhanced estimation of propensity score and treatments effects from randomized controlled designed experiments.

Observational study involves the evaluation of outcomes of participants not randomly assigned treatments or exposures. To be able to assess the effects of the outcome, the participants are matched using propensity scores (PSM). This then enables the determination of the effects of the treatments on those treated against those who were not treated. Most of the earlier functions available for this analysis only enables the determination of the average treatments effects on the treated (ATT) while the other treatment effects are optional. This is where this functions is unique because five different average treatment effects are estimated simultaneously, in spite of the one line code arguments. The five treatment effects are:

Average treatment effect for the entire (ATE) population

Average treatment effect for the treated (ATT) population

Average treatment effect for the controlled (ATC) population

Average treatment effect for the evenly matched (ATM) population

Average treatment effect for the overlap (ATO) population.

There excellent materials dealing with each of the treatment effects, please see

The basic usage of the codes are:

treatment_model(Treatment, x_data)

Arguments

Treatment Vector of binary data (0, 1) LHS for the treatment effects estimation

x_data Data frame of explanatory variables for the RHS of the estimation

Let us go!

Load library

library(Dyn4cast)

Estimation of treatment effects model

Treatment <- treatments$treatment
data <- treatments[, c(2:3)]
treat <- treatment_model(Treatment, data)

Estimated treatment effects model

summary(treat)
                Length Class      Mode   
P_score         500    -none-     numeric
Effect            5    data.frame list   
Fitted_estimate 500    -none-     numeric
Residuals       500    -none-     numeric
Model            30    glm        list   
Experiment plot  11    gg         list   
ATE plot         11    gg         list   
ATT plot         11    gg         list   
ATC plot         11    gg         list   
ATM plot         11    gg         list   
ATO plot         11    gg         list   
weights           5    data.frame list   

Estimated various treatment effects

treat$Effect
       ATE      ATT        ATC      ATM      ATO
1 2.465581 4.481578 -0.2272903 1.968055 2.056329

Estimated propensity scores from the model

head(treat$P_score)
         1          2          3          4          5          6 
0.98347730 0.97153060 0.63093981 0.69944426 0.07971976 0.90935715 

##Ffitted values from the model

head(treat$Fitted_estimate)
         1          2          3          4          5          6 
0.98347730 0.97153060 0.63093981 0.69944426 0.07971976 0.90935715 

Residuals of the estimated model

tail(treat$Residuals)
      495       496       497       498       499       500 
-2.250645 -1.757826  1.402062  1.010765 -1.151789  1.898509 

Plots of the propensity scores from the model

Quite a number of plots are in the works e.g. 

Treatment effects (ATE)

treat$`ATE plot`

Treatment effects on the treated (ATT)

treat$`ATT plot`

Treatment effects on the evenly matched (ATM)

treat$`ATM plot`

Welcome to the world of easy Data Science and easy Machine Learning!

Job Nmadu
Professor of Agricultural Economics and Dean, School of Agriculture and Agricultural Technology

Research interests are economic efficiencies of small scale farming and welfare effects of agricultural interventions.

Related

Previous